Summary

FieldDetail
CVE IDCVE-2026-68138
AliasNone — neither the kernel CNA record nor the public PoC gives it a nickname
ComponentKernel: net/sched rate-table management — the process-global qdisc_rtab_list and the non-atomic refcount mutated by qdisc_get_rtab() / qdisc_put_rtab() (net/sched/sch_api.c)
TypeRace condition → use-after-free / double-free of a struct qdisc_rate_table (a 1056-byte object from kmalloc-2k)
ImpactKernel heap corruption reachable locally and weaponised to local privilege escalation to root — a public exploit (aramosf/CVE-2026-68138) escalates an unprivileged user to root. Also a repeatable KASAN slab-UAF / double-free that panics the kernel (DoS)
Upstream fixf43ee0c0730d (net/sched: serialize qdisc_rtab_list against concurrent get/put); first in v7.2-rc5, backported to stable 7.1.6 (fb29e1b41052). Adds a dedicated qdisc_rtab_lock spinlock
Introduced470502de5bdb (net: sched: unlock rules update API) in v5.1 — the unlocked classifier path that lets cls_flower reach qdisc_get_rtab()/qdisc_put_rtab() without the RTNL mutex. The rate-table code is older, but the race only became reachable here
Affected window5.1 through 7.1.5 (and 7.2 before -rc5) without the fix. Fixed in v7.2-rc5 and the 7.1.6 stable release — no other stable line has the backport yet (per-branch First fixed below)
DiscovererA. Ramos (@aramosf) — research and public exploit
Public disclosure2026-08-10 (CVE published by the kernel CNA); PoC repository published 2026-08-12
Public PoCYes — a complete working exploit. aramosf/CVE-2026-68138 ships exploit.c, escalating uid=1000 to root in the initial namespace; the author reports it reproduced against Ubuntu 22.04 GA (5.15.0-187)
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); Red Hat scores it 7.0 HIGH (AV:L/AC:H/…), differing only on attack complexity. NVD carries the CNA score (status Received, no independent analysis yet). Not in KEV; EPSS ~0.13%. See Scoring below
ReachabilityA local trigger only. It needs the cls_flower classifier and act_police action (both autoload on a tc … flower … action police command), at least two CPUs to win the race, and CAP_NET_ADMIN in a network namespace. An unprivileged user obtains that with unshare -Urn where unprivileged user namespaces are enabled; a process or container already holding CAP_NET_ADMIN reaches it directly. The vulnerable code is built into every kernel with CONFIG_NET_SCHED — there is no “module not present” escape

⚠️ A local root exploit is public and most distributions are unpatched. The fix shipped upstream in v7.2-rc5 and the 7.1.6 stable release, but at the time of writing no maintained 6.x or 5.x stable line carries the backport, and no Debian, Ubuntu, Proxmox, NixOS, Rocky/RHEL, or Amazon Linux kernel has shipped a fix. Red Hat has marked RHEL 9 and 10 “Will not fix.” Treat any multi-tenant or container host where unprivileged users or containers can reach CAP_NET_ADMIN as directly exposed, and prioritise the mitigations below until a patched kernel is available.

How the exploitation chain works

qdisc_get_rtab() and qdisc_put_rtab() manage a single process-global singly linked list, qdisc_rtab_list, and a plain non-atomic int refcnt on each struct qdisc_rate_table. That was only ever safe because every caller held the RTNL mutex, which serialised all rate-table lookups, inserts, and frees.

That invariant broke when the classifier-update path was unlocked. Since cls_flower sets TCF_PROTO_OPS_DOIT_UNLOCKED, tc_new_tfilter() keeps rtnl_held == false for it and sets TCA_ACT_FLAGS_NO_RTNL. That flag propagates through tcf_exts_validate_ex()tcf_action_init()tcf_action_init_1()tcf_police_init(), which calls qdisc_get_rtab() / qdisc_put_rtab() with the RTNL mutex not held. Two RTM_NEWTFILTER requests on different CPUs, each adding a flower filter with a police action carrying the same rate table, then race on qdisc_rtab_list and on the non-atomic refcount:

BUG: KASAN: slab-use-after-free in qdisc_put_rtab+0x12f/0x160
 qdisc_put_rtab+0x12f/0x160
 tcf_police_init+0xda9/0x1590
 tcf_action_init_1+0x460/0x6b0
 tcf_action_init+0x439/0xa40
 tcf_exts_validate_ex+0x42d/0x550
 fl_change+0xddd/0x7da0
 tc_new_tfilter+0xaa7/0x2420
 rtnetlink_rcv_msg+0x95e/0xe90

The corrupted object is a ~1056-byte struct qdisc_rate_table from the kmalloc-2k slab, and because qdisc_rtab_list is a single global (not per-netns), the damage is shared system-wide. From that use-after-free / double-free the public exploit builds a five-stage chain to root:

  1. Win the race. Worker threads in separate network namespaces install flower filters with police actions carrying identical rates, racing qdisc_get_rtab()/qdisc_put_rtab() until the rate table is freed with a dangling reference still live.
  2. Reclaim the freed object. A classic-BPF filter program whose instruction buffer lands in kmalloc-2k reoccupies the freed rate-table slot with attacker-controlled bytes.
  3. Leak. The alias is turned into a pipe_buffer disclosure, leaking live kernel pointers (a page and an ops pointer).
  4. Overwrite. A forged, mergeable pipe buffer appends attacker bytes to the page-cache page backing /sbin/modprobe.
  5. Root. Opening a socket with an unsupported protocol triggers a module-load, running the overwritten modprobe as root.

The fix, f43ee0c0730d, protects qdisc_rtab_list and the refcount with a dedicated qdisc_rtab_lock spinlock. The sleeping GFP_KERNEL allocation in qdisc_get_rtab() is done before the lock is taken; if a concurrent inserter added an identical table meanwhile, the freshly allocated one is freed under the lock, so no duplicate leaks.

ℹ️ The race began at v5.1, not with the rate-table code itself. qdisc_get_rtab()/qdisc_put_rtab() are far older, but they were safe as long as every caller held the RTNL mutex. The unlocked classifier path (470502de5bdb, v5.1) is what let cls_flower reach them concurrently — so a kernel whose net/sched predates that path is genuinely not affected, while every maintained line from 5.1 onward is in-window until it carries the fix.

Vulnerable commit range

CommitRoleDescription
470502de5bdbIntroducednet: sched: unlock rules update API (v5.1, 2019) — makes cls_flower TCF_PROTO_OPS_DOIT_UNLOCKED, so tcf_police_init() can reach qdisc_get_rtab()/qdisc_put_rtab() without RTNL, exposing the unlocked global list + refcount to a race.
f43ee0c0730dFixednet/sched: serialize qdisc_rtab_list against concurrent get/put — adds a dedicated qdisc_rtab_lock spinlock around the list and the refcount; first released in v7.2-rc5, backported to stable 7.1.6 as fb29e1b41052.

The reachable window runs from v5.1 through v7.1.5 (and 7.2 before -rc5). A kernel is safe only by carrying the fix, or by predating the v5.1 unlocked-classifier path.

Patch status

A row is Fixed only if its kernel carries the f43ee0c0730d / fb29e1b41052 fix — a release at or past 7.2-rc5 / 7.1.6, or an explicit distro backport. Every maintained 6.x or 5.x line is in-window and, at the time of writing, still Vulnerable: the fix has not been backported below 7.1.6. 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. First fixed and Fixed since stay until a row is fixed.

DistributionReleaseCurrent kernelFirst fixedFixed sinceStatus
Linux kernelmainline7.27.2-rc52026-07-26✅ Fixed — carries f43ee0c0730d
Linux kernel7.1.x7.1.97.1.62026-08-03✅ Fixed
Linux kernel6.18.x6.18.45❌ Vulnerable — LTS, no backport
Linux kernel6.12.x6.12.104❌ Vulnerable — LTS
Linux kernel6.6.x6.6.152❌ Vulnerable — LTS
Linux kernel6.1.x6.1.183❌ Vulnerable — LTS
Linux kernel5.15.x5.15.216❌ Vulnerable — LTS
Linux kernel5.10.x5.10.265❌ Vulnerable — LTS
Debiansid (unstable)7.1.8-27.1.6-12026-08-04✅ Fixed
Debianforky (testing)7.1.8-17.1.6-12026-08-17✅ Fixed
Debian13 (trixie)6.12.101-1❌ Vulnerable — no DSA yet
Debian12 (bookworm)6.1.180-1❌ Vulnerable — no DSA yet
Debian11 (bullseye, LTS)5.10.262-1❌ Vulnerable — no DSA yet
Proxmox VE9 (default)7.0.14-12-pve❌ Vulnerable
Proxmox VE8 (default)6.8.12-42-pve❌ Vulnerable
NixOSmaster6.18.45❌ Vulnerable
NixOSrelease-26.056.18.45❌ Vulnerable
NixOSUnstable6.18.44❌ Vulnerable
NixOSUnstable (small)6.18.45❌ Vulnerable
NixOSUnstable (nixpkgs)6.18.44❌ Vulnerable
NixOS26.056.18.44❌ Vulnerable
NixOS26.05 (small)6.18.45❌ Vulnerable
Rocky Linux / RHEL106.12.0-211.47.1.el10_2❌ Vulnerable — RHEL won’t fix
Rocky Linux / RHEL95.14.0-687.39.1.el9_8❌ Vulnerable — RHEL won’t fix
Rocky Linux / RHEL84.18.0-553.156.1.el8_10❌ Vulnerable — no fix available
Amazon Linux2023 (default)6.1.180-225.360❌ Vulnerable — no ALAS yet
Amazon Linux2023 (6.12 opt-in)6.12.95-124.187❌ Vulnerable — no ALAS yet
Amazon Linux2023 (6.18 opt-in)6.18.41-94.142❌ Vulnerable — no ALAS yet

Linux kernel

The fix reached Linus in v7.2-rc5 (tagged 2026-07-26) and was backported to the 7.1.6 stable release (fb29e1b41052, tagged 2026-08-03). No other stable line carries it. The 6.18, 6.12, 6.6, 6.1, 5.15, and 5.10 long-term lines are all in-window — the race was introduced at v5.1 and each of these is past that — and none has picked up the backport, so a host on any current point release of those lines is vulnerable and stays so until its branch takes the fix, most likely in a later stable batch. These unpatched long-term lines are the bulk of the exposure, because nearly every distribution ships from one of them.

Debian

Debian’s status splits on which upstream branch each suite tracks. sid follows the 7.1 line and has been fixed since the 7.1.6-1 upload (7.1.6 is the branch’s first-fixed release), first seen in the archive 2026-08-04. testing (forky, the future Debian 14) likewise tracks the 7.1 line: it jumped straight from the vulnerable 6.12.94-1 to 7.1.8-1 when that kernel migrated on 2026-08-17 — the suite’s first kernel past the 7.1.6 first fix — so it is fixed too.

Every Debian stable suite is still vulnerable, because each rides an unpatched line: trixie (Debian 13) rides the 6.12 line, bookworm (Debian 12) the 6.1 line, and bullseye (Debian 11 LTS) the 5.10 line. None of those stable lines has the backport, and the Debian security tracker marks all three suites open with no DSA issued. They will follow once the 6.12.y / 6.1.y / 5.10.y stable lines gain the fix or Debian cherry-picks it. The bookworm linux-6.12 and bullseye linux-6.1 opt-in kernels rebuild the same still-unpatched source lines, so they are vulnerable too.

The vulnerable path relies on the cls_flower and act_police modules, which Debian ships and autoloads on demand; no default configuration blocks them.

Proxmox VE

Proxmox ships its own Ubuntu-derived kernels, so Debian’s status does not carry over. Both maintained series are vulnerable: PVE 9’s default proxmox-kernel-7.0 and PVE 8’s default proxmox-kernel-6.8. Neither carries a net/sched cherry-pick in its packaging, and Ubuntu’s security tracker marks every 7.0 and 6.8 kernel needed (no fixed build yet), so the silent-rebase path has not delivered the fix either. A Proxmox kernel turns fixed only once its Ubuntu base ships the patch or Proxmox cherry-picks it.

PVE 9 and PVE 8 also still publish older opt-in / preview kernel series (proxmox-kernel-6.17, -6.14 and the like) that ride equally unpatched Ubuntu bases; a host booting one of those is vulnerable until it moves to a fixed kernel.

NixOS

Every tracked ref’s default linuxPackages is linux_6_18 — a 6.18.y release with no backport, so every tracked ref is vulnerable. Kernel updates land on nixpkgs master and release-26.05 first, and each channel republishes them once its Hydra jobset passes; the -small channels (nixos-unstable-small, nixos-26.05-small) are gated on a reduced jobset and typically lead their siblings. The nixpkgs-unstable channel — what a bare nixpkgs flake registry input resolves to — is a separate channel aimed at non-NixOS Nix users and can hold a different kernel from nixos-unstable.

nixpkgs does package a fixed linux_7_1 (past the 7.1.6 first fix), but it is not the default; a host stays vulnerable unless it explicitly overrides boot.kernelPackages to a fixed series. Overriding to an older series (linux_6_1 / linux_5_15 / linux_5_10) is likewise vulnerable.

Rocky Linux / RHEL family

RHEL-family kernels are long-lived forks. Red Hat’s CVE record (CSAF/VEX, initial release 2026-08-10, CVSS 7.0) marks RHEL 8, 9, and 10 affected — their kernels carry the unlocked-classifier path — and ships no fix: RHEL 9 and RHEL 10 are flagged “Will not fix”, and RHEL 8 has no fix available, with no RHSA. So every in-support EL stream is vulnerable and, per Red Hat’s stated intent, is expected to stay that way. Red Hat offers no written rationale, but scopes the impact to a system-wide denial of service and rates the flaw Moderate, with no mention of privilege escalation — a lower assessment than the demonstrated local-root exploit, and the basis for declining to backport a fix. Rocky rebuilds RHEL unchanged, so its status tracks Red Hat’s; AlmaLinux (typically the fastest rebuild) has published no erratum either. Oracle Linux and CloudLinux track the RHEL determination.

RHEL 6 and RHEL 7 are not affected — their 2.6.32 / 3.10 kernels predate the v5.1 unlocked-classifier path, so Red Hat records them known_not_affected. Both are end-of-life and out of scope here. The niche kernel-rt real-time kernel shares the base kernel’s exposure.

Because Red Hat does not plan a fix, the practical response on EL hosts is the mitigations below — in particular restricting unprivileged user namespaces, which several EL deployments already do.

Amazon Linux

No ALAS has been issued for this CVE, so every AL2023 kernel stream is vulnerable: the default kernel (the 6.1 line) and the kernel6.12 and kernel6.18 opt-ins. All three are in-window without the backport; each turns fixed only when Amazon ships a cherry-pick or the stream crosses a fixed upstream release. Amazon Linux 2 reached end of support on 2026-06-30 and is not tracked.

Detection

Is the running kernel in the affected window and missing the fix? Every kernel from v5.1 up to the fixed releases is in-window. Compare the running kernel against the Patch status table’s First fixed column for its series — only 7.2-rc5+ / 7.1.6+ (or a distro backport) is fixed:

uname -r

Can an unprivileged user reach CAP_NET_ADMIN? The unprivileged local path in the public exploit 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:

sysctl kernel.unprivileged_userns_clone user.max_user_namespaces

Are the classifier and action modules available? The race needs cls_flower and act_police, which autoload on a matching tc command. modinfo takes several module names and prints the on-disk path of each (an error for any that is absent):

modinfo -F filename cls_flower act_police

Is this a multi-tenant or container host? Any context where an unprivileged user, or a container holding CAP_NET_ADMIN (for example one run with --cap-add=NET_ADMIN or a privileged pod), can issue tc commands is directly exposed, 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 a public working exploit. aramosf/CVE-2026-68138 ships exploit.c, a self-contained program that escalates an unprivileged user (uid=1000) to root in the initial namespace by driving the qdisc race and the five-stage chain described above. The author reports it reproduced against Ubuntu 22.04 GA (5.15.0-187) in a VM, and that the vulnerable code is present in Ubuntu 22.04 HWE, 24.04, and 26.04 kernels (with the specific chain tuned for the 5.15 target).

The exploit needs a fairly specific environment — x86-64, at least four vCPUs, unprivileged user and network namespaces enabled, the NET_CLS_FLOWER / NET_CLS_ACT / NET_ACT_POLICE config options, roughly 5 GiB of RAM, and a per-process file-descriptor limit of at least 4096 — but those are ordinary defaults on many desktop and server kernels. A working exploit being public means this should be treated as exploited-in-practice, not theoretical: patch or apply the mitigations below.

Mitigation

The real fix is a patched kernel (a release at or past 7.2-rc5 / 7.1.6, or a distro backport of f43ee0c0730d). Until one is installed, the exposure can be narrowed — none of these is a fix.

Restrict unprivileged user namespaces

The unprivileged local path depends on user namespaces to obtain CAP_NET_ADMIN. 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-68138.conf

On kernels without that Debian/Ubuntu knob, cap the count instead:

sudo sysctl -w user.max_user_namespaces=0

Block the classifier and action modules

Where tc flower filtering with a police action is not used, blocking the modules removes the datapath — including for a privileged or container caller, which the user-namespace knob does not. install … /bin/false is surer than a plain blacklist, which only suppresses alias autoloading:

printf 'install cls_flower /bin/false\ninstall act_police /bin/false\n' | sudo tee /etc/modprobe.d/cve-2026-68138.conf

That rule only prevents future autoload — it does not remove a module already resident. Where the modules are loaded but idle, unload them so the block takes effect now:

sudo modprobe -r act_police cls_flower

A module that is genuinely in use cannot be unloaded, and on a host actively running tc flower+police you could not block it without breaking that service — so there the rule has no effect until the workload stops (or a reboot with the rule already in place). It is likewise inert if either module is built into the kernel (=y) rather than loadable; the modinfo check above prints a .ko path only for a loadable module.

Only do this where flower-based traffic control is genuinely unused; some container networking, QoS, and SDN stacks rely on it and must fall back to the other measures.

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 run tc. This shrinks the reachable surface but leaves a trusted-but-hostile caller in scope.

Risk notes

  • Multi-tenant and container hosts are the exposure. The demonstrated impact is local privilege escalation to root, so any host where an unprivileged user or a container can reach CAP_NET_ADMIN and run tc is directly in scope — a public exploit exists.
  • Distributions are broadly unpatched. The fix reached only mainline and the 7.1 stable line; every maintained 6.x / 5.x line, and every tracked distribution kernel, is still vulnerable at the time of writing. Check the First fixed column, not the kernel’s age.
  • Red Hat does not plan a fix. RHEL 9 and 10 are marked “Will not fix” and RHEL 8 has no fix available, so EL hosts should rely on the mitigations rather than waiting for an RHSA.
  • No “module not present” escape. Unlike some kernel CVEs, the vulnerable code is core net/sched (built in with CONFIG_NET_SCHED); only cls_flower / act_police are modules, and they autoload on demand. Reachability turns on CAP_NET_ADMIN and user namespaces, not on whether a module is already loaded.

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

  • The fix is f43ee0c0730d (net/sched: serialize qdisc_rtab_list against concurrent get/put), first released in v7.2-rc5 (git describe --containsv7.2-rc5~27^2~47, tag date 2026-07-26, via ~/src/linux/stable / ~/src/linux/net). It adds a dedicated qdisc_rtab_lock spinlock around qdisc_rtab_list and the refcount.
  • The race was introduced by 470502de5bdb (net: sched: unlock rules update API) in v5.1 (describe --containsv5.1-rc1~178^2~254^2, commit date 2019-02-12) — the unlocked classifier-update path. Kernels whose net/sched predates it are not affected.
  • CVE-2026-68138 assigned by the kernel CNA (confirmed via vulns.git origin/master, cve/published/2026/CVE-2026-68138.{json,dyad,cvss}; record keys on f43ee0c0730d6191629b5ee1ceae27b1ebfdc047). The .dyad’s only vulnerable:fixed pairs are 5.1 → 7.1.6 and 5.1 → 7.2-rc5 — there is no 6.x / 5.x stable backport.
  • Stable backport: the fix is present on origin/linux-7.1.y as fb29e1b41052 (subject grep against ~/src/linux/stable), released in 7.1.6 (tag date 2026-08-03). It is absent from origin/linux-6.18.y, -6.12.y, -6.6.y, -6.1.y, -5.15.y, and -5.10.y (subject grep returns nothing), confirming those lines are in-window but unpatched. The Linux kernel rows’ Current kernel cells are read from kernel.org’s finger_banner.

Scoring

  • Kernel CNA (vulns.git .cvss/.json, origin/master): CVSS 3.1 7.8 HIGH (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). AV:L because the trigger is local RTM_NEWTFILTER rtnetlink messages; PR:L because the non-GET rtnetlink handler needs CAP_NET_ADMIN, which an unprivileged user obtains namespaced via unshare -Urn.
  • Red Hat (CSAF/VEX, initial release 2026-08-10): CVSS 3.1 7.0 HIGH (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H), impact Moderate — the same local vantage, scoring AC:H for the race window rather than the CNA’s AC:L. The VEX carries no free-text statement; its description scopes the impact to a system-wide denial of service with no mention of privilege escalation. Base-kernel remediation is no_fix_planned (“Will not fix”) for RHEL 9 and 10 and none_available (“Affected”) for RHEL 8; across all 276 affected products, 182 are will-not-fix, 51 affected, and 43 vulnerable_code_not_present.
  • NVD / EPSS / KEV: NVD record status Received (its listed CVSS 3.1 mirrors the CNA score rather than an independent NVD assessment); published 2026-08-10, last modified 2026-08-17; no CWE assigned. EPSS ~0.13% (~3rd percentile, via api.first.org); not in CISA KEV.

Distributions

  • Debian (security tracker data/json, linux source package, scope: local):
    • sid resolved fixed; the tracker’s fixed version for unstable is 7.1.6-1 (the 7.1 branch’s first-fixed release), first seen in the archive 2026-08-04 per snapshot.debian.org.
    • forky (testing) resolved fixed (ftp-master madison shows the 7.1 kernel in testing); the suite migrated straight from the vulnerable 6.12.94-1 to 7.1.8-1 on 2026-08-17 (snapshot.debian.org still showed 6.12.94-1 in testing at 18:00 UTC that day).
    • trixie open — the 6.12.y line carries no backport.
    • bookworm open — 6.1.y unpatched.
    • bullseye open — 5.10.y unpatched.
    • The stable suites’ Current kernel values are the <suite>-security entries under the tracker’s repositories; sid’s and forky’s come from ftp-master madison.
    • No DSA issued for any suite; urgency “not yet assigned”. The linux-6.12 / linux-6.1 opt-in source packages have no separate tracker entry and rebuild the same unpatched lines.
  • Ubuntu (ubuntu.com/security/CVE-2026-68138.json, used for the Proxmox base): every supported release (focal, jammy, noble, resolute) and the HWE stacks are marked needed — no fixed binary package and no USN. bionic/xenial/trusty are not-affected (pre-5.1). The feed’s “upstream: released” entry also cites 6.8.y, 6.17.y, and 7.0.y alongside 7.2-rc5; a direct read of net/sched/sch_api.c on ~/src/linux/stable’s origin/linux-6.8.y, -6.17.y, and -7.0.y (all frozen at their final release, no qdisc_rtab_lock) shows none of the three actually carries the fix, so this is not read as a fix path for the Proxmox rows below.
  • Proxmox VE (~/src/proxmox/pve-kernel, pve-no-subscription Packages.gz): the default series are proxmox-kernel-7.0 (PVE 9) and proxmox-kernel-6.8 (PVE 8); their Current kernel builds are read from the pve-no-subscription Packages.gz. No qdisc_rtab / “serialize qdisc_rtab” patch in patches/kernel/ on master, bookworm-6.8, or the preview branches, and Ubuntu marks both 7.0 and 6.8 needed, so neither the named-cherry-pick nor the silent-rebase path has shipped the fix.
  • NixOS (~/src/nixos/nixpkgs): packageAliases.linux_default = linux_6_18 at every tracked ref, all still on the unpatched 6.18.y line — so master, release-26.05, nixos-unstable(-small), nixpkgs-unstable, and nixos-26.05(-small) are all vulnerable. Each row’s Current kernel is the 6.18 version kernels-org.json resolves at that ref (branch refs from the clone, channels via their git-revision pins). A linux_7_1 package exists and is fixed, but is not the default.
  • Rocky / RHEL family: Red Hat’s CSAF/VEX record (security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68138.json, initial release 2026-08-10) marks RHEL 8/9/10 known_affected with remediation no_fix_planned for RHEL 9/10 (“Will not fix”) and none_available for RHEL 8 — no vendor_fix, no RHSA. RHEL 6/7 and OCP4 are known_not_affected (vulnerable_code_not_present). The Rocky rows’ Current kernel NVRs are read from BaseOS repodata (primary.xml.gz, highest rel). No AlmaLinux erratum (OSV).
  • Amazon Linux: no ALAS for CVE-2026-68138 in the AL2023 updateinfo.xml.gz. The per-stream Current kernel values (default kernel, kernel6.12, kernel6.18) are read from primary.xml.gz — all in-window without the backport.

References

SourceURL
Public PoC (A. Ramos)https://github.com/aramosf/CVE-2026-68138
Kernel fix (v7.2-rc5)https://git.kernel.org/stable/c/f43ee0c0730d6191629b5ee1ceae27b1ebfdc047
Stable backport (7.1.6)https://git.kernel.org/stable/c/fb29e1b41052488ee3f2d115d4a870497ebd7f7d
Introducing commit (v5.1)https://git.kernel.org/stable/c/470502de5bdb1ed0def643a4458593a40b8f6b66
CVE-2026-68138https://www.cve.org/CVERecord?id=CVE-2026-68138
NVD entryhttps://nvd.nist.gov/vuln/detail/CVE-2026-68138
Debian security trackerhttps://security-tracker.debian.org/tracker/CVE-2026-68138
Ubuntu CVE trackerhttps://ubuntu.com/security/CVE-2026-68138
Red Hat security datahttps://access.redhat.com/security/cve/CVE-2026-68138
Amazon Linux ALAShttps://alas.aws.amazon.com/
stable point release bannerhttps://www.kernel.org/finger_banner