Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessMalicious host controls Kubernetes node
-
DeliveryCraft LUKS2 volume with cipher_null-ecb keyslot
-
ExploitPresent device to Contrast pod VM
-
ExecutionInitializer cryptsetup open succeeds, assumes encrypted
-
PersistGuest writes secrets in plaintext
-
ImpactHost reads confidential data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires the confidential-computing inverse trust model: the attacker must be a malicious or compromised HOST/infrastructure operator able to supply a block device to a Contrast pod VM through Kubernetes. The target pod must have the OPT-IN secure persistent volume (encrypted storage) feature enabled - this is not a default configuration. The Contrast version must be <=1.12.0 bundling cryptsetup <2.8.1, which accepts a LUKS2 header specifying the cipher_null-ecb null keyslot algorithm without error. Limiting factors: no external/remote unauthenticated Internet vector (AV:A, PR:L - host-level provisioning privilege needed), impact is confidentiality-only (data written after the malicious volume is opened), and the fix in 1.12.1 (null ciphers disabled for non-empty passphrases) plus 1.13.0 (detached-header validation and storage integrity protection) closes the primary path. |
| Impact | This is a genuine but conditional confidentiality flaw in a confidential-computing product, best understood through its inverted trust model: the adversary is the untrusted host/infrastructure operator, not a conventional remote attacker. The vendor CVSS 4.0 vector (AV:A/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N, 6.9 Medium) is well-reasoned - confidentiality-only high impact, no integrity or availability effect, which the advisory explicitly justifies because Contrast persistent volumes were never integrity-protected. My independent CVSS 3.1 estimate (~5.7, AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) is consistent. There is NO EPSS score, NO CISA KEV listing, and NO public POC referenced, so all signals point to no observed exploitation. SSVC-style read: exploitation none-observed, automatable no (requires a privileged malicious host in the specific confidential-storage path), technical impact partial (confidentiality only). The real limiter is that exploitation defeats a confidential-computing guarantee rather than a normal network perimeter - it only matters to organizations that (a) run Contrast, (b) enable the secure persistent volume feature, and (c) genuinely distrust their host. For that audience it is a meaningful defeat of the core security promise; for everyone else the practical risk is low. This is a real-priority-for-affected-users issue, not a high-CVSS-low-risk inflation. |
| Exploit ScenarioDerived | A malicious or compromised Kubernetes host provisions a crafted LUKS2 volume using the null keyslot algorithm (cipher_null-ecb) and presents it to a Contrast pod VM that uses the secure persistent volume feature. Because cryptsetup <2.8.1 opens this unauthenticated header without error, the Contrast Initializer wrongly concludes the device is protected, and the guest writes confidential data in plaintext (or under a volume key the host already knows), which the host then reads. No public exploit code is 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
Malicious Kubernetes hosts can read confidential data written to Contrast secure persistent volumes by supplying a crafted LUKS2 block device that the pod VM wrongly accepts as encrypted. The flaw affects Contrast (Go module github.com/edgelesssys/contrast) through 1.12.0 when the opt-in secure persistent volume feature is enabled and the guest bundles cryptsetup older than 2.8.1: LUKS2 metadata is unauthenticated and a header declaring the cipher_null-ecb null keyslot algorithm is accepted without error, so the Initializer assumes the device is protected when 'cryptsetup open' succeeds and writes secrets to a volume that is plaintext or keyed with an attacker-known volume key. Exploitation requires host-level provisioning privilege (CVSS 4.0 AV:A/AC:L/PR:L/UI:N, confidentiality-only; independent assessment CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N), meaning the adversary is a malicious or compromised infrastructure operator rather than a conventional remote attacker; there is no public exploit identified at time of analysis and no confirmed active exploitation (CISA KEV), and the issue is closed by Contrast 1.12.1, which ships cryptsetup 2.8.1, and further hardened by 1.13.0.
RemediationAI
Vendor-released patch: upgrade Contrast to 1.12.1, which ships cryptsetup 2.8.1 and disables null ciphers in keyslots when the user passphrase is non-empty; upgrading to 1.13.0 is strongly preferred because it encrypts LUKS disks in detached-header mode with the header kept in a tmpfs file inside guest RAM and adds integrity protection for secure persistent storage, closing the residual header-parsing attack surface (automatic reencryption triggering, cipher downgrade). The relevant upstream fix references are https://github.com/edgelesssys/contrast/pull/1731 and https://github.com/edgelesssys/contrast/commit/2252a231d570c2dce10a33660452b0bfc3c43958, with the advisory at https://github.com/edgelesssys/contrast/security/advisories/GHSA-f5p4-p5q5-jv3h. If an upgrade is not immediately possible, the most effective compensating control is to stop using the secure persistent volume feature entirely (disable the encrypted storage configuration and mount only ephemeral pod storage), with the clear trade-off that workloads lose persistent encrypted storage and must accept data loss or re-architecture; additionally, ensure any guest image is rebuilt against cryptsetup 2.8.1 or later so the null-cipher acceptance path is removed, though this alone does not fully eliminate LUKS header-parsing risk and does not address pre-existing plaintext volumes. Because the flaw is data-at-rest confidentiality exposure, rotate or re-encrypt any secret material previously written to persistent volumes that may have been provisioned by an untrusted host, and treat host-supplied block devices as attacker-controlled until 1.13.0's detached-header validation is in place. Note that no patch-free control fully restores the confidentiality guarantee for already-opened malicious volumes, since the guest cannot retroactively authenticate metadata it has already trusted.
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 a Kubernetes runtime for confidential containers that relies on an inverted trust model: the host and infrastructure operator are untrusted, and the pod VM is the trusted computing base. Its secure persistent volume feature uses cryptsetup to unlock a LUKS2 device with the cluster secret seed as the passphrase, and the Contrast Initializer treats a successful 'cryptsetup open' as proof that a device supplied by Kubernetes on pod restart is the previously encrypted volume. That assumption is unsound because LUKS2 on-disk metadata is not authenticated and cryptsetup versions before 2.8.1 do not reject a keyslot 'encryption' field set to cipher_null-ecb, a null cipher algorithm. A host that crafts such a header can produce a device that opens without error using any passphrase or token, so all writes are recorded in plaintext or under a volume key the attacker knows. The root cause is mapped to CWE-347 (Improper Verification of Cryptographic Signature): the guest never cryptographically validates the volume metadata or verifies that the keyslot actually performs encryption before trusting it. Cryptsetup 2.8.1 mitigates the specific null-cipher path by disabling null ciphers in keyslots when the passphrase is non-empty, but LUKS header parsing and interpretation remains a broad attack surface (for example forced reencryption or downgrade to weak ciphers), which is why Contrast 1.13.0 moves to detached-header mode with the header held in a tmpfs file inside guest RAM and adds integrity protection for secure persistent storage. The affected CPE is cpe:2.3:a:edgelesssys:contrast:*:*:*:*:*:*:*:*, with the upstream Go package marked vulnerable through 1.12.0 and fixed in 1.12.1.
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:H/VI:N/VA:N/SC:N/SI:N/SA:N
Attacker is a privileged adjacent host provisioning the volume (AV:A, PR:L); guest confidential data is disclosed (C:H) with no integrity or availability impact per the advisory.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Contrast is a Kubernetes runtime for confidential containers. In versions before 1.12.1, the secure persistent volume feature is vulnerable to a malicious host supplying a crafted LUKS2 volume to a pod VM. LUKS2 volume metadata is not authenticated and, with cryptsetup versions prior to 2.8.1, a header specifying the null keyslot encryption algorithm (cipher_null-ecb) is accepted without error. Because the Contrast Initializer assumes a device is protected if cryptsetup open succeeds with the secret seed, the guest will open the attacker-supplied volume and write secret data in plaintext, or under a volume key known to the attacker, allowing the host to read confidential data that should have been encrypted. Contrast v1.12.1 ships cryptsetup 2.8.1, which disables null ciphers in keyslots when the passphrase is non-empty; v1.13.0 adds detached-header validation in guest memory and integrity protection for secure persistent storage. Contrast persistent volumes were not integrity protected, so integrity impact is not considered.
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
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-211010
GHSA-3g67-j5vf-vm4v
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB