← Back to Feed CACHED · 2026-06-30 15:00:30 · CACHE_KEY CVE-2025-11568
CVE-2025-11568 · CWE-1284 · Disclosed 2025-10-15

A data corruption vulnerability has been identified in the luksmeta utility when used with the LUKS1 disk…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A locksmith's notepad that scribbles over the wrong line when you tell it to write past the last page

luksmeta is a small Red Hat utility that stores arbitrary metadata in the unused header slots of a LUKS1 volume — most notably used by Clevis for network-bound disk encryption (NBDE/Tang). CVE-2025-11568 is an *improper input validation* (CWE-1284) bug where the tool fails to correctly bounds-check slot indices or sizes, and on a LUKS1 header it can overwrite adjacent slot metadata. The affected component is the standalone luksmeta binary and library; LUKS2 volumes use a different on-disk metadata layout and are not impacted. Affected packages: luksmeta ≤ upstream HEAD prior to the October 2025 fix and the corresponding RHEL/Fedora rebuilds.

Vendor MEDIUM (4.4) is a defensible label on the CVSS calculator — AV:L/AC:L/PR:H/UI:N/C:N/I:H/A:N is literally a 4.4 — but in operational reality this is a LOW. PR:H means the attacker is already root on the box and has the LUKS passphrase or keyfile. Anyone who can run luksmeta against a header can already run cryptsetup luksErase, dd if=/dev/zero of=/dev/sdX, or simply unlock and tamper with the filesystem. The CVSS Integrity:High rating reflects header corruption, but the marginal capability over what the attacker already possesses is zero.

"Local high-privilege data corruption in a niche LUKS1 helper. Vendor MEDIUM is generous — this is backlog hygiene."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Obtain root and LUKS key on the target host

The attacker must already be local with high privilege (PR:H) and possess the credentials needed to invoke luksmeta against the device. This means root shell on the host plus either the LUKS1 passphrase, a keyfile, or an unlocked /dev/mapper handle. There is no remote vector.
Conditions required:
  • root or equivalent on the host
  • access to LUKS1 passphrase/keyfile
  • physical or logical access to the encrypted block device
Where this breaks in practice:
  • LUKS1 is increasingly rare — Fedora/RHEL default to LUKS2 since RHEL 8.2 / Fedora 30
  • Root with the LUKS key already owns the data; this bug is redundant capability
  • Clevis NBDE deployments largely migrated to LUKS2
Detection/coverage: auditd on execve of /usr/bin/luksmeta is trivial; almost no scanner flags this CVE meaningfully because the prerequisites are so steep
STEP 02

Invoke luksmeta with crafted slot index or oversized payload

Run luksmeta save -d /dev/sdX -s <slot> -u <uuid> with a slot index or input size that the tool fails to validate. The write overruns into adjacent LUKS1 header metadata regions because the bounds check is incorrect for the LUKS1 layout.
Conditions required:
  • target volume is LUKS1 (not LUKS2)
  • luksmeta package present and unpatched
Where this breaks in practice:
  • LUKS2 systems are immune
  • luksmeta is not installed by default on most distros — only where Clevis NBDE was provisioned
Detection/coverage: no commodity EDR signature; file-integrity monitoring on the raw block device is impractical
STEP 03

Header metadata corruption / potential keyslot loss

The corrupted region can render legitimate LUKS keyslots unreadable, leading to denial of decryption on next boot. This is destructive availability impact in practice, but CVSS rates it Integrity:High because the on-disk header bytes are altered. There is no privilege escalation, no information disclosure, and no code execution.
Conditions required:
  • volume must be re-mounted or re-keyed for impact to surface
Where this breaks in practice:
  • a backup of the LUKS header (cryptsetup luksHeaderBackup) fully reverses the damage
  • the same attacker could have done worse with one line of dd
Detection/coverage: boot failures and cryptsetup luksDump mismatches are the operational signal
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No public reports, no incident-response writeups, no honeypot traffic — and there is no network vector to observe.
Public PoCReproducer steps in the upstream luksmeta issue tracker and Red Hat Bugzilla; no weaponized exploit because there is nothing to weaponize.
EPSS0.00093 (~0.09 percentile) — among the lowest scored vulnerabilities in the FIRST dataset.
CISA KEVNot listed and will not be — local PR:H, no RCE.
CVSS vector interpretationAV:L/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N — local, high-priv attacker, integrity-only. The 4.4 score is mechanically correct but operationally inflated.
Affected versionsAll luksmeta releases up to the October 2025 fix; bug is exposed only against LUKS1 headers.
Fixed inUpstream patch merged 2025-10; RHEL/Fedora errata published as luksmeta security update — confirm against your distro's advisory (RHSA / FEDORA-2025-).
Exposure dataNo GreyNoise/Shodan/Censys signal — not a network service. Installed-base is constrained to Clevis NBDE deployments still on LUKS1, an estimated <1% of modern Linux fleets.
Disclosure date2025-10-15 via Red Hat product security.
ReporterRed Hat product security team; CWE-1284 (Improper Validation of Specified Quantity in Input).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.1/10)

The single decisive factor is PR:H with no privilege gain — the attacker must already be root and hold the LUKS key, at which point they can destroy or read the volume by trivially simpler means. Affected population is further bounded to LUKS1 + luksmeta installations (Clevis NBDE legacy), which is a tiny minority of modern Linux estates.

HIGH severity downgrade to LOW
HIGH absence of exploitation interest
MEDIUM exact installed-base share on LUKS1 vs LUKS2

Why this verdict

  • Friction — attacker is already root with the key: the bug grants no new capability over dd or cryptsetup luksErase. Redundant capability is not a vulnerability worth ranking as MEDIUM.
  • Friction — LUKS1 only: Fedora, RHEL 8.2+, Ubuntu 18.10+, and Debian 11+ default to LUKS2. The exposed substrate is shrinking and is rare in greenfield deployments.
  • Friction — niche package: luksmeta is installed almost exclusively where Clevis NBDE was provisioned. EPSS 0.00093 reflects market disinterest correctly.
  • Role multiplier: Even on a high-value role host (e.g., a Tang server itself, or an encrypted DB host), the chain ends in availability loss of one volume, recoverable from a header backup. It does not pivot to fleet, identity, or supply chain. No role floor is triggered.
  • No KEV, no PoC weaponization, no network reachability — three independent corroborating signals that this is operationally LOW.

Why not higher?

MEDIUM would imply meaningful added risk over existing root privilege. There is none — the attacker who can trigger this can already destroy or read the volume directly. No role multiplier applies because the affected component is not a hypervisor, IdP, PAM, or kernel-mode agent; it is a userspace metadata helper.

Why not lower?

IGNORE would be wrong because the bug is real, the fix is straightforward, and unattended automation (e.g., poorly written Clevis wrappers) could trigger header corruption without malicious intent. Patch it on the normal hygiene cadence — don't pretend it isn't there.

05 · Compensating Control

What to do — in priority order.

  1. Back up LUKS headers fleet-wide — Run cryptsetup luksHeaderBackup --header-backup-file <path> <device> on every encrypted volume and store off-host. This neutralizes the entire impact of CVE-2025-11568 and protects you against unrelated header corruption. No mitigation SLA applies for LOW — fold this into your standard 365-day backlog, but the header backup is good hygiene regardless.
  2. Inventory LUKS1 vs LUKS2 volumes — Run cryptsetup luksDump <device> | grep Version across the fleet. Anything still on LUKS1 should be on the migration backlog independent of this CVE — LUKS1 has weaker KDFs and no redundant metadata. Convert with cryptsetup convert --type luks2 after backing up the header.
  3. Restrict luksmeta invocation via sudoers — If luksmeta is on a host but only legitimately invoked by Clevis automation, deny interactive sudo luksmeta via a sudoers rule. Reduces the chance of accidental or malicious misuse to zero on those hosts.
  4. Patch on next maintenance window — Apply the distro luksmeta errata during your standard monthly or quarterly window. Given LOW severity, no expedited change ticket is warranted.
What doesn't work
  • Full-disk encryption itself — the bug is IN the FDE metadata tooling; FDE does not protect against an attacker who already has root and the key.
  • EDR behavioral rules — almost no EDR has telemetry for LUKS header writes, and there's nothing distinctive about the malicious invocation versus legitimate Clevis usage.
  • Network segmentation / WAF / NGFW — zero network surface; segmentation provides no risk reduction here.
  • Disabling Clevis — only helpful if you weren't using it anyway; for hosts that depend on NBDE this breaks unattended boot.
06 · Verification

Crowdsourced verification payload.

Run on each target Linux host as root (or via your config-management agent). Example: sudo ./check_cve_2025_11568.sh. Reports VULNERABLE if luksmeta is installed at an unpatched version AND any local LUKS1 volume is present; PATCHED if either condition is absent or the patched build is detected.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2025_11568.sh — luksmeta LUKS1 data corruption
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u

if ! command -v luksmeta >/dev/null 2>&1; then
  echo "PATCHED: luksmeta not installed on this host"
  exit 0
fi

# Get installed version via package manager
ver=""
if command -v rpm >/dev/null 2>&1; then
  ver=$(rpm -q --qf '%{VERSION}-%{RELEASE}\n' luksmeta 2>/dev/null | head -n1)
elif command -v dpkg-query >/dev/null 2>&1; then
  ver=$(dpkg-query -W -f='${Version}\n' luksmeta 2>/dev/null)
fi

if [ -z "$ver" ]; then
  echo "UNKNOWN: luksmeta present but version not resolvable"
  exit 2
fi

echo "INFO: luksmeta version detected: $ver"

# Check for any LUKS1 volumes on the host
luks1_found=0
if command -v lsblk >/dev/null 2>&1 && command -v cryptsetup >/dev/null 2>&1; then
  while read -r dev; do
    [ -b "/dev/$dev" ] || continue
    if cryptsetup isLuks "/dev/$dev" 2>/dev/null; then
      v=$(cryptsetup luksDump "/dev/$dev" 2>/dev/null | awk -F: '/Version/ {gsub(/ /,"",$2); print $2; exit}')
      if [ "$v" = "1" ]; then
        echo "INFO: LUKS1 volume found at /dev/$dev"
        luks1_found=1
      fi
    fi
  done < <(lsblk -ndo NAME)
fi

# Heuristic: check vendor errata marker (RHEL-style changelog tag)
patched=0
if command -v rpm >/dev/null 2>&1; then
  if rpm -q --changelog luksmeta 2>/dev/null | grep -qiE 'CVE-2025-11568|luks1.*bounds'; then
    patched=1
  fi
fi

if [ "$patched" -eq 1 ]; then
  echo "PATCHED: vendor errata for CVE-2025-11568 detected in changelog"
  exit 0
fi

if [ "$luks1_found" -eq 0 ]; then
  echo "PATCHED: no LUKS1 volumes on this host — bug unreachable"
  exit 0
fi

echo "VULNERABLE: unpatched luksmeta ($ver) present with LUKS1 volume — apply distro errata"
exit 1
07 · Bottom Line

If you remember one thing.

TL;DR
Treat CVE-2025-11568 as backlog hygiene, not an incident. The noisgate mitigation SLA for LOW has no mitigation deadline — go straight to the noisgate remediation SLA of ≤ 365 days and roll the luksmeta errata into your standard monthly distro patch cadence. Monday morning: (1) inventory luksmeta-installed hosts and which still carry LUKS1 volumes — almost certainly a single-digit percentage of your fleet, (2) ensure every encrypted volume has a current cryptsetup luksHeaderBackup stored off-host, and (3) put LUKS1 → LUKS2 conversion on the platform team's roadmap independent of this CVE. Do not page anyone over this; do not file an emergency change.

Sources

  1. NVD — CVE-2025-11568
  2. Red Hat Security — CVE-2025-11568
  3. luksmeta upstream (latchset/luksmeta)
  4. CWE-1284 — Improper Validation of Specified Quantity in Input
  5. cryptsetup / LUKS2 on-disk format
  6. Clevis NBDE project
  7. FIRST EPSS model
  8. CISA KEV catalog
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.