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

FieldDetail
CVE IDCVE-2026-81000
AliasTUNderflow (the name its PoC and the write-up use)
ComponentKernel: TUN/TAP driver — receive-headroom handling in tun_set_headroom() / tun_get_user() / tun_alloc_skb() (drivers/net/tun.c)
TypeInteger 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
ImpactKernel 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 fix447c9303942c (net: tun: bound receive headroom); first in v7.3-rc1
Introducedeaea34b23c46 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 window4.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
DiscovererAsim Viladi Oglu Manizada (@manizada)
Public disclosure2026-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 PoCmanizada/TUNderflow — a working local-root exploit (Python 3), tuned for Fedora 44 and Ubuntu 24.04.4 kernels
KEV / EPSS / CVSSKernel 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)
ReachabilityTUN/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
RelatedDirtyAH6 (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 in sctp_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 447c9303942c fix — not by being old.

Vulnerable commit range

CommitRoleDescription
eaea34b23c46Introducednet/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.
447c9303942cFixednet: 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.

DistributionReleaseCurrent kernelFirst fixedFixed sinceStatus
Linux kernelmainline7.3-rc77.3-rc12026-08-30✅ Fixed — carries 447c9303942c
Linux kernel7.2.x7.2.117.2.42026-09-07✅ Fixed
Linux kernel6.18.x6.18.576.18.502026-09-07✅ Fixed — LTS
Linux kernel6.12.x6.12.1136.12.1092026-09-07✅ Fixed — LTS
Linux kernel6.6.x6.6.1596.6.1572026-09-14✅ Fixed — LTS
Linux kernel6.1.x6.1.1906.1.1882026-09-14✅ Fixed — LTS
Linux kernel5.15.x5.15.2235.15.2212026-09-14✅ Fixed — LTS
Linux kernel5.10.x5.10.2725.10.2702026-09-14✅ Fixed — LTS
Debiansid (unstable)7.2.11-17.2.6-12026-09-17✅ Fixed
Debianforky (testing)7.2.11-17.2.6-12026-09-23✅ Fixed
Debian13 (trixie)6.12.113-16.12.111-12026-09-29✅ Fixed
Debian12 (bookworm)6.1.190-16.1.190-12026-10-17✅ Fixed — DLA-4841-1
Debian12 (6.12 opt-in)6.12.111-1~deb12u16.12.111-1~deb12u12026-10-02✅ Fixed
Proxmox VE9 (default)7.0.14-247.0.14-192026-09-18✅ Fixed
NixOSmaster6.18.576.18.502026-09-07✅ Fixed
NixOSrelease-26.056.18.576.18.502026-09-07✅ Fixed
NixOSUnstable6.18.566.18.502026-09-08✅ Fixed
NixOSUnstable (small)6.18.576.18.502026-09-08✅ Fixed
NixOSUnstable (nixpkgs)6.18.566.18.502026-09-08✅ Fixed
NixOS26.056.18.566.18.502026-09-09✅ Fixed
NixOS26.05 (small)6.18.576.18.502026-09-08✅ Fixed
Rocky Linux / RHEL106.12.0-211.66.1.el10_26.12.0-211.60.1.el10_22026-09-25✅ Fixed
Rocky Linux / RHEL95.14.0-687.58.1.el9_85.14.0-687.51.1.el9_82026-09-25✅ Fixed
Rocky Linux / RHEL84.18.0-553.174.1.el8_104.18.0-553.168.1.el8_102026-09-24✅ Fixed
Amazon Linux2023 (default)6.1.188-233.3936.1.186-228.3762026-09-18✅ Fixed — ALAS2023-2026-3104
Amazon Linux2023 (6.12 opt-in)6.12.111-136.2046.12.103-129.1972026-09-18✅ Fixed — ALAS2023-2026-3103
Amazon Linux2023 (6.18 opt-in)6.18.54-121.1666.18.48-109.1502026-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.8 and the bookworm-backports opt-in proxmox-kernel-6.14 stay vulnerable, and no fix is coming — upgrade to PVE 9.
  • Abandoned preview series that PVE 9 still publishes, proxmox-kernel-6.17 and proxmox-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-unstable and github:NixOS/nixpkgs/nixos-26.05 follow those channels — the GitHub channel branches are updated to exactly the published channel pins.
  • A bare github:NixOS/nixpkgs with no ref follows master, and github:NixOS/nixpkgs/release-26.05 follows 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 nixpkgs registry input resolves by default to the nixpkgs-unstable channel: 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-rt RHSA-2026:71016).
  • RHEL 7 ELS: RHSA-2026:71687 (kernel-rt RHSA-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 show in ~/src/linux/stable):
    • 447c9303942c439a117d9b76ce6d6e2116b38ee7 — net: tun: bound receive headroom.
    • Authored 2026-08-12 by the discoverer; Reviewed-by Willem de Bruijn; applied by Jakub Kicinski.
    • Touches drivers/net/tun.c only.
    • Carries Fixes: eaea34b23c46 and Cc: stable@vger.kernel.org.
    • git describe --contains → v7.3-rc1~133^2^2~40.
  • Introducing commit (via git show in ~/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.6 tagged 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.13 and finger_banner lists 7.1 as EOL, so the line ended without the fix.
  • Current point releases (via https://www.kernel.org/finger_banner):
    • Current kernel for every Linux kernel row is read from the banner’s per-series line.
  • 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 .json lists drivers/net/tun.c as the only affected file.
    • The .cvss file 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.
  • Scores and lists (via the NVD 2.0 API, Red Hat’s hydra securitydata JSON, 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_score revised 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 still draft.
    • Red Hat threat_severity: revised from Moderate to Important.
    • Red Hat package_state: RHEL 6 kernel fix_state Not 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.4 6.17.0-40-generic), its module and namespace pre-requisites, and the /etc/pam.d/su rewrite.
  • Kernel configuration (via drivers/net/Kconfig in ~/src/linux/stable):
    • CONFIG_NETKIT is a bool option, so netkit is never a loadable module.

Distributions

  • Debian (via the security tracker JSON, the dak madison API, and snapshot.debian.org):
    • Tracker: sid and forky resolved, fixed version 7.2.6-1 for both.
    • Tracker: trixie resolved, fixed version 6.12.111-1 via trixie-security.
    • Tracker: bookworm resolved, fixed version 6.1.190-1 via bookworm-security (DLA-4841-1).
    • Tracker: no bullseye entry (LTS ended 2026-08-31).
    • Tracker: linux-6.12 resolved, fixed version 6.12.111-1~deb12u1 via bookworm-security (DLA-4817-1).
    • sid Fixed since: first_seen of the 7.2.6-1 source files on snapshot.debian.org, 2026-09-17T02:27:04Z.
    • forky Fixed since: 7.2.6-1 migrated to testing 2026-09-23, per tracker.debian.org’s news and snapshot.debian.org’s dists/testing source index.
    • trixie Fixed since: first_seen of the 6.12.111-1 source files on snapshot.debian.org, 2026-09-29T09:48:59Z.
    • bookworm Fixed since: first_seen of the 6.1.190-1 source files on snapshot.debian.org, 2026-10-17T10:13:28Z.
    • linux-6.12 First fixed/Fixed since: its 6.12.111-1~deb12u1 rebuild shares trixie’s fixed 6.12.111 orig tarball, per snapshot.debian.org first_seen 2026-10-02T06:53:03Z.
    • Current kernel per suite is the madison version of linux in sid, forky, trixie/trixie-security, and bookworm/bookworm-security — the -security version where one exists.
    • linux-6.12 is security-archive-only and absent from madison, so its Current kernel comes from snapshot.debian.org instead.
  • Proxmox VE (via pve-no-subscription Packages.gz for trixie, the ~/src/proxmox/pve-kernel changelogs, and Ubuntu’s CVE JSON):
    • proxmox-default-kernel depends on proxmox-kernel-7.0 on trixie.
    • Current kernel is the highest proxmox-kernel-<series> metapackage version in that index.
    • debian/changelog on origin/master (7.0) carries the fix in the 7.0.14-19 entry (“fix CVE-2026-81000: net: tun: bound receive headroom”), dated 2026-09-18; pve-no-subscription now 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.8 carried 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.json in ~/src/nixos/nixpkgs, packageAliases.linux_default in pkgs/top-level/linux-kernels.nix, and scripts/nixos-first-shipped):
    • linux_default is linux_6_18 on both master and release-26.05.
    • The linux_6_18: 6.18.49 -> 6.18.50 bump is 10d202d8cd13 on master, committed 2026-09-07.
    • The same bump is 7098dd935667 on release-26.05, committed 2026-09-07.
    • First channel release containing the bump: nixos-unstable, nixos-unstable-small, nixpkgs-unstable, and nixos-26.05-small on 2026-09-08.
    • First channel release containing the bump: nixos-26.05 on 2026-09-09.
    • Current kernel per row is the 6.18 entry of kernels-org.json at 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_10 and linux_5_15 were removed from master in 84787c67d016, committed 2026-10-06 (“will reach its end of life within 26.11”); release-26.05 still defines both.
  • Rocky Linux / RHEL (via Red Hat’s hydra securitydata JSON, and the Rocky BaseOS x86_64 primary.xml.gz):
    • package_state: plain kernel no longer lists RHEL 7, 8, 9, or 10 as Affected — each has dropped off package_state now that a fixed plain kernel build exists; kernel-rt still shows Affected on RHEL 9 and 10.
    • package_state: RHEL 6 kernel Not affected.
    • hydra affected_release: EL8 fixed via RHSA-2026:71213 (kernel-rt via RHSA-2026:71016), EL9 via RHSA-2026:71232, EL10 via RHSA-2026:71233, RHEL 7 (Extended Lifecycle Support) via RHSA-2026:71687 (kernel-rt via 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), and 6.12.0-211.60.1.el10_2 (uploaded 2026-09-25, one build past the RHSA’s 6.12.0-211.59.1.el10_2 NVR), per the dl.rockylinux.org Packages/k/ directory listings.
    • hydra cvss3.status: verified.
    • Current kernel per release is the highest kernel ver/rel in primary.xml.gz, compared by RPM rules — a release with more numeric segments sorts above 553.el8_10, so a plain sort -V on the raw attribute misorders EL8.
  • Amazon Linux (via cdn.amazonlinux.com/al2023/core/mirrors/latest/x86_64/mirror.list → primary.xml.gz and updateinfo.xml.gz, the latter parsed with scripts/alas-cve):
    • Streams present: kernel (6.1 line), kernel6.12, kernel6.18.
    • Current kernel is the highest ver-rel per stream.
    • alas-cve CVE-2026-81000 lists ALAS2023-2026-3104 (kernel 6.1.186-228.376.amzn2023), ALAS2023-2026-3103 (kernel6.12 6.12.103-129.197.amzn2023), and ALAS2023-2026-3102 (kernel6.18 6.18.48-109.150.amzn2023), each issued 2026-09-18.
    • AL2 excluded — end of support 2026-06-30.

References

SourceURL
Public PoChttps://github.com/manizada/TUNderflow
Disclosure write-uphttps://heyitsas.im/posts/lpe-quartet/
oss-security announcementhttps://www.openwall.com/lists/oss-security/2026/09/18/3
Kernel fixhttps://github.com/torvalds/linux/commit/447c9303942c439a117d9b76ce6d6e2116b38ee7
Introducing commithttps://github.com/torvalds/linux/commit/eaea34b23c46bf17b4a5638be69ab3561854f34b
CVE-2026-81000https://www.cve.org/CVERecord?id=CVE-2026-81000
Sibling tracker — DirtyAH6https://kimmo.cloud/dirtyah6/
Sibling tracker — PPPoEjecthttps://kimmo.cloud/pppoeject/
Sibling tracker — DiagSpillhttps://kimmo.cloud/diagspill/
stable point release bannerhttps://www.kernel.org/finger_banner
Debian security trackerhttps://security-tracker.debian.org/tracker/CVE-2026-81000
Debian package madison (dak-backed)https://api.ftp-master.debian.org/madison?package=linux&s=sid,forky,trixie,bookworm&text=on
Ubuntu security trackerhttps://ubuntu.com/security/CVE-2026-81000
Red Hat CVE pagehttps://access.redhat.com/security/cve/CVE-2026-81000
AlmaLinux erratahttps://errata.almalinux.org/
Amazon Linux ALAShttps://alas.aws.amazon.com/