CVE-2025-71422 Overview
CVE-2025-71422 affects Contrast, a Kubernetes runtime for confidential containers developed by Edgeless Systems. The vulnerability resides in the secure persistent volume feature in versions before 1.12.1. A malicious host can supply a crafted Linux Unified Key Setup version 2 (LUKS2) volume to a pod virtual machine (VM). The guest accepts the attacker-controlled volume and writes confidential data in plaintext or under a volume key known to the attacker. This defeats the confidentiality guarantees that Contrast is designed to provide for persistent storage.
Critical Impact
A malicious host can read confidential data written to Contrast persistent volumes by substituting a crafted LUKS2 header that uses the null cipher.
Affected Products
- Contrast (Edgeless Systems) versions prior to 1.12.1
- Deployments relying on cryptsetup versions prior to 2.8.1
- Contrast secure persistent volume feature in confidential container workloads
Discovery Timeline
- 2026-09-27 - CVE-2025-71422 published to the National Vulnerability Database (NVD)
- 2026-09-30 - Last updated in NVD database
Technical Details for CVE-2025-71422
Vulnerability Analysis
The flaw is categorized as improper verification of cryptographic signature [CWE-347]. Contrast's Initializer treats a successful cryptsetup open call with the secret seed as proof that a device is protected. LUKS2 metadata, however, is not authenticated. In cryptsetup versions before 2.8.1, a header specifying the null keyslot encryption algorithm cipher_null-ecb is accepted without error. The guest therefore opens an attacker-supplied volume believing it to be encrypted and writes secret data in plaintext.
Because Contrast persistent volumes were not integrity protected, the advisory does not consider integrity impact. The confidentiality impact is direct: data intended to remain opaque to the host becomes readable on disk.
Root Cause
The root cause is the absence of header authentication and the acceptance of null ciphers by older cryptsetup releases. The Initializer logic assumed that opening a LUKS2 device with a known passphrase implied the device was genuinely encrypted. No validation of the keyslot cipher or the LUKS2 header against a trusted reference was performed in guest memory.
Attack Vector
An attacker with control over the host supplies a modified LUKS2 volume to the pod VM. The crafted header selects the cipher_null-ecb algorithm for the keyslot. When the Contrast Initializer runs cryptsetup open with the secret seed, the operation succeeds and the guest mounts the device. Subsequent writes from the confidential workload land unencrypted on host-accessible storage. Exploitation requires adjacent-network access and privileges to control the host runtime.
See the GitHub Security Advisory GHSA-f5p4-p5q5-jv3h and the VulnCheck Advisory for Contrast for additional technical detail.
Detection Methods for CVE-2025-71422
Indicators of Compromise
- LUKS2 headers on pod-attached volumes referencing the cipher_null or cipher_null-ecb algorithm in any keyslot.
- Unexpected cryptsetup success events on volumes whose metadata was not generated by the trusted Initializer.
- Pod VM storage devices whose on-disk content is readable without the guest-held volume key.
Detection Strategies
- Audit cryptsetup luksDump output across confidential workloads and alert on any keyslot cipher other than the expected authenticated encryption algorithm.
- Compare LUKS2 header hashes against a known-good reference generated during volume provisioning.
- Monitor Contrast Initializer logs for devices opened with unexpected metadata or missing integrity extensions.
Monitoring Recommendations
- Collect and centralize guest-side cryptsetup version banners and fail builds that ship versions earlier than 2.8.1.
- Track Contrast release versions in use across clusters and flag any node running a release older than 1.12.1.
- Enable Kubernetes audit logging for volume attach events targeting confidential pod VMs.
How to Mitigate CVE-2025-71422
Immediate Actions Required
- Upgrade Contrast to version 1.12.1 or later, which ships cryptsetup 2.8.1 and rejects null ciphers in keyslots when the passphrase is non-empty.
- Where possible, move to Contrast 1.13.0, which adds detached-header validation in guest memory and integrity protection for secure persistent storage.
- Rotate any secrets or data previously stored on Contrast persistent volumes that may have been exposed.
Patch Information
Edgeless Systems addressed the vulnerability in Contrast v1.12.1 by bundling cryptsetup 2.8.1, which disables null ciphers in keyslots when a non-empty passphrase is supplied. Contrast v1.13.0 adds detached-header validation performed in guest memory and introduces integrity protection for secure persistent storage. Refer to the GitHub Security Advisory GHSA-f5p4-p5q5-jv3h for release details.
Workarounds
- Avoid storing confidential data on Contrast secure persistent volumes until clusters are upgraded to a fixed release.
- Pin container images and runtime components to builds that include cryptsetup 2.8.1 or later.
- Restrict host-side access to volume provisioning paths so that untrusted hosts cannot substitute crafted LUKS2 metadata.
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.