Read the docs
TI-2026-84469 Aliases CVE-2026-82976GHSA-37j3-6wgh-2q48

Unauthenticated directory listing exposes OpenShift provisioning images

Priority LOW 31CWE-548Published · Updated

Key facts

Attack vector
Adjacent network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
—
Confidentiality · integrity · availability
High · Low · None
Fix status
No fix listed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat.

Summary

The image-customization-controller in Red Hat OpenShift Container Platform 4 and 5 serves an HTTP file server on port 8084 with no authentication. Its root path returns a browsable directory listing that reveals the random UUID filenames of all registered images, which is an exposure of information through directory listing (CWE-548). An adjacent network attacker on the provisioning network can download any image and extract the embedded Ignition config to recover the cluster pull secret and SSH key.

Written with Claude Haiku 5.5 from the sources below · 2026-11-03

Description from the CNA

A flaw was found in the image-customization-controller used in OpenShift's bare metal provisioning stack. The controller registers an HTTP file server on port 8084 with no authentication. The custom imageFileSystem implementation exposes a browsable HTML directory listing of all registered images at the root path. The only access control on per-host images is the random UUID filename; the directory listing discloses those UUIDs to any caller on the provisioning network. Each served image embeds an Ignition config containing the base64-encoded cluster pull secret, optional IRONIC_RAMDISK_SSH_KEY, proxy settings, and per-host NetworkManager keyfiles. An adjacent network attacker can enumerate all image UUIDs via directory listing, download any image, extract the embedded Ignition config, and recover the cluster pull secret and SSH key. ### Evidence **pkg/imagehandler/imagefilesystem.go — root directory is browsable and enumerates all UUID image names** ```go func (f *imageFileSystem) Readdir(n int) ([]fs.FileInfo, error) { f.mu.Lock() defer f.mu.Unlock() result := []fs.FileInfo{} for _, im := range f.images { result = append(result, im) } return result, nil } func (f *imageFileSystem) Open(name string) (http.File, error) { f.log.Info("Open", "path", name) if name == "/" { return f, nil } ... ``` **cmd/controller/main.go — file server bound on all interfaces without auth or TLS** ```go http.Handle("/", http.FileServer(imageServer.FileSystem())) go func() { server := &http.Server{ Addr: imagesBindAddr, // default ":8084" ReadHeaderTimeout: 5 * time.Second, } err := server.ListenAndServe() ``` **pkg/ignition/service_config.go:94-100 — pull secret is embedded in every served image** ```go func (b *ignitionBuilder) authFile() ignition_config_types_32.File { source := "data:;base64," + strings.TrimSpace(b.ironicAgentPullSecret) return ignition_config_types_32.File{ Node: ignition_config_types_32.Node{Path: "/etc/authfile.json"}, ... ``` ### Attack Pattern Adjacent provisioning-network client → GET / lists UUID image names → download ISO/initramfs → extract embedded Ignition → recover cluster pull secret and SSH key.

Why it matters now

EPSS 0.00234 14th percentileScored 2026-11-07
Fix No fix listed No fixed version in the sources yet

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
Red HatRed Hat OpenShift Container Platform 4——No fix listedCNA
Red HatRed Hat OpenShift Container Platform 4——No fix listedCNA
Red HatRed Hat OpenShift Container Platform 5——No fix listedCNA
  • Red Hat OpenShift Container Platform 4 VendorRed Hat Affected — Fixed in — No fix listed CNA
  • Red Hat OpenShift Container Platform 4 VendorRed Hat Affected — Fixed in — No fix listed CNA
  • Red Hat OpenShift Container Platform 5 VendorRed Hat Affected — Fixed in — No fix listed CNA

CPE names CNA · 2

CPEVersionsRoleVendor
cpe:/a:redhat:openshift:44—Red Hat
cpe:/a:redhat:openshift:55—Red Hat
  • cpe:/a:redhat:openshift:4 Versions 4 — ·Red Hat
  • cpe:/a:redhat:openshift:5 Versions 5 — ·Red Hat

Remediation

The sources list no fixed version for Red Hat OpenShift Container Platform 4. The sources list no fixed version for Red Hat OpenShift Container Platform 5. Red Hat's plan for both products is none available.

Written with Claude Haiku 5.5 from the sources below · 2026-11-03

Vendor assessments

Red Hat

Red Hat rating: Important. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat OpenShift Container Platform 4AffectedNo fix yet
Red Hat OpenShift Container Platform 5AffectedNo fix yet

Timeline

  1. 2026-11-03 Threatist record created from CVE-2026-82976
  2. 2026-11-03 Alias added: GHSA-37j3-6wgh-2q48
  3. 2026-11-05 Priority changed: MEDIUM → LOW

References

  • TI-2019-15875 Protection mechanism failure in Jenkins Pipeline: Groovy Plugin KEVCVSS 3.1CRITICAL 9.9
  • TI-2019-15874 Protection mechanism failure in Jenkins Script Security Plugin KEVCVSS 3.1CRITICAL 9.9
  • TI-2019-08259 Underflow in PHP-FPM can lead to RCE KEVCVSS 3.1CRITICAL 9.8
  • TI-2019-05363 Code injection in Elastic Kibana KEVCVSS 3.1CRITICAL 10.0
  • TI-2019-03949 Out-of-bounds write in ESXi and Horizon DaaS KEVCVSS 3.1CRITICAL 9.8
  • TI-2018-16080 A code execution vulnerability exists in the Stapler web framework used by Jenkins 2.153… KEVCVSS 3.1CRITICAL 9.8
See all 7413 →

Sources