This tracker is no longer updated. Every maintained upstream stable line carries the fix, as do every Debian suite, Proxmox VE 9’s default kernel, every tracked NixOS ref, Rocky Linux / RHEL 10, 9 and 8, and all three Amazon Linux 2023 kernel streams. The remaining gaps are end-of-life kernels that will never be fixed — Proxmox VE 8 (upgrade to Proxmox VE 9) — and any host that has not rebooted onto a fixed kernel.
Summary
| Field | Detail |
|---|---|
| CVE ID | CVE-2026-53266 |
| Alias | None — the kernel CNA record gives no nickname; CISA’s catalogue entry calls it Linux Kernel Out-of-Bounds Write Vulnerability |
| Component | Kernel: netfilter bridge — the ebtables snat target’s optional ARP sender-hardware-address rewrite in ebt_snat_tg() (net/bridge/netfilter/ebt_snat.c, module ebt_snat) |
| Type | In-place packet write without a writability check (CWE-787). The ARP rewrite calls skb_store_bits() after only a read-side skb_header_pointer(), so the six new MAC bytes land in whatever page backs the ARP payload — including a shared, file-backed page that splice() imported into the socket buffer |
| Impact | A controlled write into page-cache / file-backed memory. The fix commit describes only the write; by analogy with Dirty Pipe, six chosen bytes in a readable file’s cached contents (a setuid binary, a PAM module) is a local privilege escalation primitive — the kernel CNA says it “can be leveraged toward privilege escalation or code execution”, Red Hat “potentially local privilege escalation” — and a stray write is a crash (DoS). CISA lists it as exploited in the wild. Not reachable by remote ARP traffic alone |
| Upstream fix | 67ba971ae025 (netfilter: bridge: make ebt_snat ARP rewrite writable), a three-line skb_ensure_writable() guard; first in v7.1-rc7 (tagged 2026-06-07) and backported to every maintained stable line in the 2026-06-19 point releases (7.0.13, 6.18.36, 6.12.94, 6.6.143, 6.1.176, 5.15.210, 5.10.259 — see the Linux kernel rows) |
| Introduced | 63137bc5882a (netfilter: ebtables: Fixes dropping of small packets in bridge nat) in v5.10 (released 2020-12-13; authored 2020-10-14) — the fix for bridge NAT dropping short frames moved the Ethernet-header check to skb_ensure_writable(skb, 0) and left the ARP rewrite with no writability check at all. That commit was also backported to 5.4.73, 5.8.17, and 5.9.2 |
| Affected window | 5.10 through 7.0.12 (and 7.1 before -rc7), plus the 5.4.y, 5.8.y, and 5.9.y point releases from 5.4.73 / 5.8.17 / 5.9.2 on — all three lines long end-of-life. Fixed in v7.1-rc7 and, since 2026-06-19, in every maintained stable line (per-branch First fixed below). A distro kernel is vulnerable only if it has neither rebased onto a fixed release nor cherry-picked the fix |
| Discoverer | Yiming Qian (reported the bug and authored the fix, merged through the netfilter maintainers Florian Westphal and Pablo Neira Ayuso) |
| Public disclosure | 2026-06-25 (kernel CNA published the CVE); the fix had been public in mainline since 2026-06-07. Added to CISA KEV on 2026-09-18 |
| Public PoC | None found. No public exploit code or write-up names this CVE; CISA’s KEV entry records in-the-wild exploitation without naming a campaign or attributing the report. See Public PoC below |
| KEV / EPSS / CVSS | In CISA KEV since 2026-09-18 (BOD 26-04 due date 2026-09-21; forensic triage required; SSVC Exploitation: active, Automatable: no, Technical impact: total). Kernel CNA: CVSS 3.1 8.8 HIGH (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) — the S:C is the page-cache write crossing out of the namespace; mirrored by NVD (status Analyzed, CWE-787). Red Hat: severity Important, scoring AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (7.5). Ubuntu: priority High. EPSS 0.28% (20th percentile, 2026-09-19) — the score has not caught up with the KEV listing. See Scoring in the verification log |
| Reachability | Three things at once: an ebtables snat rule with --snat-arp on a bridge, CAP_NET_ADMIN in the network namespace that owns that bridge (an unprivileged user gets that with unshare -Urn where unprivileged user namespaces are enabled; a container with NET_ADMIN has it directly), and a frame whose ARP payload sits in a splice-imported file page — which the attacker arranges locally, since ordinary received frames live in kernel-owned pages. ebt_snat is a module (CONFIG_BRIDGE_EBT_SNAT) autoloaded when such a rule is inserted, so “module not loaded” is no protection on its own. See Detection and Mitigation |
⚠️ This is a June bug that CISA flagged in September. The fix has been in every maintained upstream line since 2026-06-19, and by late July every Debian suite, all three Amazon Linux 2023 kernel streams, RHEL 8 and 9 (so Rocky and AlmaLinux), and every tracked NixOS channel had shipped it; Proxmox VE 9 followed in August, and Rocky Linux / RHEL 10 followed in September. On 2026-09-18 CISA added it to the Known Exploited Vulnerabilities catalogue with a three-day federal deadline, which means someone is using it. Still vulnerable when this tracker was archived: Proxmox VE 8 (end of life, no fix coming) and Ubuntu’s own focal, jammy, and noble kernels. Everywhere else the question is not whether a fix exists but whether the host has rebooted onto a kernel past its line’s First fixed — a machine patched in July and never rebooted is still running the vulnerable code.
How the exploitation chain works
The ebtables snat target rewrites the Ethernet source address of
frames leaving a bridge, and — with --snat-arp — also the sender
hardware address inside ARP packets, so that ARP replies advertise the
rewritten MAC. The Ethernet rewrite is guarded by
skb_ensure_writable(skb, 0). That looks odd but is deliberate: at the
bridge hooks the Ethernet header is addressed through eth_hdr() while
skb->data already points at the payload, so asking for ETH_HLEN
writable bytes would test the payload, not the header, and would
reintroduce the short-frame drops that 63137bc5882a fixed in
v5.10.
The ARP rewrite is a different case. It writes through
skb_store_bits(skb, sizeof(struct arphdr), info->mac, ETH_ALEN) at an
offset relative to skb->data — into the payload proper — but the only
check before it was skb_header_pointer(), which guarantees the ARP
header can be read, not that the bytes after it can be written. If
the sender-hardware-address range lives in a non-linear fragment,
skb_store_bits() maps that fragment’s page and copies the six MAC
bytes straight into it.
Normally that page is the kernel’s own receive buffer and the copy is
exactly the intended rewrite. But a socket buffer can also carry pages
the kernel does not own outright — the commit names the case: a
fragment “backed by a splice-imported file page”, meaning a
page-cache page of a file that splice() attached to the socket’s
send path by reference, without copying. A frame whose ARP payload is
backed by such a page reaches the snat rule with the file page still
attached, and the rewrite writes the MAC bytes into the file’s cached
contents. The commit stops there. What that primitive is worth is
inference from Dirty Pipe (CVE-2022-0847), which was the same thing —
a write into a page-cache page the writer had no permission to modify:
a few controlled bytes at a chosen offset in a readable setuid binary or
shared library are enough to run code as root. No public code
demonstrates that chain for this bug, but it is the obvious use of the
write, and CISA’s listing says the bug has been used.
The fix, 67ba971ae025, adds a single guard on the --snat-arp
path: skb_ensure_writable(skb, sizeof(struct arphdr) + ETH_ALEN)
before the ARP header is read and before skb_store_bits() runs, which
makes the kernel copy any shared or read-only backing into a private
buffer first. It is three lines in ebt_snat_tg(), and the stable
backports are byte-identical.
ℹ️ The write only escapes when the packet is the attacker’s. A frame received from the wire lives in kernel-owned pages and the ARP rewrite does what it always did, so remote ARP traffic on its own cannot trigger anything — the kernel CNA scores it
AV:Lfor that reason. The dangerous case needs a local sender who controls the rule (CAP_NET_ADMINover the bridge’s namespace) and the packet’s backing pages. Where unprivileged user namespaces are enabled, any local user can build that setup in a private namespace; where they are disabled, it takes a container or process that already holdsCAP_NET_ADMIN. None of this changes a row’s verdict — only the67ba971ae025backport does — but it decides who on a given host can reach the bug.
Vulnerable commit range
| Commit | Role | Description |
|---|---|---|
63137bc5882a | Introduced | netfilter: ebtables: Fixes dropping of small packets in bridge nat (v5.10, released 2020-12-13) — moved the Ethernet-source rewrite behind skb_ensure_writable(skb, 0) and left the ARP sender-address rewrite with no writability check at all. Backported to the 5.4.73, 5.8.17, and 5.9.2 stable releases. |
67ba971ae025 | Fixed | netfilter: bridge: make ebt_snat ARP rewrite writable — makes the ARP header plus sender-address range writable before reading the header and before skb_store_bits(); first released in v7.1-rc7 (2026-06-07), backported to every maintained stable line on 2026-06-19. |
The reachable lifetime is therefore 5.10 through 7.0.12 (and 7.1
before -rc7), plus the long-dead 5.4.y / 5.8.y / 5.9.y lines from the
point release that took the introducing commit. A kernel is safe by
carrying the fix, or by predating v5.10 (and 5.4.73) altogether.
Patch status
A row is Fixed only if its kernel carries the 67ba971ae025
fix — a release at or past its branch’s first-fixed version, or an
explicit distro backport. The upstream picture has been complete since
2026-06-19: mainline carries the fix from v7.1-rc7, the 7.1.y and
7.2.y stable branches were cut after it landed and so have carried it
from their first release, and the same-day 7.0.13, 6.18.36, 6.12.94,
6.6.143, 6.1.176, 5.15.210, and 5.10.259 point releases covered every
longterm line. Downstream, every Debian suite, all three Amazon Linux
2023 kernel streams, RHEL/Rocky 8, 9, and 10, every tracked NixOS
channel, and Proxmox VE 9 have shipped it; Proxmox VE 8 is
permanently Vulnerable (end of life, no fix coming).
The first group is the upstream kernel; the rest are a focused set of
x86-64 distributions, with per-distribution detail in the sections that
follow. Current kernel is what each release ships today; First fixed
and Fixed since record the build that first carried the fix and the
date it shipped, and stay — until a row is fixed.
| Distribution | Release | Current kernel | First fixed | Fixed since | Status |
|---|---|---|---|---|---|
| Linux kernel | mainline | 7.3-rc4 | 7.1-rc7 | 2026-06-07 | ✅ Fixed — carries 67ba971ae025 |
| Linux kernel | 7.2.x | 7.2.8 | 7.2 | 2026-08-16 | ✅ Fixed — branch cut after the fix |
| Linux kernel | 7.1.x | 7.1.13 (EOL) | 7.1 | 2026-06-14 | ✅ Fixed — every 7.1 release carries it |
| Linux kernel | 6.18.x | 6.18.54 | 6.18.36 | 2026-06-19 | ✅ Fixed — LTS |
| Linux kernel | 6.12.x | 6.12.111 | 6.12.94 | 2026-06-19 | ✅ Fixed — LTS |
| Linux kernel | 6.6.x | 6.6.157 | 6.6.143 | 2026-06-19 | ✅ Fixed — LTS |
| Linux kernel | 6.1.x | 6.1.188 | 6.1.176 | 2026-06-19 | ✅ Fixed — LTS |
| Linux kernel | 5.15.x | 5.15.221 | 5.15.210 | 2026-06-19 | ✅ Fixed — LTS |
| Linux kernel | 5.10.x | 5.10.270 | 5.10.259 | 2026-06-19 | ✅ Fixed — LTS |
| Debian | sid (unstable) | 7.2.8-1 | 7.0.13-1 | 2026-06-19 | ✅ Fixed |
| Debian | forky (testing) | 7.2.6-1 | 7.0.13-1 | 2026-06-28 | ✅ Fixed |
| Debian | 13 (trixie) | 6.12.107-1 | 6.12.94-1 | 2026-06-21 | ✅ Fixed — trixie-security |
| Debian | 12 (bookworm) | 6.1.187-1 | 6.1.176-1 | 2026-07-03 | ✅ Fixed — DLA-4665-1 |
| Proxmox VE | 9 (default) | 7.0.14-19-pve | 7.0.14-9-pve | 2026-08-05 | ✅ Fixed — Ubuntu 7.0.0-31.31 rebase |
| NixOS | master | 6.18.54 | 6.18.36 | 2026-06-19 | ✅ Fixed |
| NixOS | release-26.05 | 6.18.54 | 6.18.36 | 2026-06-19 | ✅ Fixed |
| NixOS | Unstable | 6.18.54 | 6.18.36 | 2026-06-26 | ✅ Fixed |
| NixOS | Unstable (small) | 6.18.54 | 6.18.36 | 2026-06-20 | ✅ Fixed |
| NixOS | Unstable (nixpkgs) | 6.18.54 | 6.18.36 | 2026-06-23 | ✅ Fixed |
| NixOS | 26.05 | 6.18.54 | 6.18.36 | 2026-06-23 | ✅ Fixed |
| NixOS | 26.05 (small) | 6.18.54 | 6.18.36 | 2026-06-20 | ✅ Fixed |
| Rocky Linux / RHEL | 10 | 6.12.0-211.60.1.el10_2 | 6.12.0-211.60.1.el10_2 | 2026-09-25 | ✅ Fixed — RHSA-2026:71233 |
| Rocky Linux / RHEL | 9 | 5.14.0-687.52.1.el9_8 | 5.14.0-687.24.1.el9_8 | 2026-07-10 | ✅ Fixed — RHSA-2026:36645 |
| Rocky Linux / RHEL | 8 | 4.18.0-553.168.1.el8_10 | 4.18.0-553.144.1.el8_10 | 2026-07-14 | ✅ Fixed — RHSA-2026:39083 |
| Amazon Linux | 2023 (default) | 6.1.186-228.376 | 6.1.176-220.358 | 2026-07-06 | ✅ Fixed — ALAS2023-2026-1924 |
| Amazon Linux | 2023 (6.12 opt-in) | 6.12.103-129.197 | 6.12.94-123.174 | 2026-07-20 | ✅ Fixed — ALAS2023-2026-1968 |
| Amazon Linux | 2023 (6.18 opt-in) | 6.18.48-109.150 | 6.18.36-69.134 | 2026-07-06 | ✅ Fixed — ALAS2023-2026-1925 |
Linux kernel
The fix reached mainline in v7.1-rc7, through the netfilter tree, and one coordinated stable batch carried it to every maintained line. The 7.1.y and 7.2.y branches were cut after it landed, so every release on them carries it.
7.0.y went end of life after the fix. Its final release, 7.0.14, is fixed; only 7.0.0 through 7.0.12 are exposed.
Old 5.4, 5.8 and 5.9 kernels are also in-window. The introducing commit was backported to them in 2020 (from 5.4.73, 5.8.17 and 5.9.2). All three are long past end of life upstream — a host still on one needs a supported kernel. Upstream kernels older than 5.4.73 are not affected.
To check a tree directly: a fixed ebt_snat_tg() (in
net/bridge/netfilter/ebt_snat.c) calls
skb_ensure_writable(skb, sizeof(_ah) + ETH_ALEN) inside the
--snat-arp branch, before skb_header_pointer(); an unfixed one goes
from skb_header_pointer() straight to skb_store_bits().
Debian
forky is testing, the future Debian 14. The bookworm-backports 6.12
kernel carries the fix as well.
bullseye (Debian 11) left security support on 2026-08-31. Its last
LTS kernels did carry the fix (DLA-4664-1 for linux, DLA-4671-1 for the
opt-in linux-6.1), but nothing further will ship for it — move to
bookworm or trixie.
The ebt_snat module is built and autoloaded on demand on every Debian
kernel, and nothing in the default configuration blocks it. Debian
kernels also enable unprivileged user namespaces by default
(kernel.unprivileged_userns_clone=1), so the local path is open on
any host with an in-window kernel.
Proxmox VE
Proxmox ships its own Ubuntu-derived kernels, so Debian’s status does
not carry over. PVE 9’s default proxmox-kernel-7.0 picked up the fix
silently, in a rebase onto Ubuntu’s fixed resolute kernel, with no
CVE-named changelog line. A PVE 9 host is patched once it has rebooted
onto a fixed build.
- PVE 8 reached end of life in August 2026, before any fix reached
its kernels. Its default
proxmox-kernel-6.8and its opt-in series stay vulnerable, and no fix is coming — upgrade to PVE 9. - Superseded and preview series that PVE 9 still publishes,
proxmox-kernel-6.17andproxmox-kernel-6.14, stopped updating before the fix existed and will never get it. A host booting one should switch to the default kernel.
Proxmox hosts are the natural home of this bug’s preconditions: every VM and container sits behind a Linux bridge, and an unprivileged LXC container is a network namespace with its own bridge port.
Whether an ordinary user or a container can reach the write depends on the container’s capability set and the host’s user-namespace settings. PVE runs Ubuntu kernels on a Debian userland, and Ubuntu’s 6.8 and 7.0 kernels carry their own AppArmor restriction on unprivileged user namespaces, so don’t assume either way — check with the Detection commands.
NixOS
Every NixOS channel and branch in the table defaults to
linux_6_18 (linuxPackages), which carries the fix.
A host that overrides
boot.kernelPackages is fixed too: linux_6_12, linux_6_6,
linux_6_1, linux_5_15 and linux_5_10 are all past their first
fix, and NixOS pins nothing older than 5.10.
Kernel updates land on nixpkgs master first and reach each channel
once its Hydra jobset passes, so a channel can sit a few days behind
master. The -small channels (nixos-unstable-small,
nixos-26.05-small) run a reduced jobset and pick up kernel updates
fastest.
Which ref a flake input follows:
github:NixOS/nixpkgs/nixos-unstableandgithub:NixOS/nixpkgs/nixos-26.05follow those channels — the GitHub channel branches are updated to exactly the published channel pins.- A bare
github:NixOS/nixpkgswith no ref followsmaster, andgithub:NixOS/nixpkgs/release-26.05follows that branch. Both are ungated development branches — they carry a kernel bump as soon as it lands, often a day or more before a channel publishes it. - A bare
nixpkgsregistry input resolves by default to thenixpkgs-unstablechannel: a separate channel aimed at Nix on other operating systems, not gated on the NixOS tests.
Rocky Linux / RHEL family
Red Hat rates this CVE Important. Rocky 8, 9 and 10 each skipped the exact RHSA build and shipped the next one, which is where their fix starts.
- RHEL 7 ELS: fixed by RHSA-2026:71687 (
kernel-rtRHSA-2026:71657). Rocky ships no EL7. - RHEL 6: listed as affected in Red Hat’s record, with no fix.
kernel-rt: RHEL 8’s is fixed by RHSA-2026:39082; RHEL 9’s and 10’s are fixed in the same advisories as their base kernels.
AlmaLinux 9 shipped ALSA-2026:36645. AlmaLinux, CloudLinux and Oracle Linux’s Red Hat Compatible Kernel rebuild RHEL’s kernel, so they get the fix as they rebuild Red Hat’s advisories.
Amazon Linux
The three AL2023 streams are the default kernel package (6.1 line) and
the opt-in kernel6.12 and kernel6.18 packages; each was fixed by a
cherry-pick in July.
Amazon Linux 2 reached end of support on 2026-06-30, a week after the CVE was published, with no fixed kernel. Every AL2 kernel stays vulnerable — the only way out is AL2023.
Detection
Is the running kernel in the affected window and missing the fix? Every kernel from 5.10 (and 5.4.73) up to the fixed releases is in-window. Compare the running kernel against the Patch status table’s First fixed column for its series; a distro kernel below its line’s first-fixed build, or one that has been patched but not rebooted, is still vulnerable:
uname -r
Is an ARP-rewriting SNAT rule in place? The bug is only reachable
through an ebtables snat target with --snat-arp. List the bridge
NAT table (the ebtables command is the nftables-backed compatibility
tool on current systems; a rule created through native nft shows up
in the bridge family ruleset instead):
ebtables -t nat -L
nft list ruleset bridge
Is the module present? modinfo prints the on-disk path of the
ebt_snat module, or an error if the kernel has no such module — but a
present module is loaded on demand the moment a rule needs it, so this
tells you whether the path can be reached, not whether it is:
modinfo -F filename ebt_snat
Can an unprivileged user reach CAP_NET_ADMIN? The local path in
a private namespace needs unprivileged user namespaces. If both of
these are non-zero, an ordinary user can unshare -Urn into a namespace
where it holds CAP_NET_ADMIN over its own bridge:
sysctl kernel.unprivileged_userns_clone user.max_user_namespaces
Is this a multi-tenant or container host? Any container that holds
CAP_NET_ADMIN (for example one run with --cap-add=NET_ADMIN or a
privileged pod) can insert ebtables rules on a bridge it owns,
regardless of the user-namespace sysctls:
grep -rEl 'CAP_NET_ADMIN|NET_ADMIN|privileged' /etc/containers /etc/kubernetes 2>/dev/null
Public PoC
There is no public exploit for this CVE at the time of writing: no PoC repository, no write-up, and no vendor advisory that names a campaign. What exists publicly is the fix commit, whose description spells out the primitive — a controlled write into a splice-imported file page — and Red Hat’s assessment that it is a local privilege escalation. CISA’s KEV entry on 2026-09-18 says the bug has been exploited in the wild, and its three-day deadline and forensic-triage flag signal that this was not a marginal report. Treat the absence of public code as no reproducer to test with, not as no exploit: the primitive class is well understood from Dirty Pipe, and an attacker who can reach the write does not need this page to finish the chain.
Mitigation
The real fix is a patched kernel (a release at or past its line’s
First fixed, or a distro backport of 67ba971ae025), followed
by a reboot — a kernel package installed in July but never booted
protects nothing. Until then the exposure can be narrowed; none of these
is a fix.
Remove the ARP rewrite from SNAT rules
The vulnerable path is only the --snat-arp option of the snat
target. Where a bridge’s SNAT rules do not need ARP rewriting — which is
most of them; the option exists for bridges that hide the real MAC from
the far side — drop it, or remove SNAT rules that match ARP at all. This
is Red Hat’s published workaround, and it closes the bug for rules the
administrator controls. It does nothing about a rule an attacker inserts
in a namespace of their own.
Block the ebt_snat module
Where bridge NAT is not used at all, blocking the module removes the
datapath for every caller, including a namespaced or containerised one
that would otherwise autoload it. install … /bin/false is surer than a
plain blacklist, which only suppresses alias autoloading:
printf 'install ebt_snat /bin/false\n' | sudo tee /etc/modprobe.d/cve-2026-53266.conf
That rule only prevents future loading — it does not remove a module already resident. Where the module is loaded but no rule uses it, unload it so the block takes effect now:
sudo modprobe -r ebt_snat
A module that is genuinely in use cannot be unloaded, and on a host
whose bridges rely on SNAT you could not block it without breaking that
service — there the first mitigation applies instead. It is likewise
inert if the target is built into the kernel (=y) rather than
loadable; the modinfo check above prints a .ko path only for a
loadable module. Proxmox VE and most container hosts do use ebtables or
its nftables equivalent for bridge filtering; check before blocking.
Restrict unprivileged user namespaces
The local path for an ordinary user depends on user namespaces to
obtain CAP_NET_ADMIN over a private bridge. Where unprivileged user
namespaces are not needed, disabling them closes that path (it does
not stop a process or container that already holds
CAP_NET_ADMIN). On Debian/Ubuntu kernels:
sudo sysctl -w kernel.unprivileged_userns_clone=0
Persist it across reboots:
echo 'kernel.unprivileged_userns_clone = 0' | sudo tee /etc/sysctl.d/99-cve-2026-53266.conf
On kernels without that Debian/Ubuntu knob, cap the count instead:
sudo sysctl -w user.max_user_namespaces=0
Restrict who holds CAP_NET_ADMIN
On multi-tenant and container hosts, review which workloads are granted
CAP_NET_ADMIN: drop it from container capability sets that do not need
it, avoid privileged containers, and keep untrusted workloads out of
namespaces where they can manage a bridge. This shrinks the reachable
surface but leaves a trusted-but-hostile caller in scope.
Risk notes
- Exploited in the wild, three months after the fix. CISA’s KEV listing (2026-09-18, due 2026-09-21) is the reason this tracker was started. The window between fix and listing means the population at risk is not “distros that have not patched” but hosts that have not rebooted onto a June-or-later kernel, plus Ubuntu’s own focal/jammy/noble kernels, still waiting when this tracker was archived, and Proxmox VE 8, which is end of life and will never get it.
- The primitive is a page-cache write, not a heap bug. Like Dirty Pipe, it corrupts a file’s cached contents with no write permission on the file. That makes it unusually reliable for privilege escalation once reached — no race, no heap grooming — which is presumably why it was worth exploiting despite the setup it needs.
- Multi-tenant and container hosts are the exposure. Reaching the
write takes
CAP_NET_ADMINover a bridge plus a locally crafted packet. Any host where an unprivileged user can create namespaces, or where a container holdsNET_ADMIN, is in scope; a single-user workstation running trusted code is not meaningfully exposed even while unpatched. - No “module not present” escape.
ebt_snatis a loadable module (verified on Debian; other distributions build the ebtables targets the same way, though EL may ship them in a separate package) that autoloads when a rule needs it; unless it is explicitly blocked, its absence fromlsmodmeans nothing. - Backports available (CVE-2026-53266): the fix has landed in mainline (7.1-rc7) and in 7.0.13, 6.18.36, 6.12.94, 6.6.143, 6.1.176, 5.15.210, and 5.10.259; distro kernels that have not adopted one of those, or cherry-picked the fix, remain vulnerable.
Verification log
Every verdict in the table above is backed by a checkable source. This log records the provenance — the git reference, advisory, or repository index that established each fact — so any row can be audited or reproduced. Most readers never need it.
Full verification log
Upstream
- Fix commit (
~/src/linux/stable,~/src/linux/net):67ba971ae025(netfilter: bridge: make ebt_snat ARP rewrite writable), authored 2026-05-23 by Yiming Qian,Reported-bythe same, signed off by Florian Westphal and Pablo Neira Ayuso; three insertions innet/bridge/netfilter/ebt_snat.c.- First released in v7.1-rc7:
git describe --contains→v7.1-rc7~20^2~36^2~1, tag date 2026-06-07. - Present on the netdev
nettree (origin/mainis a descendant).
- Introducing commit:
63137bc5882a(netfilter: ebtables: Fixes dropping of small packets in bridge nat), authored 2020-10-14, committed 2020-10-20;describe --contains→v5.10-rc1~40^2~2^2~3, so first in v5.10 (tag date 2020-12-13).- The
.dyadalso records it backported into 5.4.73, 5.8.17, and 5.9.2 (each with a0:0fixed side — those lines were end of life before the fix).
- CVE-2026-53266 (kernel CNA,
~/src/linux/vulnsorigin/master,cve/published/2026/CVE-2026-53266.{json,dyad,cvss,mbox}; record keys on67ba971ae02514d85818fe0c32549ab4bfa3bf49):- Published 2026-06-25 (cve.org
datePublished), last updated 2026-09-19 (CISA ADP enrichment). - Per-branch vulnerable:fixed pairs:
5.10 → 5.10.259,5.10 → 5.15.210,5.10 → 6.1.176,5.10 → 6.6.143,5.10 → 6.12.94,5.10 → 6.18.36,5.10 → 7.0.13,5.10 → 7.1.
- Published 2026-06-25 (cve.org
- Stable backports (subject grep against
~/src/linux/stable, bounded tov<series>..origin/linux-<series>.y; every tag dated 2026-06-19):linux-7.0.y:c9b5ff59feff, released 7.0.13; the branch’s final release is 7.0.14 (origin/linux-7.0.y, 2026-06-27), so the line died fixed. Not listed byfinger_banner, so no table row.linux-6.18.y:b18675263db1, released 6.18.36.linux-6.12.y:153ea96c806a, released 6.12.94.linux-6.6.y:afd64b59c3de, released 6.6.143.linux-6.1.y:b7e91939ba9b, released 6.1.176.linux-5.15.y:76280b78cc9f, released 5.15.210.linux-5.10.y:bf84ad7c7a9e, released 5.10.259.linux-7.1.yandlinux-7.2.yneed no backport: their base tagsv7.1(2026-06-14) andv7.2(2026-08-16) both contain67ba971ae025. 7.1.y is end of life at 7.1.13 perfinger_banner.- The
Linux kernelrows’ Current kernel cells are read from kernel.org’sfinger_banner.
Scoring
- CISA KEV (
known_exploited_vulnerabilities.json, catalogue version 2026.09.18):- Added 2026-09-18, due 2026-09-21, name Linux Kernel Out-of-Bounds
Write Vulnerability, CWE-787,
knownRansomwareCampaignUse: Unknown,forensicTriage: Yes; the notes cite the eight kernel.org fix URLs, the BOD 26-04 and forensic-triage guidance, and the NVD entry — no campaign, no reporter. - CISA ADP on the CVE record: SSVC
Exploitation: active,Automatable: no,Technical Impact: total(timestamp 2026-09-18). - The same day’s batch also added CVE-2025-39682 (kTLS) and CVE-2025-39964 (AF_ALG); unrelated code, not cross-referenced here.
- Added 2026-09-18, due 2026-09-21, name Linux Kernel Out-of-Bounds
Write Vulnerability, CWE-787,
- Kernel CNA (
vulns.git.cvss):- CVSS 3.1 8.8 HIGH
(
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H). AV:L: per the CNA, remote ARP alone cannot create the splice-backed page condition.PR:L: theCAP_NET_ADMINthe rule path needs is reachable through user/network namespaces.S:C: the write corrupts file-backed memory outside the bridge/netfilter boundary.
- CVSS 3.1 8.8 HIGH
(
- NVD (
services.nvd.nist.gov2.0 API): published 2026-06-25, last modified 2026-09-19, status Analyzed; CVSS 3.1 8.8 from the CNA source; CWE-787;cisaExploitAdd2026-09-18,cisaActionDue2026-09-21. - Red Hat (CSAF/VEX
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-53266.json, initial release 2026-06-01, current 2026-09-19):- Aggregate severity Important; vector
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H(7.5). - The description scopes the impact to memory corruption, DoS, or local privilege escalation, limited to systems with ARP-rewriting bridge netfilter rules.
- Red Hat classifies it CWE-825, where NVD and CISA say CWE-787.
workaroundremediation: disable ARP hardware address rewriting in ebtables SNAT rules, or remove ARP-matching SNAT rules on bridges.- The
kernel-rtbuilds are in the samefixedlists as the base kernels.
- Aggregate severity Important; vector
- Ubuntu (
ubuntu.com/security/cves/CVE-2026-53266.json): priority High, published 2026-06-25. - EPSS (api.first.org, 2026-09-19): 0.276%, 20th percentile.
Distributions
- Debian (security tracker
data/json,linuxsource package,scope: local; package-tracker news for migrations; snapshot.debian.orgfirst_seenfor archive dates):- sid resolved,
fixed_version7.0.13-1; the upload was accepted into unstable and first seen in the archive 2026-06-19. - forky (testing) resolved with the same
7.0.13-1; the package tracker records7.0.13-1 MIGRATED to testingon 2026-06-28 (testing had been on7.0.12-2since 2026-06-19). Its Current kernel comes from ftp-master madison, sid’s likewise. - trixie resolved,
fixed_version6.12.94-1, accepted intostable-securityandproposed-updatesand first seen 2026-06-21; the tracker lists it undertrixie-security. Current kernel is thetrixie-securityentry underrepositories. - bookworm resolved,
fixed_version6.1.176-1via DLA-4665-1 (debian-lts-announce), first seen in the archive 2026-07-03; Current kernel is thebookworm-securityentry. Thebookworm-backportslinuxsource package is at or past6.12.94-1~bpo12+1(accepted 2026-06-23) per the suite’sSourcesindex. - bullseye is no longer in the tracker’s
releasesmap (LTS ended 2026-08-31) and has no rows; the prose mention of its last LTS kernels comes from the tracker’s per-CVE fixed-version data (linux 5.10.259-1, DLA-4664-1;linux-6.1 6.1.176-1~deb11u1, DLA-4671-1).
- sid resolved,
- Ubuntu (
ubuntu.com/security/cves/CVE-2026-53266.json, used for the Proxmox base; changelogs.ubuntu.com):- resolute
linux: released in7.0.0-31.31. - noble
linux-hwe-7.0: released in7.0.0-31.31~24.04.1. - noble
linux: pending6.8.0-146.146. - noble
linux-hwe-6.17: needed. - jammy
linux: pending5.15.0-198.208. - jammy
linux-hwe-6.8: pending6.8.0-146.146~22.04.1. - focal: needed.
linux-hwe-6.14: end of life.- The
7.0.0-31.31changelog lists netfilter: bridge: make ebt_snat ARP rewrite writable among its upstream stable changes; the6.8.0-139.139changelog does not.
- resolute
- Proxmox VE (
~/src/proxmox/pve-kernel, pve-no-subscriptionPackages.gz): the default series isproxmox-kernel-7.0(PVE 9, perproxmox-default-kernel2.1.0); Current kernel is the highestproxmox-kernel-<ver>-pve-signedin the trixie index.- PVE 9:
origin/master’sdebian/changelogentry for7.0.14-9(dated 2026-08-05) reads update submodules and patches to Ubuntu-7.0.0-31.31 — Ubuntu’s fixed resolute version — with no CVE-named line for this bug; the fix arrived by rebase, and every later build (through7.0.14-19in git) keeps that base or newer.7.0.14-9and later are published inpve-no-subscription. - PVE 8 reached end of life in 2026-08 (Proxmox VE FAQ lifecycle table, pve.proxmox.com/wiki/FAQ), before this tracker existed.
origin/bookworm-6.8’s changelog namedUbuntu-6.8.0-136.136as its source andUbuntu-6.8.0-139.139for picked commits at the final build, neither carrying the fix, with noebt_snator CVE-2026-53266 line and noebt_snatpatch underpatches/kernel/.- Its last two entries are unnamed “cherry-pick and backport fixes for CVEs” on a Proxmox-maintained submodule snapshot that could not be read from the shared clone, so the verdict rests on changelog, patches, and Ubuntu status — not a source read of the tree.
- Superseded series:
origin/trixie-6.17last built6.17.13-21(2026-07-28) onUbuntu-hwe-6.17-6.17.0-42.42, which Ubuntu marks needed;trixie-6.14last built 2026-05-15.
- PVE 9:
- NixOS (
~/src/nixos/nixpkgs; branch refs from the clone, channels via theirgit-revisionpins;git log -Sonkernels-org.json):packageAliases.linux_default = linux_6_18at every tracked ref.- Each row’s Current kernel is the
6.18versionkernels-org.jsonresolves at that ref. masterbumpedlinux_6_18to 6.18.36 in41efd6153a57, dated 2026-06-19.release-26.05bumped it in95ab4c5c4d3b, dated 2026-06-19.- Channel Fixed since dates come from
scripts/nixos-first-shipped <channel> <commit>. nixos-unstable2026-06-26,nixos-unstable-small2026-06-20 andnixpkgs-unstable2026-06-23, all against41efd6153a57.nixos-26.052026-06-23 andnixos-26.05-small2026-06-20, both against95ab4c5c4d3b.
- Rocky / RHEL family (Red Hat’s CSAF/VEX record; Rocky BaseOS
Packages/k/listings andprimary.xml.gz; OSV):- The record marks RHEL 8, 9, and 10
known_affected. - As of its 2026-09-25 revision it marks RHEL 6
kernelknown_affectedtoo, and lists neither RHEL 6 nor 7 asknown_not_affected. - RHSA-2026:71233 (2026-09-24):
kernel-6.12.0-211.59.1.el10_2, RHEL 10.2. - RHSA-2026:36645 (2026-07-08):
kernel-5.14.0-687.23.1.el9_8, RHEL 9.8. - RHSA-2026:39083 (2026-07-14):
kernel-4.18.0-553.143.1.el8_10, RHEL 8.10. - RHSA-2026:39082 (2026-07-14): RHEL 8
kernel-rt. - RHSA-2026:71687 (products
7Server-ELS): RHEL 7 ELS. - RHSA-2026:71657 (
7Server-RT-ELS): RHEL 7 ELSkernel-rt. - RHSA-2026:36645 and RHSA-2026:71233 list
kernel-rtbuilds under the RT and NFV products (RT-9.8.0.Z.MAIN.EUS,RT-10.2.Z), so the RHEL 9 and 10 real-time kernels are fixed in the base advisories. - The record’s unversioned
red_hat_enterprise_linux_9:kernel-rtentry still sits inknown_affected. - Rocky 10: BaseOS repodata skipped the RHSA-2026:71233 NVR
(
211.59.1.el10_2) and publishedkernel-6.12.0-211.60.1.el10_2instead, dated 2026-09-25 in thePackages/k/listing — the row’s First fixed and Fixed since. - Rocky 9: the
Packages/k/listing shows no687.23.1; the first build past it iskernel-5.14.0-687.24.1.el9_8(2026-07-10), the row’s First fixed and Fixed since. - Rocky 8: the listing shows no
553.143.1; the first build past it iskernel-4.18.0-553.144.1.el8_10(2026-07-14), the row’s First fixed and Fixed since. - Rocky’s
updateinfo.xmlnames no advisory for this CVE, and the errata API search is unreliable, so the mirror listing is the source. - The Rocky rows’ Current kernel NVRs are read from BaseOS
primary.xml.gz(highestver/rel). - AlmaLinux: OSV lists ALSA-2026:36645 (2026-07-08,
5.14.0-687.23.1.el9_8).
- The record marks RHEL 8, 9, and 10
- Amazon Linux (AL2023
updateinfo.xml.gzviascripts/alas-cve,primary.xml.gzfor versions,x86_64mirror):- ALAS2023-2026-1924 (Important, 2026-07-06):
kernel6.1.176-220.358.amzn2023. - ALAS2023-2026-1968 (Important, 2026-07-20):
kernel6.126.12.94-123.174.amzn2023. - ALAS2023-2026-1925 (Important, 2026-07-06):
kernel6.186.18.36-69.134.amzn2023. - Per-stream Current kernel values are read from
primary.xml.gz(highestver/rel).
- ALAS2023-2026-1924 (Important, 2026-07-06):