CVE-2026-82976
Awaiting Analysis Awaiting Analysis - Queue

Information Disclosure in OpenShift Bare Metal Provisioning Image Server

Vulnerability report for CVE-2026-82976, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-11-03

Last updated on: 2026-11-03

Assigner: redhat-SADP

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-11-03
Last Modified
2026-11-03
Generated
2026-11-03
AI Q&A
2026-11-03
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-548 The product inappropriately exposes a directory listing with an index of all the resources located inside of the directory.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-82976 is a flaw in OpenShift's image-customization-controller used for bare metal provisioning. The controller runs an unauthenticated HTTP file server on port 8084 that exposes a browsable directory listing of all registered images. This allows any adjacent network attacker to enumerate image UUIDs, download images, and extract embedded Ignition configurations containing sensitive data like cluster pull secrets, SSH keys, proxy settings, and NetworkManager keyfiles.

Detection Guidance

Check if port 8084 is open and accessible on any system running the image-customization-controller. Use commands like 'netstat -tulnp | grep 8084' or 'ss -tulnp | grep 8084' to verify if the service is listening. Inspect network traffic to port 8084 for unauthenticated HTTP requests to the root path ('/').

Look for directory listings in HTTP responses from port 8084. Use curl to test: 'curl -v http://<target-ip>:8084/' to see if it returns an HTML directory listing of image UUIDs.

Impact Analysis

An attacker on the provisioning network can access the exposed directory listing to enumerate all image UUIDs. They can then download any image, extract its embedded Ignition config, and recover sensitive data such as the cluster pull secret and SSH keys. This could lead to unauthorized access to the cluster, data breaches, or further attacks within the provisioning network.

Compliance Impact

This vulnerability could lead to unauthorized access to sensitive data, violating confidentiality requirements in GDPR and HIPAA. Exposure of cluster pull secrets and SSH keys may result in non-compliance with data protection and security standards, potentially leading to regulatory penalties and loss of trust.

Mitigation Strategies

Immediately block access to port 8084 from all networks except trusted ones using firewall rules. For Kubernetes clusters, apply network policies to restrict access to the metal3-image-customization-service endpoint.

Rotate any exposed cluster pull secrets, SSH keys, or proxy settings that may have been embedded in the Ignition configurations. Monitor for unauthorized access or data exfiltration attempts.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-82976. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart

Security Radar

News mentioning this vulnerability
Loading related security news...