CVE-2026-82976
Image-customization-controller: unauthenticated plaintext image server with directory listing exposes ignition images containing cluster pull secret
No exploitation reported by the sources we read.
- Published2026-11-03
- WeaknessCWE-548
Am I affected?
Debian, Ubuntu or Red Hat sometimes backport a fix without changing the upstream version number: such a version reads « to verify », never « affected ».With a domain, we read the version its public headers and pages expose. A distribution build can carry the fix under an older number.
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.
Timeline
dates in UTC- 2026-11-0318:36CVE publishedCNA
Observed activity
isMalicious corpus · updated 2026-11-03 15:37 UTCBlock these indicators
- Firewall list (EDL, text): https://api.ismalicious.com/edl/cve/CVE-2026-82976?format=txt
- CSV export: https://api.ismalicious.com/edl/cve/CVE-2026-82976?format=csv
- TAXII collection of exploited CVEs
- The EDL and CSV take an API key on the Pro plan.
Versions per branch
Products declared by the CNA
As redhat, the CNA that assigned this CVE, declared them in the CVE record; versions as written. NVD lists no product for this CVE yet: this is the only product data so far.
- Red Hat OpenShift Container Platform 4other versions: affected
package openshift4/ose-image-customization-controller-rhel8https://access.redhat.com/downloads/content/package-browser/
- Red Hat OpenShift Container Platform 4other versions: affected
package openshift4/ose-image-customization-controller-rhel9https://access.redhat.com/downloads/content/package-browser/
- Red Hat OpenShift Container Platform 5other versions: affected
package openshift5/ose-image-customization-controller-rhel9https://access.redhat.com/downloads/content/package-browser/
Source: the CNA record (CVE Program), © The MITRE Corporation,CVE Terms of UseCVE recordupdated 2026-11-03
Neither OSV.dev nor the vendor advisories we read list affected versions for CVE-2026-82976 yet.
Fix
No fix published by the sources we read yet. NVD record
Detection
- Nuclei template
- none so far ProjectDiscovery
- Exploit-DB
- no entry Exploit-DB
- Proof-of-concept repositories
- none listed PoC-in-GitHub
- Metasploit modules
- none listed Metasploit Framework
Sources
Technical details
- CVSS v3 Vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
- Published
- 2026-11-03
- Last Modified
- 2026-11-03
- NVD status
- Awaiting Analysis
Frequently asked questions
What is CVE-2026-82976?
Is CVE-2026-82976 actively exploited?
What is the CVSS score for CVE-2026-82976?
Hear about the next vulnerability in your software
Surveillance reads the versions in your stack — a domain, a lockfile or a list — checks each CVE against the ranges its sources publish, and alerts you when one you run is exploited or enters CISA KEV. A version it cannot read stays « version not verified ».
No credit card required · No monthly cap on website lookups · 250 API requests/month
Go further
- Following what attackers exploit right now? The CISA KEV additions of the month, with their patch deadlines.
- Running this software? Vulnerability monitoring alerts you to new vulnerabilities in your products.
Related vulnerabilities
Same product first, then the same vendor advisory and the same publication week.
- CVE-2026-118527KEVsame week
- CVE-2026-120276same weekWAVLINK WN536AX6-A Web Management ioos sub_416760 os command injection
- CVE-2026-18199same weekRemote Code Execution Vulnerability
- CVE-2026-120277same weekWAVLINK WN536AX6-A WireGuard CLI Group ioos sub_41a1d8 os command injection
- CVE-2026-77691same weekCommand injection vulnerability
- CVE-2026-8923same weekRemote Code Execution
- CVE-2026-94349same weekOS Command Injection in Dell OpenManage Enterprise Enables Remote Command Execution
- CVE-2026-77876same weekControl Web Panel (CWP) < 1.16 OS Command Injection via protected_directory