This tracker is no longer updated. Every maintained upstream stable line carries the fix, as do Debian, 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 — install a fixed kernel and reboot into it.
Summary
| Field | Detail |
|---|---|
| CVE ID | CVE-2026-81000 |
| Alias | TUNderflow (the name its PoC and the write-up use) |
| Component | Kernel: TUN/TAP driver — receive-headroom handling in tun_set_headroom() / tun_get_user() / tun_alloc_skb() (drivers/net/tun.c) |
| Type | Integer underflow leading to an out-of-bounds skb head. A receive headroom stored unchecked in tun->align makes SKB_MAX_HEAD(align) go negative; the value wraps in the size_t linear length, and tun_alloc_skb() places skb->data 64 bytes past the end of a 4,096-byte head, so the packet processing that follows reads and writes outside the allocation |
| Impact | Kernel heap out-of-bounds read/write: a crash (DoS) or, with grooming, local privilege escalation to root — the public PoC sets PIPE_BUF_FLAG_CAN_MERGE on an adjacent pipe buffer and rewrites /etc/pam.d/su. Not remotely reachable. A container holding CAP_NET_ADMIN over its own network namespace can corrupt the host kernel the same way |
| Upstream fix | 447c9303942c (net: tun: bound receive headroom); first in v7.3-rc1 |
| Introduced | eaea34b23c46 in v4.6 (2016) — ndo_set_rx_headroom support for TUN stored the requested headroom without a bound from the start, so every TUN-capable kernel from 4.6 on is in-window |
| Affected window | 4.6 through 7.1 without the backport, and 7.2 before 7.2.4. Fixed in v7.3-rc1 and the 7.2 / 6.18 / 6.12 / 6.6 / 6.1 / 5.15 / 5.10 stable backports — every maintained upstream line carries the fix (per-branch First fixed below). 7.1.y went end-of-life at 7.1.13 without it. Every tracked distribution ships a fixed kernel |
| Discoverer | Asim Viladi Oglu Manizada (@manizada) |
| Public disclosure | 2026-09-18 (oss-security and the write-up); reported to security@kernel.org in mid-July 2026 and held under a linux-distros@ embargo until the agreed publication date |
| Public PoC | manizada/TUNderflow — a working local-root exploit (Python 3), tuned for Fedora 44 and Ubuntu 24.04.4 kernels |
| KEV / EPSS / CVSS | Kernel CNA: CVSS 3.1 7.8 HIGH (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H), mirrored by NVD. Red Hat: 7.8 (AC:L, verified), severity Important — revised up from an initial 7.0 (AC:H), Moderate. Not in KEV; EPSS 0.16% (6th percentile, scored 2026-09-16 — two days before the exploit went public) |
| Reachability | TUN/TAP (/dev/net/tun) plus a network-device path that propagates an oversized receive headroom to it — the PoC stacks a netkit device under VXLAN and an Open vSwitch datapath; the CNA also names OVS/veth/VXLAN and bridge/veth/GRETAP loops — all built with CAP_NET_ADMIN inside an attacker-owned network namespace. Where unprivileged user namespaces are enabled (the default on most distributions) any local user has that; where they are disabled the bug needs a container or process that already holds CAP_NET_ADMIN. See Detection and Mitigation |
| Related | DirtyAH6 (CVE-2026-80844), PPPoEject (CVE-2026-68121), and DiagSpill (CVE-2026-74469) — the other three local-root bugs disclosed by the same researcher in the same announcement. Unrelated code paths, reported together and disclosed under one embargo; 7.2.4, 6.18.50, 6.12.109, 6.6.157, 6.1.188, 5.15.221, and 5.10.270 are the first stable releases to carry all four fixes — each sibling’s own first fix is earlier (see its tracker) |
ℹ️ One of four. The announcement covers four independent bugs — DirtyAH6 in IPv6 AH (
xfrm), TUNderflow in TUN/TAP, PPPoEject in PPPoE, and DiagSpill insctp_diag— each with its own tracker linked above. A kernel build that carries one fix does not necessarily carry the others: the four landed as separate commits, and a distro cherry-pick can take one without the rest. Check each tracker for the kernel you run.
How the exploitation chain works
TUN and TAP are the virtual network devices that carry packets between
the kernel and a userspace process through /dev/net/tun. A device
stacked on top of others can ask the devices below it to reserve extra
receive headroom through the ndo_set_rx_headroom() callback, and
Open vSwitch carries that request from one port of its datapath to the
others — including a TUN or TAP port. Since eaea34b23c46
(v4.6, 2016) TUN honours the request by storing it in tun->align.
tun_get_user(), the write path from userspace into the kernel, uses
tun->align for two things: as the headroom to reserve in front of the
packet, and — through SKB_MAX_HEAD(align), the space left in a
one-page skb head after that much headroom — to decide how many bytes of
the packet to keep linear (good_linear). Nothing bounded align to
what a page can hold. A netkit device configured with 4,096 bytes of
headroom, placed under a VXLAN device on an Open vSwitch
datapath, propagates a 4,160-byte request to a raw TUN port on the same
datapath: SKB_MAX_HEAD(4160) underflows, good_linear becomes
negative, the value wraps when assigned to the size_t linear, and the
prepad + linear / len - linear arithmetic that follows wraps with it.
tun_alloc_skb() then returns an skb whose skb->data sits 64 bytes
past the end of its 4,096-byte head.
Everything downstream of that allocation — the protocol-byte read,
skb_copy_datagram_from_iter() copying the attacker’s frame, and the
receive processing on the OVS side — now reads and writes relative to a
pointer outside the allocation. The copy is an out-of-bounds write of
attacker-controlled bytes, the reads leak kernel memory, and a
misplaced access oopses (eth_type_trans() / __skb_pull() BUG() on
a TAP path, or a plain fault).
The PoC turns the write into root the way several recent kernel
LPEs have: it grooms file-backed pipe buffers next to the bad TUN
packet’s head, uses the Open vSwitch out-of-bounds write to set
PIPE_BUF_FLAG_CAN_MERGE on one of them, and then writes through the
pipe into the page cache of /etc/pam.d/su, replacing pam_rootok.so
with pam_permit.so; su - root then succeeds without a password. All
of the network setup needs only CAP_NET_ADMIN in a network namespace
the attacker owns — which an unprivileged user namespace provides for
free wherever those are enabled.
The fix, 447c9303942c, clamps the stored headroom to what a
one-page skb head and a 16-bit header offset can carry
(min(SKB_MAX_HEAD(0), U16_MAX - 1), less one byte for a raw TUN’s
protocol byte or a full Ethernet header plus NET_IP_ALIGN for TAP),
and makes tun_get_user() pskb_may_pull() those header bytes before
touching them, so a nonlinear skb from another allocation path stays
safe too.
⚠️ Because the introducing commit landed in v4.6 (2016), this is not a recent-regression bug: there is no in-support kernel old enough to be unaffected. Any kernel with TUN/TAP support, from 4.6 up to the fixed point releases below, is in-window. A kernel is safe only by carrying the
447c9303942cfix — not by being old.
Vulnerable commit range
| Commit | Role | Description |
|---|---|---|
eaea34b23c46 | Introduced | net/tun: implement ndo_set_rx_headroom (v4.6, 2016) — tun_set_headroom() stores the requested receive headroom in tun->align with only a NET_SKB_PAD floor and no ceiling, and tun_get_user() sizes the linear part from it. |
447c9303942c | Fixed | net: tun: bound receive headroom — clamps tun->align to the one-page skb-head budget and the largest 16-bit header offset, leaving room for the TUN protocol byte or the TAP Ethernet header, and pulls those bytes before reading them; first released in v7.3-rc1. |
The reachable lifetime runs from v4.6 through v7.1 (and 7.2 before 7.2.4). No in-support kernel predates the flaw, so the only not-affected kernels are those that carry the fix. The three sibling bugs have their own, different windows — see their trackers.
Patch status
A row is Fixed only if its kernel carries the 447c9303942c
backport; every TUN-capable kernel from 4.6 on without it is in-window
and Vulnerable. 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 the package or point
release current when this tracker was retired; First fixed and Fixed
since record the first build carrying the fix and the date it shipped.
| Distribution | Release | Current kernel | First fixed | Fixed since | Status |
|---|---|---|---|---|---|
| Linux kernel | mainline | 7.3-rc7 | 7.3-rc1 | 2026-08-30 | ✅ Fixed — carries 447c9303942c |
| Linux kernel | 7.2.x | 7.2.11 | 7.2.4 | 2026-09-07 | ✅ Fixed |
| Linux kernel | 6.18.x | 6.18.57 | 6.18.50 | 2026-09-07 | ✅ Fixed — LTS |
| Linux kernel | 6.12.x | 6.12.113 | 6.12.109 | 2026-09-07 | ✅ Fixed — LTS |
| Linux kernel | 6.6.x | 6.6.159 | 6.6.157 | 2026-09-14 | ✅ Fixed — LTS |
| Linux kernel | 6.1.x | 6.1.190 | 6.1.188 | 2026-09-14 | ✅ Fixed — LTS |
| Linux kernel | 5.15.x | 5.15.223 | 5.15.221 | 2026-09-14 | ✅ Fixed — LTS |
| Linux kernel | 5.10.x | 5.10.272 | 5.10.270 | 2026-09-14 | ✅ Fixed — LTS |
| Debian | sid (unstable) | 7.2.11-1 | 7.2.6-1 | 2026-09-17 | ✅ Fixed |
| Debian | forky (testing) | 7.2.11-1 | 7.2.6-1 | 2026-09-23 | ✅ Fixed |
| Debian | 13 (trixie) | 6.12.113-1 | 6.12.111-1 | 2026-09-29 | ✅ Fixed |
| Debian | 12 (bookworm) | 6.1.190-1 | 6.1.190-1 | 2026-10-17 | ✅ Fixed — DLA-4841-1 |
| Debian | 12 (6.12 opt-in) | 6.12.111-1~deb12u1 | 6.12.111-1~deb12u1 | 2026-10-02 | ✅ Fixed |
| Proxmox VE | 9 (default) | 7.0.14-24 | 7.0.14-19 | 2026-09-18 | ✅ Fixed |
| NixOS | master | 6.18.57 | 6.18.50 | 2026-09-07 | ✅ Fixed |
| NixOS | release-26.05 | 6.18.57 | 6.18.50 | 2026-09-07 | ✅ Fixed |
| NixOS | Unstable | 6.18.56 | 6.18.50 | 2026-09-08 | ✅ Fixed |
| NixOS | Unstable (small) | 6.18.57 | 6.18.50 | 2026-09-08 | ✅ Fixed |
| NixOS | Unstable (nixpkgs) | 6.18.56 | 6.18.50 | 2026-09-08 | ✅ Fixed |
| NixOS | 26.05 | 6.18.56 | 6.18.50 | 2026-09-09 | ✅ Fixed |
| NixOS | 26.05 (small) | 6.18.57 | 6.18.50 | 2026-09-08 | ✅ Fixed |
| Rocky Linux / RHEL | 10 | 6.12.0-211.66.1.el10_2 | 6.12.0-211.60.1.el10_2 | 2026-09-25 | ✅ Fixed |
| Rocky Linux / RHEL | 9 | 5.14.0-687.58.1.el9_8 | 5.14.0-687.51.1.el9_8 | 2026-09-25 | ✅ Fixed |
| Rocky Linux / RHEL | 8 | 4.18.0-553.174.1.el8_10 | 4.18.0-553.168.1.el8_10 | 2026-09-24 | ✅ Fixed |
| Amazon Linux | 2023 (default) | 6.1.188-233.393 | 6.1.186-228.376 | 2026-09-18 | ✅ Fixed — ALAS2023-2026-3104 |
| Amazon Linux | 2023 (6.12 opt-in) | 6.12.111-136.204 | 6.12.103-129.197 | 2026-09-18 | ✅ Fixed — ALAS2023-2026-3103 |
| Amazon Linux | 2023 (6.18 opt-in) | 6.18.54-121.166 | 6.18.48-109.150 | 2026-09-18 | ✅ Fixed — ALAS2023-2026-3102 |
Linux kernel
The fix reached mainline in v7.3-rc1, through the netdev tree, and has been backported to every maintained stable and long-term line.
7.1.x never received it. The 7.1 line reached end of life before the backport was queued, so every 7.1 release stays vulnerable — move to 7.2 or a long-term line.
To check a tree directly: a fixed tun_set_headroom() (in
drivers/net/tun.c) computes a max_headroom from SKB_MAX_HEAD(0)
and U16_MAX - 1 and stores tun->align through clamp_t(); an
unfixed one assigns the requested value after only a NET_SKB_PAD
floor.
Debian
forky is testing, the future Debian 14. bookworm’s opt-in 6.12 kernel
is the linux-6.12 package in bookworm-security: trixie’s kernel
rebuilt for bookworm.
Debian may fix a suite with a -security upload that cherry-picks the
fix into a build numbered below the upstream first fix, so trust the
security tracker, not the version number. Every suite tracked here
carries the fix: bookworm’s default linux package picked it up as a
Debian LTS upload, since oldstable’s security support has passed from
the regular security team to the LTS team; linux-6.12 carries it via
its 6.12.111-1~deb12u1 rebuild of trixie’s fixed kernel.
bullseye (Debian 11) left LTS support on 2026-08-31, before this bug
was disclosed. Its 5.10-line default kernel and the former linux-6.1
opt-in stay vulnerable, and no fix is coming — upgrade to bookworm or
newer.
Debian’s stock kernels meet the bug’s prerequisites: tun,
openvswitch, and vxlan ship as modules, netkit is built in
(CONFIG_NETKIT=y), and unprivileged user namespaces are enabled by
default (kernel.unprivileged_userns_clone = 1).
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 carries a named
cherry-pick of the fix.
- PVE 8 reached end of life in August 2026, before any fix reached
its kernels. Its default
proxmox-kernel-6.8and thebookworm-backportsopt-inproxmox-kernel-6.14stay vulnerable, and no fix is coming — upgrade to PVE 9. - Abandoned preview series that PVE 9 still publishes,
proxmox-kernel-6.17andproxmox-kernel-6.14, will never get the fix. A host booting one should switch to the default kernel.
TUN/TAP and Open vSwitch are routinely in use on Proxmox hosts: every
VM’s network interface is a TAP device, and openvswitch-switch is a
supported bridge backend. That does not widen who can trigger the
bug — the attacker still needs CAP_NET_ADMIN over a network namespace.
Two audiences have such a namespace:
- an unprivileged LXC container;
- an ordinary shell account on the host, wherever unprivileged user namespaces are enabled — the default in the Ubuntu kernels PVE builds from.
Check the host with the Detection commands rather than assuming either way.
NixOS
Every NixOS channel and branch in the table defaults to
linux_6_18 (linuxPackages), which carries the fix.
nixpkgs also pins the older long-term series
(linux_6_12, linux_6_6, linux_6_1) at fixed releases, so a host
overriding the default is fixed too, as long as it tracks a ref current
enough to have picked up the mid-September bumps.
master dropped linux_5_10 and linux_5_15 outright on 2026-10-06,
ahead of their upcoming upstream end of life; release-26.05 still
defines both, pinned at their own fixed releases.
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
All three EL lines — EL10 (6.12-based), EL9 (5.14-based) and EL8 (4.18-based) — postdate the v4.6 introduction and carry TUN/TAP, so all are in-window. RHEL 6 predates the bug and is not affected.
Red Hat advisories:
- RHEL 10: RHSA-2026:71233.
- RHEL 9: RHSA-2026:71232.
- RHEL 8: RHSA-2026:71213 (
kernel-rtRHSA-2026:71016). - RHEL 7 ELS: RHSA-2026:71687 (
kernel-rtRHSA-2026:71657). Rocky ships no EL7.
On RHEL 9 and 10 the real-time kernel (kernel-rt) is fixed by the
same advisories as the regular kernel; RHEL 8 and 7 have separate
kernel-rt advisories, listed with the kernel’s.
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
All three AL2023 streams — the default kernel package (6.1 line) and
the opt-in kernel6.12 and kernel6.18 packages — are fixed. Amazon
backported the fix into a build numbered below the upstream first-fix
release, so each stream’s ALAS names a fixed NVR below its own current
build.
The CVE cross-reference reached the AL2023 repodata only once Amazon’s mirror snapshot moved forward: the advisories are dated at disclosure, but a repodata check made before that snapshot advance found no cross-reference yet and read the fix as still pending.
Amazon Linux 2 reached end of support on 2026-06-30, before this bug was disclosed. Its kernels, 4.14 on, stay vulnerable, with no fix coming — migrate to AL2023.
Detection
Is the running kernel in the affected window and missing the fix? Every TUN-capable kernel from 4.6 on is in-window; compare the running kernel against the Patch status table’s First fixed column for its series (distro builds below that number can still carry a cherry-pick — the table’s Status is the verdict):
uname -r
Is TUN/TAP available? The bug needs /dev/net/tun. Almost every
distribution ships it as the tun module, autoloaded when anything
opens the device node — VPN clients, QEMU/libvirt, and container
runtimes all do:
ls -l /dev/net/tun
Are the headroom-propagating modules loaded? The public exploit
needs Open vSwitch, VXLAN, and netkit on top of TUN. netkit is built
into the kernel wherever it is enabled (CONFIG_NETKIT cannot be a
module), so only the other three can show up here; a loaded module
means the path is already in use, and an unloaded one is not safety,
since an unprivileged network namespace can trigger its autoload:
lsmod | grep -E '^(tun|openvswitch|vxlan) '
Can an ordinary user create user namespaces? Where they can, every
local user has the CAP_NET_ADMIN the bug needs. user.max_user_namespaces
is the generic knob (0 disables); Debian adds
kernel.unprivileged_userns_clone, and Ubuntu 24.04 and later restrict
unprivileged namespaces through AppArmor
(kernel.apparmor_restrict_unprivileged_userns):
sysctl user.max_user_namespaces kernel.unprivileged_userns_clone kernel.apparmor_restrict_unprivileged_userns 2>/dev/null
Public PoC
The upstream PoC is in manizada/TUNderflow: a Python 3 script
that builds the netkit/VXLAN/Open vSwitch topology in a private user and
network namespace, grooms 4 KiB skb heads next to pipe rings holding a
buffer from /etc/pam.d/su, sends the crafted TUN packets, and then
writes pam_permit.so through the merged pipe before running
su - root. It is tuned for two targets — Fedora 44 with
6.19.10-300.fc44.x86_64 and Ubuntu 24.04.4 with
6.17.0-40-generic — and the author notes that other kernels need their
own grooming parameters, that a misplaced overwrite can hang or crash
the host, and that the exploit modifies /etc/pam.d/su without
rollback. Do not run it on a system you are not authorised to
test, and only in a disposable VM.
Mitigation
The real fix is a patched kernel (the 447c9303942c backport).
Until one is installed, the exposure is narrowed by taking away the
capability or the device path the bug needs — none of these is a fix,
and the researcher explicitly warns that blocking only the PoC’s modules
leaves other paths to the same bug.
Disable unprivileged user namespaces
This removes the ordinary-user path to TUNderflow (and to DirtyAH6 and
PPPoEject) on a multi-user host. It does nothing against a container or
process that already holds CAP_NET_ADMIN, and it breaks software that
relies on user namespaces — rootless container runtimes, Flatpak,
browser sandboxes — so test before rolling it out. The generic knob
(persist it in /etc/sysctl.d/):
sudo sysctl -w user.max_user_namespaces=0
On Debian the dedicated switch is preferable, since it leaves namespaces available to root:
sudo sysctl -w kernel.unprivileged_userns_clone=0
Block the tun module (if you don’t use TUN/TAP)
Where nothing on the host uses TUN/TAP — no VPN client, no VM or
container networking through tap devices — block the module so the
vulnerable code cannot be loaded; install tun /bin/false is surer than
a plain blacklist tun, which only suppresses alias-based autoloading:
echo 'install tun /bin/false' | sudo tee /etc/modprobe.d/tunderflow.conf
Blocking openvswitch the same way cuts the propagation path the public
exploit uses, but the CNA lists bridge/veth/GRETAP loops as alternative
paths, so treat that as a speed bump rather than a mitigation.
Risk notes
- A working exploit has been public since disclosure day. Unlike many kernel CVEs, this one arrived with a tested local-root PoC for two mainstream distributions and a detailed write-up; adapting it to another kernel is grooming work, not research. Treat every in-window multi-user or container host as exploitable now.
- No kernel is too old to be affected. The bug dates from v4.6 (2016). Every in-support distribution kernel, including the RHEL 8 4.18 line and the Amazon Linux 6.1 line, is in-window and unsafe until it carries the backport.
- Backports available (CVE-2026-81000): the fix has landed in
7.3-rc1, 7.2.4, 6.18.50, 6.12.109, 6.6.157, 6.1.188, 5.15.221, and
5.10.270, and every tracked distribution ships it. Any other kernel
that has not adopted one of those releases, or cherry-picked
447c9303942c, is vulnerable. The 7.1.y line is end-of-life without it.
Verification log
Every verdict in the table above is backed by a checkable source. This log records the provenance — the advisory, repository index, or git reference that established each fact — so any row can be audited or reproduced. Most readers never need it.
Full verification log
Upstream
- Fix commit (via
git showin~/src/linux/stable):447c9303942c439a117d9b76ce6d6e2116b38ee7— net: tun: bound receive headroom.- Authored 2026-08-12 by the discoverer;
Reviewed-byWillem de Bruijn; applied by Jakub Kicinski. - Touches
drivers/net/tun.conly. - Carries
Fixes: eaea34b23c46andCc: stable@vger.kernel.org. git describe --contains→v7.3-rc1~133^2^2~40.
- Introducing commit (via
git showin~/src/linux/stable):eaea34b23c46bf17b4a5638be69ab3561854f34b— net/tun: implement ndo_set_rx_headroom, 2016-02-26.git describe --contains→v4.6-rc1~91^2~164^2~1;v4.6tagged 2016-05-15.
- Release tag dates (via
git log -1 --format=%cd <tag>in~/src/linux/stable):v7.3-rc1— 2026-08-30.v7.2.4,v6.18.50,v6.12.109— 2026-09-07.v6.6.157,v6.1.188,v5.15.221,v5.10.270— 2026-09-14.
- Stable backports (via
git log origin/linux-<series>.y --grep=447c9303942c --grep='bound receive headroom'in~/src/linux/stable; one hit per branch, each with the fix’s own subject):- 7.2.y —
0ada54ea63e4. - 6.18.y —
e098d9cc8859. - 6.12.y —
379d85c7f25f. - 6.6.y —
010eee265d6b. - 6.1.y —
18ef24cdb2eb. - 5.15.y —
708e87937de9. - 5.10.y —
ad715e713610. - 7.1.y — no hit; the branch’s last tag is
v7.1.13andfinger_bannerlists 7.1 as EOL, so the line ended without the fix.
- 7.2.y —
- Current point releases (via
https://www.kernel.org/finger_banner):- Current kernel for every
Linux kernelrow is read from the banner’s per-series line.
- Current kernel for every
- CVE record (via
git show origin/master:cve/published/2026/CVE-2026-81000.{dyad,json,cvss}in~/src/linux/vulns):- The dyad holds eight
4.6:eaea34b23c46:<fixed>pairs — 7.3-rc1, 7.2.4, 6.18.50, 6.12.109, 6.6.157, 6.1.188, 5.15.221, 5.10.270 — matching the backports above. - The
.jsonlistsdrivers/net/tun.cas the only affected file. - The
.cvssfile scores CVSS 3.1 7.8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). - Its rationale names the netkit
IFLA_NETKIT_HEADROOM, OVS/veth/VXLAN, and bridge/veth/GRETAP headroom paths.
- The dyad holds eight
- Scores and lists (via the NVD 2.0 API, Red Hat’s hydra
securitydataJSON, the FIRST EPSS API, and the CISA KEV feed):- NVD published the record 2026-09-11; its only metric is the CNA’s 7.8 vector.
- Red Hat:
cvss3_base_scorerevised from 7.0 (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) to 7.8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H), status stilldraft. - Red Hat
threat_severity: revised from Moderate to Important. - Red Hat
package_state: RHEL 6kernelfix_stateNot affected. - EPSS 0.00164 (percentile 0.0599), scored 2026-09-16.
- Not present in the KEV catalogue.
- Disclosure (via the oss-security archive, the researcher’s
write-up, and the PoC README):
- oss-security message 2026/09/18/3, dated 2026-09-18 06:15 UTC, covers all four bugs and names the four fixing commits.
- The message’s per-branch affected ranges for TUNderflow match the dyad.
- The write-up dates the report to security@kernel.org to mid-July 2026 and the agreed publication to 2026-09-18 06:00 UTC.
- The PoC README names its targets (Fedora 44
6.19.10-300.fc44, Ubuntu 24.04.46.17.0-40-generic), its module and namespace pre-requisites, and the/etc/pam.d/surewrite.
- Kernel configuration (via
drivers/net/Kconfigin~/src/linux/stable):CONFIG_NETKITis abooloption, so netkit is never a loadable module.
Distributions
- Debian (via the security tracker JSON, the dak madison API, and
snapshot.debian.org):
- Tracker:
sidandforkyresolved, fixed version7.2.6-1for both. - Tracker:
trixieresolved, fixed version6.12.111-1viatrixie-security. - Tracker:
bookwormresolved, fixed version6.1.190-1viabookworm-security(DLA-4841-1). - Tracker: no
bullseyeentry (LTS ended 2026-08-31). - Tracker:
linux-6.12resolved, fixed version6.12.111-1~deb12u1viabookworm-security(DLA-4817-1). - sid Fixed since:
first_seenof the7.2.6-1source files on snapshot.debian.org, 2026-09-17T02:27:04Z. - forky Fixed since:
7.2.6-1migrated to testing 2026-09-23, per tracker.debian.org’s news and snapshot.debian.org’sdists/testingsource index. - trixie Fixed since:
first_seenof the6.12.111-1source files on snapshot.debian.org, 2026-09-29T09:48:59Z. - bookworm Fixed since:
first_seenof the6.1.190-1source files on snapshot.debian.org, 2026-10-17T10:13:28Z. linux-6.12First fixed/Fixed since: its6.12.111-1~deb12u1rebuild shares trixie’s fixed6.12.111orig tarball, per snapshot.debian.orgfirst_seen2026-10-02T06:53:03Z.- Current kernel per suite is the madison version of
linuxinsid,forky,trixie/trixie-security, andbookworm/bookworm-security— the-securityversion where one exists. linux-6.12is security-archive-only and absent from madison, so its Current kernel comes from snapshot.debian.org instead.
- Tracker:
- Proxmox VE (via
pve-no-subscriptionPackages.gzfortrixie, the~/src/proxmox/pve-kernelchangelogs, and Ubuntu’s CVE JSON):proxmox-default-kerneldepends onproxmox-kernel-7.0on trixie.- Current kernel is the highest
proxmox-kernel-<series>metapackage version in that index. debian/changelogonorigin/master(7.0) carries the fix in the7.0.14-19entry (“fix CVE-2026-81000: net: tun: bound receive headroom”), dated 2026-09-18;pve-no-subscriptionnow publishes that build.- 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.8carried no CVE-2026-81000 or TUN headroom cherry-pick at its final build.- Ubuntu’s tracker marks the 6.8 base needed.
- Series last updated before the disclosure, without the fix:
trixie
proxmox-kernel-6.17(changelog head 2026-07-28) and-6.14(2026-05-15).
- NixOS (via
channels.nixos.org/<channel>/git-revision→pkgs/os-specific/linux/kernel/kernels-org.jsonin~/src/nixos/nixpkgs,packageAliases.linux_defaultinpkgs/top-level/linux-kernels.nix, andscripts/nixos-first-shipped):linux_defaultislinux_6_18on bothmasterandrelease-26.05.- The
linux_6_18: 6.18.49 -> 6.18.50bump is10d202d8cd13onmaster, committed 2026-09-07. - The same bump is
7098dd935667onrelease-26.05, committed 2026-09-07. - First channel release containing the bump:
nixos-unstable,nixos-unstable-small,nixpkgs-unstable, andnixos-26.05-smallon 2026-09-08. - First channel release containing the bump:
nixos-26.05on 2026-09-09. - Current kernel per row is the
6.18entry ofkernels-org.jsonat that ref. - The 6.12, 6.6, and 6.1 entries at every tracked ref are at or above their branches’ first-fixed releases.
linux_5_10andlinux_5_15were removed frommasterin84787c67d016, committed 2026-10-06 (“will reach its end of life within 26.11”);release-26.05still defines both.
- Rocky Linux / RHEL (via Red Hat’s hydra
securitydataJSON, and the Rocky BaseOSx86_64primary.xml.gz):package_state: plainkernelno longer lists RHEL 7, 8, 9, or 10 as Affected — each has dropped offpackage_statenow that a fixed plainkernelbuild exists;kernel-rtstill shows Affected on RHEL 9 and 10.package_state: RHEL 6kernelNot affected.- hydra
affected_release: EL8 fixed via RHSA-2026:71213 (kernel-rtvia RHSA-2026:71016), EL9 via RHSA-2026:71232, EL10 via RHSA-2026:71233, RHEL 7 (Extended Lifecycle Support) via RHSA-2026:71687 (kernel-rtvia RHSA-2026:71657). - Rocky’s BaseOS builds now reach the EL8, EL9, and EL10 NVRs:
4.18.0-553.168.1.el8_10(uploaded 2026-09-24),5.14.0-687.51.1.el9_8(uploaded 2026-09-25), and6.12.0-211.60.1.el10_2(uploaded 2026-09-25, one build past the RHSA’s6.12.0-211.59.1.el10_2NVR), per thedl.rockylinux.orgPackages/k/directory listings. - hydra
cvss3.status:verified. - Current kernel per release is the highest
kernelver/relinprimary.xml.gz, compared by RPM rules — a release with more numeric segments sorts above553.el8_10, so a plainsort -Von the raw attribute misorders EL8.
- Amazon Linux (via
cdn.amazonlinux.com/al2023/core/mirrors/latest/x86_64/mirror.list→primary.xml.gzandupdateinfo.xml.gz, the latter parsed withscripts/alas-cve):- Streams present:
kernel(6.1 line),kernel6.12,kernel6.18. - Current kernel is the highest
ver-relper stream. alas-cve CVE-2026-81000lists ALAS2023-2026-3104 (kernel6.1.186-228.376.amzn2023), ALAS2023-2026-3103 (kernel6.126.12.103-129.197.amzn2023), and ALAS2023-2026-3102 (kernel6.186.18.48-109.150.amzn2023), each issued 2026-09-18.- AL2 excluded — end of support 2026-06-30.
- Streams present: