Skip to main content

OpenShift image-customization-controller EUVDEUVD-2026-116131

| CVE-2026-82976 HIGH
Exposure of Information Through Directory Listing (CWE-548)
2026-11-03 redhat GHSA-37j3-6wgh-2q48
7.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain adjacent provisioning-network access
  2. Delivery
    GET / to enumerate image UUIDs
  3. Exploit
    Download target host image
  4. Execution
    Extract embedded Ignition config
  5. Impact
    Recover cluster pull secret and SSH key

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V13 - Configuration Directory listing prevention
Exploitation Conditions

Requires network adjacency to the OpenShift bare-metal provisioning network and an active provisioning cycle so that per-host images are registered and served by the image-customization-controller's HTTP file server on port 8084 (default bind :8084, no authentication, no TLS). The only prior access control - unguessable random UUID filenames - is defeated because the custom imageFileSystem Readdir exposes a browsable directory listing of all image names at the root path. Limiting factors: exploitation is confined to callers that can reach the provisioning network (not internet-facing by default) and depends on images being present during provisioning; it does not require authentication, user interaction, or any non-default setting of the controller itself.

Impact

Signals are consistent and point to a genuine but bounded priority. The CVSS vector (AV:A/AC:L/PR:N/UI:N) confirms an adjacent-network, low-complexity, unauthenticated path, matching the described HTTP file server on port 8084 that enforces no authentication; confidentiality impact is high because every served image embeds the base64 cluster pull secret and optional IRONIC_RAMDISK_SSH_KEY. The vuln.today decision label is 'this_week' (not act_now/emergency), aligning with a serious issue that is not under active exploitation. There is no CISA KEV listing and no public exploit identified at time of analysis, and no EPSS score was provided, so there is no evidence of widespread automated exploitation; realistic risk is driven by network proximity rather than mass scanning. The main tension between signals is impact scope: the input CVSS assigns I:L, but the mechanism described is pure directory-listing information disclosure (CWE-548), so any integrity effect is better attributed to downstream abuse of the recovered pull secret and SSH key than to the flaw itself. Net: a real credential-disclosure flaw for anyone running OpenShift bare-metal provisioning, but exploitation is gated behind access to the provisioning network and an active provisioning cycle.

Exploit ScenarioDerived

An attacker with a foothold on the bare-metal provisioning network (AV:A) requests the root path of the unauthenticated file server on port 8084, which returns a browsable HTML listing of every registered per-host image UUID. The attacker downloads any listed image, extracts the embedded Ignition config, and recovers the base64-encoded cluster pull secret and SSH key. No public exploit identified at time of analysis, but the described GET-and-extract flow needs no special tooling.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 03, 2026

In Red Hat OpenShift Container Platform 4 and 5 bare metal provisioning, the image-customization-controller runs an unauthenticated, non-TLS HTTP file server on port 8084 (default bind ":8084") whose root path returns a browsable directory listing of every registered per-host image. Any client that can reach the provisioning network can enumerate those image UUIDs, download an image, and pull the embedded Ignition config, recovering the base64-encoded cluster pull secret, the optional IRONIC_RAMDISK_SSH_KEY, proxy settings and per-host NetworkManager keyfiles. The vector is adjacent-network, no privileges and no user interaction (CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N), so confidentiality impact is the primary concern; exploitation requires an active provisioning cycle and network adjacency, and no public exploit code was identified at time of analysis. The unguessable-UUID filename was the only access control and the directory listing defeats it entirely.

RemediationAI

No vendor-released patch version is given in the available data; track Red Hat's advisory at https://access.redhat.com/security/cve/CVE-2026-82976, Bugzilla 2526334 and https://redhat.atlassian.net/browse/OCPBUGS-105396 for the fixed OpenShift 4/5 z-stream that restricts the image file server, and upgrade as soon as it is published. Until then, the practical control is to shrink reachability of port 8084: bind the file server to a single provisioning-facing interface (the listen address is the imagesBindAddr setting rather than an unavoidable wildcard) and add host or network firewall rules that permit TCP 8084 only from the hosts that legitimately fetch images during provisioning - the trade-off is that too narrow a rule breaks bare metal image delivery and can stall provisioning, and any change must be rechecked on upgrade since the default is to bind all interfaces. Because the images embed the cluster pull secret, IRONIC_RAMDISK_SSH_KEY, proxy credentials and NetworkManager keyfiles, treat any period of broad 8084 exposure as a credential compromise: rotate the cluster pull secret and the ramdisk SSH key and review proxy and per-host network credentials. Detection should focus on unexpected GET / and subsequent image downloads from non-provisioning hosts in controller logs, which record the requested path on Open.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The controller is a Go service in OpenShift's bare metal IPI stack. It implements a custom http.FileSystem (pkg/imagehandler/imagefilesystem.go) backed by an in-memory map of generated images. Its Readdir method returns every registered image as a fs.FileInfo regardless of the requested count, and Open("/") returns the filesystem itself, so http.FileServer rendered at "/" (cmd/controller/main.go) produces a browsable HTML index of all image names. The listener is created with http.Server{Addr: imagesBindAddr} and server.ListenAndServe() - no TLS, no authenticating handler, no path filtering - bound to all interfaces by default. Because the images themselves are initramfs/ISO artifacts whose Ignition configs are generated by pkg/ignition, each one carries /etc/authfile.json built from the ironic agent pull secret (service_config.go authFile(), "data:;base64," + the pull secret), plus optional SSH key, proxy configuration and per-host NetworkManager keyfiles. The root-cause class is CWE-548, Exposure of Information Through Directory Listing: the design relied on UUID unguessability (security through obscurity) rather than on authorization, and the enumeration endpoint removed that assumption entirely. Integrity and availability are not confirmed as affected by the sources; the assessed vector scores C:H/I:N/A:N.

Know when Red Hat Openshift Container Platform 4 gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (redhat) PRIMARY HIGH
NVD 7.1 HIGH
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 6.5 MEDIUM

Unauthenticated adjacent-network directory listing (AV:A/AC:L/PR:N) discloses the pull secret and SSH key, so C:H; the flaw itself writes nothing and causes no outage, so I:N/A:N.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (redhat).

CVSS VectorNVD

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

DescriptionNVD

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.

Executive ViewAI

Why It Matters

CVE-2026-82976 exposes sensitive cluster secrets in Red Hat OpenShift Container Platform 4 and 5 bare metal provisioning environments. An unauthenticated attacker with adjacent network access can retrieve the cluster pull secret, SSH keys, and per-host network configurations, potentially compromising the entire cluster's integrity and confidentiality. Leadership should prioritize immediate mitigation because a breach could lead to unauthorized cluster access, data loss, and operational disruption.

Business Impact: High
Compensating Controls

Restrict network access to port 8084 to authorized hosts only, implement TLS/mutual authentication, and rotate all exposed secrets immediately.

Threat Intelligence Overview

Prevalence
Medium
OpenShift is widely deployed, but only bare-metal provisioning installs run this controller
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Affected Products (CPE)NVD

cpe:2.3:a:red_hat:red_hat_openshift_container_platform_4:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_openshift_container_platform_4:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_openshift_container_platform_5:*:*:*:*:*:*:*:*
CVE-2026-4480 CRITICAL POC
9.0 May 26

Remote code execution in Samba's printing subsystem allows remote attackers to inject arbitrary shell commands via craft

CVE-2026-92574 HIGH POC
8.8 Sep 21

Elevated-privilege container restoration in CRI-O 1.34 and later, including downstream Red Hat OpenShift Container Platf

CVE-2026-114406 MEDIUM POC
6.8 Oct 21

The system CA trust store shipped in Red Hat's ca-certificates RPM packages includes eMudhra root authorities that signe

CVE-2026-66792 CRITICAL
9.9 Aug 17

Privilege escalation in Red Hat Advanced Cluster Management's multicloud-operators-subscription controller lets a low-pr

CVE-2026-5121 HIGH
7.5 Mar 30

Remote code execution in libarchive on 32-bit systems allows unauthenticated attackers to execute arbitrary code via spe

CVE-2026-6732 HIGH
7.5 Apr 23

Denial of service in libxml2 allows a remote attacker to crash any application that uses the library to XSD-validate an

CVE-2026-107935 CRITICAL
9.3 Oct 09

Unauthenticated path traversal in gvproxy, the network forwarder shipped in the gvisor-tap-vsock package (used by Podman

CVE-2026-33845 CRITICAL
9.1 Apr 30

Out-of-bounds read in the GnuTLS DTLS handshake reassembly logic lets remote unauthenticated attackers trigger an intege

CVE-2026-16526 HIGH
8.8 Jul 30

Local privilege escalation in Performance Co-Pilot (PCP) on Red Hat Enterprise Linux 6 through 10 and OpenShift Containe

CVE-2026-14474 HIGH
8.8 Jul 07

Local-to-domain-wide root privilege escalation in SSSD's LDAP sudo provider allows an authenticated LDAP directory user

CVE-2026-89091 HIGH
8.8 Oct 08

Symlink-following file overwrite on the Ansible control node is possible in ansible-core when a user runs `ansible-galax

CVE-2026-93834 HIGH
8.8 Sep 25

A use-after-free race condition in QEMU's 9pfs (virtfs) passthrough subsystem allows a malicious guest user to escape th

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy