Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessMalicious/compromised host controls Kata runtime path
-
DeliveryDeploy image with unmounted VOLUME on bare-metal
-
Exploitcontainerd auto-adds mount point
-
ExecutionHost pushes arbitrary file tree to Kata agent
-
ImpactIntegrity of container directory compromised
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Protection mechanism completeness
|
| Exploitation Conditions | All three conditions must hold simultaneously: (1) a bare-metal Contrast deployment - Azure AKS deployments are explicitly NOT affected; (2) a container image that declares at least one VOLUME directive (Dockerfile VOLUME / OCI config.volumes); and (3) no Kubernetes mount defined at that VOLUME path, so containerd auto-creates the mount point. The attacker is the untrusted host underlying the confidential container. Exploitation is limited to integrity impact on that mount-point directory; there is no confidentiality or availability effect. The straightforward workaround (explicitly mounting an emptyDir at every VOLUME path) further narrows exposure to misconfigured deployments only. |
| Impact | This is a low-real-world-risk issue despite touching confidential-computing security guarantees. The vendor CVSS 4.0 vector (AV:A/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N, base 5.1 MEDIUM) is internally consistent with the description: integrity-only impact (VI:L), no confidentiality or availability loss, adjacent attack vector, and low privileges. No EPSS score, no CISA KEV listing, and no public POC were provided, so all exploitation signals point to no active or imminent exploitation. There is no SSVC decision data in the input. The most important limiting factor is the tightly-scoped precondition set: exploitation only works on bare-metal Contrast deployments (Azure AKS is explicitly NOT affected), against images that declare at least one VOLUME with no corresponding Kubernetes mount at that path. Note a labeling conflict worth flagging: the input Tags mark this 'Information Disclosure', but the CVSS vector sets VC:N (no confidentiality impact) and the advisory describes only host-controlled writes - this is an integrity flaw, not disclosure. The 'attacker' here is the untrusted host, which is precisely the actor confidential computing is meant to defend against, so the vulnerability is meaningful within that threat model but narrow in real-world reach. |
| Exploit ScenarioDerived | An operator runs a Contrast confidential container on bare-metal from an image whose Dockerfile declares a VOLUME (e.g. a data directory) but forgets to mount a Kubernetes volume at that path. containerd auto-creates the mount point, and the untrusted host machine writes an arbitrary file tree beneath it inside the confidential container, tampering with a directory the application relies on for core functionality. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
Contrast versions up to and including 1.9.0 allow the untrusted host underlying a bare-metal confidential container deployment to write arbitrary file trees below a container's VOLUME mount point, compromising the integrity of a directory that is typically central to the application's core functionality. The weakness occurs because containerd auto-creates a mount point for any OCI config.volumes entry that Kubernetes does not explicitly mount, forcing the runtime to relay host-supplied content to the Kata agent; only integrity of that path is affected, with no confidentiality or availability impact. It is rated low severity (CVSS 4.0 5.1; assessed CVSS 3.1 AV:A/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N), affects bare-metal deployments only (Azure AKS is explicitly unaffected), and no public exploit code was identified at time of analysis; a vendor fix is available in 1.9.1.
RemediationAI
Upgrade to Contrast 1.9.1, which fixes the issue by disallowing the problematic configuration in contrast generate; the fix is available in the public repository and corresponds to commit 635b471ddbb512b6661e6f1d767aab818bd50bda, with details in the vendor advisory GHSA-phhq-63jg-fp7r. If immediate upgrade is not possible on bare-metal deployments, explicitly mount an emptyDir at every VOLUME path declared by the image, which prevents containerd from auto-creating a host-writable mount point - the trade-off is that the emptyDir masks any data baked into the image at that path, so applications depending on pre-populated content at those locations will break; in that case the image itself must be rebuilt with the config.volumes entries removed, per the vendor's stated workaround. Operators should also verify via contrast generate output or image inspection that no container image in use declares a VOLUME without a matching Kubernetes mount. No vendor-released patch was identified prior to 1.9.1, and no compensating configuration short of these two measures restores the integrity guarantee for such paths.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Contrast is Edgeless Systems' Kubernetes runtime for confidential containers, which relies on the Kata agent and a threat model in which the underlying host is untrusted. The Dockerfile VOLUME directive, surfaced in OCI image configuration as config.volumes, is only a hint per the OCI image spec - Kubernetes does not handle it specially - but containerd implements the spec's conversion logic and creates a mount point when Kubernetes defines none. Because the specification does not mandate what data populates such a mount, the runtime must be able to push arbitrary host-supplied content into the guest at that path, breaking the isolation guarantee for that directory. The root cause maps to CWE-693 (Protection Mechanism Failure): the confidential-computing boundary is not enforced for auto-created VOLUME mount points, so an untrusted host retains a write primitive inside the protected container. Affected code is the Go module go/github.com/edgelesssys/contrast below 1.9.1, matching CPE cpe:2.3:a:edgelesssys:contrast:*:*:*:*:*:*:*:*; vulnerability tags include Kubernetes, Contrast, and Information Disclosure. Exploitation is constrained: the CVSS 4.0 vector (AV:A/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N) and the independent 3.1 assessment both indicate adjacent-network, low-privilege access with integrity-only impact confined to the affected scope.
Know when Contrast 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
CVSS:4.0/AV:A/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Untrusted host (adjacent infrastructure, low privilege) writes into the guest via runtime; integrity-only (I:L) with no confidentiality or availability impact, aligning with the vendor 4.0 vector.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Contrast, Edgeless Systems' runtime for confidential containers on Kubernetes, is affected in versions up to and including 1.9.0. The VOLUME directive in a Dockerfile (config.volumes in the OCI image configuration) is only a hint and is not handled specially by Kubernetes, but containerd adds a mount point for it when Kubernetes sets none, requiring the runtime to be able to push arbitrary data to the Kata agent. As a result, on bare-metal Contrast deployments (AKS deployments are not affected) that run an image declaring at least one VOLUME for which no Kubernetes mount exists at that path, the untrusted host can write arbitrary file trees below that mount point inside the confidential container, compromising the integrity of a directory that is typically important to the application's core functionality. Version 1.9.1 fixes the issue by disallowing this configuration in contrast generate.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Related Vulnerabilities in Contrast Confidential-Computing Runtime Multiple Flaws
View all 11Improper verification in the Edgeless Systems Contrast Coordinator's peer-recovery path (versions 1.8.0 through 1.24.0)
Local privilege escalation in Edgeless Systems Contrast 1.8.0 through 1.24.0 allows a low-privileged local user on a nod
EUVD-2025-211008
GHSA-4585-2273-g8cw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB