← Back to Feed CACHED · 2026-06-29 11:19:10 · CACHE_KEY CVE-2026-53284
CVE-2026-53284 · CWE-460 · Disclosed 2026-06-26

In the Linux kernel

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

A janitor empties the trash bin before the cleanup crew arrives, then everyone wonders why the floor is still dirty

The btrfs transaction commit path calls btrfs_extent_io_tree_release() on the dirty_pages io tree even when btrfs_write_marked_extent() has just failed. The later transaction-abort cleanup expects to walk that same tree to release dirty extent buffers — but it's already been emptied — so the buffers leak and invalidate_btree_folios() fires warnings. The end state on a real box is a forced read-only remount of the affected filesystem after an underlying write error (bad block, failing disk, ENOSPC at the device layer, dm-crypt failure, etc.). Affected: mainline btrfs prior to 6.18.33 and 7.0.10; fixed in 6.18.33, 7.0.10, and 7.1.

Vendor severity is HIGH 7.5 with AV:N/AC:L/PR:N/UI:N/A:H — that vector is wrong. Nothing about this bug is network-reachable, and no unauthenticated remote attacker can trigger a btrfs write failure on your kernel's metadata path. This is a kernel-internal error-handling bug that surfaces *only after* the storage layer has already returned a write error. The realistic worst case is a noisy WARN_ON and a filesystem flipped read-only — annoying for uptime, but it requires a pre-existing I/O fault you didn't cause. The auto-generated kernel.org CVE scoring boilerplate is overstating impact, as it does for nearly every btrfs CVE filed this cycle.

"Vendor flagged this 7.5 HIGH on a network vector. It's a local btrfs write-error cleanup bug — no remote attacker, no DoS chain. Downgrade to LOW."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Underlying storage returns a write error

Something below btrfs — a failing SATA cable, a SAN dropout, dm-crypt I/O error, thin-pool exhaustion, or a deliberately constructed loop-device — causes btrfs_write_marked_extent() to fail mid-transaction. Without a real write fault, this code path is never entered. There is no network-reachable trigger.
Conditions required:
  • Local btrfs filesystem mounted rw
  • Underlying block device returns a write error during a metadata commit
Where this breaks in practice:
  • Most production btrfs deployments run on healthy RAID/LVM — write errors are rare events, not attacker-triggerable
  • No userspace primitive (syscall, ioctl, network packet) reliably forces this failure without root or hardware control
Detection/coverage: Standard storage SMART/dmesg monitoring catches the precursor I/O error; no scanner detects the race itself.
STEP 02

Premature io_tree release

btrfs_write_and_wait_transaction() unconditionally calls btrfs_extent_io_tree_release() on the dirty_pages tree, even though the failed write left unsubmitted records. The tree is now empty; the abort path can no longer walk it. This is purely a kernel-internal data structure mishandling.
Conditions required:
  • Step 1 occurred
  • Vulnerable kernel < 6.18.33 or < 7.0.10
Where this breaks in practice:
  • Triggering this exactly takes a narrow timing window inside a transaction commit
Detection/coverage: WARN_ON in dmesg from invalidate_btree_folios() — entirely post-fact.
STEP 03

Filesystem flips read-only, leaked extent buffers logged

Btrfs's abort policy remounts the volume read-only to prevent corruption. The leaked extent buffers throw a kernel warning at unmount. No code execution, no privilege gain, no information disclosure. Service-impacting only for workloads on the affected volume.
Conditions required:
  • Steps 1–2 succeeded
Where this breaks in practice:
  • Read-only remount is the safe failure mode — exactly what btrfs is designed to do
  • Recovery is umount + btrfs check + remount; no data corruption beyond the failed transaction
Detection/coverage: Trivially visible in dmesg, journald, and any host metric pipeline that alerts on mount state changes.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNone observed. No public PoC, no malware family abuses this, no incident reports.
Proof-of-conceptNo public PoC. The reproducer is essentially *inject a write error during a metadata commit* — done internally via dm-flakey or dm-error by the btrfs maintainers.
EPSS0.00432 (~0.4%) — extremely low predicted exploitation.
KEV statusNot listed. CISA has not added this CVE.
CVSS vector (as published)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — the AV:N is incorrect; realistic vector is AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:L.
Affected versionsLinux mainline btrfs before 6.18.33 and before 7.0.10.
Fixed versions6.18.33, 7.0.10, 7.1. Distro backports rolling out (RHEL/Alma/Rocky/Ubuntu/SUSE) via normal kernel errata channels.
Exposure / scanningNot internet-reachable; GreyNoise/Shodan/Censys irrelevant. Affected population = hosts running btrfs root or btrfs data volumes on vulnerable kernels.
Disclosed2026-06-26 via kernel.org's automated CVE assignment program.
Reporterbtrfs maintainer team (Qu Wenruo / Josef Bacik upstream); CVE auto-allocated by kernel.org CNA.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.1/10)

The decisive factor is that this is a local kernel error-handling bug with no remote trigger and no confidentiality/integrity impact — the vendor's AV:N is a scoring artifact of the kernel.org auto-CNA pipeline. Worst-case real-world outcome is a read-only remount after a pre-existing storage fault, which is btrfs's intended fail-safe behavior, not an attacker primitive.

HIGH Attack vector is local, not network
HIGH No code execution / privilege escalation path
MEDIUM No high-value-role deployment turns this into fleet impact

Why this verdict

  • Vector is wrong: the published AV:N doesn't survive inspection — the code path requires a block-layer write failure during a btrfs metadata commit, which has no network reach.
  • Impact ceiling is a read-only remount, which is btrfs's *designed* safety response to a write fault; the bug only adds noisy WARN_ONs and leaked extent buffers, not corruption or RCE.
  • Role multiplier: even on high-value roles (btrfs-backed CI artifact store, btrfs root on a hypervisor, Synology/SUSE storage appliances) the chain still ends in *one filesystem goes RO until reboot* — no domain takeover, no tenant crossover, no supply-chain pivot. Floor stays LOW.
  • EPSS 0.00432, no KEV, no PoC, no telemetry of in-the-wild abuse — every external signal agrees this is hygiene, not fire.

Why not higher?

MEDIUM would imply a credible local DoS primitive an unprivileged user can fire on demand. There isn't one — you need to either be root or to engineer a block-layer fault you already have privileges to inject. HIGH is off the table once AV:N is corrected to AV:L.

Why not lower?

Not IGNORE because the bug is real, ships in shipping kernels, and a flaky disk in production *will* land hosts in unscheduled read-only — operationally painful even if not security-impactful. Patch in the normal kernel-errata cadence.

05 · Compensating Control

What to do — in priority order.

  1. Roll the bug into your next scheduled kernel-errata cycle — Verdict is LOW — no mitigation SLA applies. Pick up 6.18.33 / 7.0.10 or your distro's backport during the standard 365-day remediation window; no out-of-band action required.
  2. Audit btrfs hosts for storage health — Because the bug only triggers after an underlying write error, healthy storage is itself a compensating control. Review SMART, dm-multipath logs, and thin-pool fill rates on btrfs hosts during your normal weekly ops review.
  3. Alert on involuntary read-only remounts — Add a journald/Falco/host-agent rule for BTRFS: error and remount-ro so an event surfaces immediately if a vulnerable host trips. Deploy alongside your standard observability rollout — no special timeline.
  4. Snapshot/backup posture check — Ensure btrfs send/snapshot rotation and off-host backups are current for any btrfs volume holding regulated or high-value data — the fail-safe is RO, but recovery still depends on a recent backup if btrfs check --repair is needed.
What doesn't work
  • Network ACLs / WAF / segmentation — irrelevant, this bug has no network surface despite the published AV:N.
  • Disabling SMB/NFS/iSCSI re-exports of btrfs volumes — doesn't help; the trigger is local block-layer I/O failure, not the export protocol.
  • EDR / kernel-mode AV — they cannot prevent a kernel data-structure mishandling inside the transaction commit path.
06 · Verification

Crowdsourced verification payload.

Run on each Linux host with btrfs mounts (root or local sudo required). Example: sudo ./check-cve-2026-53284.sh. Returns VULNERABLE, PATCHED, NOT_APPLICABLE (no btrfs), or UNKNOWN.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-53284.sh — btrfs dirty_pages io_tree release
# Run as root on a Linux host. Exit codes: 0=PATCHED/NA, 1=VULNERABLE, 2=UNKNOWN
set -u

if ! command -v uname >/dev/null 2>&1; then
  echo UNKNOWN; exit 2
fi

# 1. Is btrfs actually in use?
if ! grep -qw btrfs /proc/filesystems 2>/dev/null && ! mount | grep -qw btrfs; then
  echo NOT_APPLICABLE
  exit 0
fi

KREL=$(uname -r)
# Strip distro suffix, keep numeric x.y.z
NUM=$(echo "$KREL" | grep -oE '^[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
IFS=. read -r MAJ MIN PATCH <<<"$NUM"
PATCH=${PATCH:-0}

vuln=0
case "$MAJ" in
  6)
    if [ "$MIN" -lt 18 ]; then vuln=1
    elif [ "$MIN" -eq 18 ] && [ "$PATCH" -lt 33 ]; then vuln=1
    fi
    ;;
  7)
    if [ "$MIN" -eq 0 ] && [ "$PATCH" -lt 10 ]; then vuln=1
    fi
    # 7.1+ is fixed
    ;;
  *)
    if [ "$MAJ" -lt 6 ]; then vuln=1; fi
    ;;
esac

# Distro backport hint: check changelog if available
if command -v rpm >/dev/null 2>&1; then
  if rpm -q --changelog kernel 2>/dev/null | grep -qi 'CVE-2026-53284'; then vuln=0; fi
elif command -v dpkg >/dev/null 2>&1; then
  if dpkg -s linux-image-"$KREL" 2>/dev/null | grep -qi 'CVE-2026-53284'; then vuln=0; fi
fi

if [ "$vuln" -eq 1 ]; then
  echo "VULNERABLE (kernel $KREL, btrfs in use)"
  exit 1
fi
echo "PATCHED (kernel $KREL)"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Treat this as backlog hygiene, not an incident. Verdict is LOW, so per the noisgate mitigation SLA there is no mitigation deadline — go straight to the noisgate remediation SLA of 365 days and pull 6.18.33 / 7.0.10 (or your distro's backport) into your next routine kernel-errata cycle. Monday morning, do exactly two things: (1) run the verifier across the btrfs population to size the work, and (2) confirm your existing alerting flags involuntary remount-ro events so an unlucky host on a flaky disk doesn't fail silently. Skip any out-of-cycle change windows.

Sources

  1. NVD: CVE-2026-53284
  2. kernel.org CVE record
  3. ThreatInt CVE-2026-53284 analysis
  4. WindowsNews summary
  5. btrfs upstream git
  6. FIRST EPSS
  7. 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.