Перейти к содержимому
Noroxi
CVE-2025-71066· NVD / CVE Program· CNA Linux

net/sched: ets: Always remove class from active list before deleting in ets_qdisc_change

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 zdi-disclosures@trendmicro.com 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 zdi-disclosures@trendmicro.com) ``` 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 7.8 · v3.1—Эксплойта нет Есть исправление
Опубликовано
13 янв. 2026 г.
Обновлено
5 авг. 2026 г.
EPSS
0,2 % · 6-й процентиль
Следить за этой CVE

Войдите, чтобы следить · Вы получите уведомление, если запись попадёт в KEV, получит эксплойт или обновится.

Инструменты для отчёта

JSON

Оценка срочности

31

Наблюдать

Пока низкий приоритет.

CVSS
31 / 40 · 7.8 / 10
CISA KEV
0 / 30 · Нет в списке
EPSS
0 / 30 · 0,2 %

Решение CISA SSVC

Эксплуатация
нет
Автоматизируемо
нет
Техническое влияние
полное

Vulnrichment: входные данные дерева решений CISA.

Оценка CNA и NVD

NVD
—
CNA · Linux
7,8
NVD ещё не выставил свою оценку; показана оценка CNA.

Оценка присваивающего органа и независимая оценка NVD. Разрыв означает, что критичность спорна.

Затронутые системы

—

Версии, заявленные вендором

Диапазоны затронутых версий, заявленные назначающей организацией (Linux). Не зависят от анализа CPE в NVD и обычно опережают его.

  • Linux Linux

    • 5.16затронута
    • ae2659d2c670252759ee9c823c4e039c0e05a6f2 и новее · до 062d5d544e564473450d72e6af83077c2b2ff7c3затронута · git
    • e25bdbc7e951ae5728fee1f4c09485df113d013c и новее · до c7f6e7cc14df72b997258216e99d897d2df0dbbdзатронута · git
    • de6d25924c2a8c2988c6a385990cafbe742061bf и новее · до a75d617a4ef08682f5cfaadc01d5141c87e019c9затронута · git
    • de6d25924c2a8c2988c6a385990cafbe742061bf и новее · до 9987cda315c08f63a02423fa2f9a1f6602c861a0затронута · git
    • de6d25924c2a8c2988c6a385990cafbe742061bf и новее · до 06bfb66a7c8b45e3fed01351a4b087410ae5ef39затронута · git
    • de6d25924c2a8c2988c6a385990cafbe742061bf и новее · до 45466141da3c98a0c5fa88be0bc14b4b6a4bd75cзатронута · git
    • de6d25924c2a8c2988c6a385990cafbe742061bf и новее · до ce052b9402e461a9aded599f5b47e76bc727f7deзатронута · git
    • 5.10.83 и новее · до 5.10.248затронута · semver
    • 5.15.6 и новее · до 5.15.198затронута · semver

Затронутые пакеты

Данные OSV и GitHub Advisory: экосистема, пакет и диапазон. Сопоставление SBOM использует эту таблицу.

ЭкосистемаПакетЗатронутый диапазонИсправление
AlmaLinux:10kernelдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64kдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debugдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-develдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-devel-matchedдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-modulesдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-modules-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-debug-modules-extraдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-develдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-devel-matchedдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-modulesдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-modules-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-64k-modules-extraдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-abi-stablelistsдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-cross-headersдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debugдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debug-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debug-develдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debug-devel-matchedдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debug-modulesдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2
AlmaLinux:10kernel-debug-modules-coreдо 6.12.0-211.32.1.el10_26.12.0-211.32.1.el10_2

+96

Тот же продукт

linux: все записи

Другие записи с наивысшей оценкой для того же основного продукта.

  • CVE-2026-74705udp: fix potential use-after-free in tunnel segmentation
    40В плане
  • CVE-2026-74612veth: fix skb length accounting after XDP frag adjustment
    40В плане
  • CVE-2026-74475vxlan: use neigh_ha_snapshot() in route_shortcircuit()
    40В плане
  • CVE-2026-74309vdpa/octeon_ep: fix IRQ-to-ring mapping in interrupt handler
    40В плане
  • CVE-2026-74280crypto: marvell/octeontx - fix DMA cleanup using wrong loop index
    40В плане
  • CVE-2026-74279crypto: cavium/cpt - fix DMA cleanup using wrong loop index
    40В плане

Исправление

На какую версию обновиться

Версии с исправлением по данным вендора, реестров пакетов и Microsoft. Перед обновлением сверьтесь с бюллетенем вендора.

Продукт / пакетИсправленная версияИсточник
Linux Linux062d5d544e564473450d72e6af83077c2b2ff7c3Вендор (CNA)
Linux Linux06bfb66a7c8b45e3fed01351a4b087410ae5ef39Вендор (CNA)
Linux Linux45466141da3c98a0c5fa88be0bc14b4b6a4bd75cВендор (CNA)
Linux Linux5.10.248Вендор (CNA)
Linux Linux5.15.198Вендор (CNA)
Linux Linux9987cda315c08f63a02423fa2f9a1f6602c861a0Вендор (CNA)
Linux Linuxa75d617a4ef08682f5cfaadc01d5141c87e019c9Вендор (CNA)
Linux Linuxc7f6e7cc14df72b997258216e99d897d2df0dbbdВендор (CNA)
Linux Linuxce052b9402e461a9aded599f5b47e76bc727f7deВендор (CNA)
azl3 kernel 6.6.119.3-3 on Azure Linux 3.06.6.121.1-1 · CBL-Mariner ReleasesMicrosoft (MSRC)
almalinux:kernel6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-core6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-core6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-devel6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-devel-matched6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-modules6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-modules-core6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-debug-modules-extra6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-devel6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
almalinux:kernel-64k-devel-matched6.12.0-211.32.1.el10_2 · AlmaLinux:10Реестр пакетов (OSV)
debian:linux6.1.162-1 · Debian:12Реестр пакетов (OSV)
opensuse:dtb-aarch646.4.0-150600.23.92.1 · openSUSE:Leap 15.6Реестр пакетов (OSV)
opensuse:kernel-64kb6.4.0-150600.23.92.1 · openSUSE:Leap 15.6Реестр пакетов (OSV)
opensuse:kernel-debug6.4.0-150600.23.92.1 · openSUSE:Leap 15.6Реестр пакетов (OSV)
red hat:kernel-64k-debug-debuginfo0:6.12.0-211.32.1.el10_2 · Red Hat:enterprise_linux:10.2Реестр пакетов (OSV)
red hat:kernel-64k-debug-devel0:6.12.0-211.32.1.el10_2 · Red Hat:enterprise_linux:10.2Реестр пакетов (OSV)
red hat:kernel-64k-debug-devel-matched0:6.12.0-211.32.1.el10_2 · Red Hat:enterprise_linux:10.2Реестр пакетов (OSV)
red hat:kernel-64k-debuginfo0:6.12.0-211.32.1.el10_2 · Red Hat:enterprise_linux:10.2Реестр пакетов (OSV)

+30

Статус эксплойта

Публичный эксплойт неизвестен

Публичный эксплойт пока не обнаружен. Это не значит, что вы в безопасности, лишь что порог чуть выше.

Контекст для исследователя

Для пентестеров и исследователей: профиль атаки, расхождение оценок, хронология, коммиты исправлений, авторы, кандидаты в варианты и цепочки, охват bug bounty. Всё выводится из имеющихся данных; без кода эксплойтов.

Хронология

От публикации до сегодня: proof of concept, модуль Metasploit, CISA KEV и запись об исправлении. Даты — как сообщают источники.

Кроме публикации датированных событий нет.

EPSS за 120 дней

Ежедневная оценка FIRST EPSS; записываются только изменения от 0,01 (ступенчатый график).

Ссылки на патчи и коммиты

Коммиты, PR и diff среди источников. Отправная точка для patch-diff и поиска вариантов; это исправления, не эксплойты.

Среди источников нет ссылок на коммит или PR.

Нашедшие, сообщившие и аналитики, названные в записи CNA. Нажмите имя, чтобы увидеть другие записи исследователя.

В записи CNA нет авторов.

Кандидаты в варианты

Тот же продукт, тот же класс уязвимости, в пределах 18 месяцев. Если патч не закрыл первопричину, родственная ошибка здесь.

Ночной расчёт связей ничего не нашёл.

Кандидаты в цепочки

Обход аутентификации и уязвимость, требующая привилегий, в одном продукте и близко по времени: вместе они могут дать путь без аутентификации.

—

Охват bug bounty

Известной публичной программы нет.

Источник: bounty-targets-data (публичные списки HackerOne, Bugcrowd, Intigriti, YesWeHack).

Технические детали

Условия атаки

  • Может быть вызвана пользователем с локальным доступом к системе.
  • Достаточно учётной записи с низкими привилегиями.
  • Действия пользователя не требуются.
  • Особые условия не требуются; воспроизводится стабильно.

В случае успеха

Конфиденциальность
высокое · данные могут быть прочитаны
Целостность
высокое · данные или конфигурация могут быть изменены
Доступность
высокое · работа сервиса может быть нарушена
Вектор атаки
Локальный
Сложность атаки
Низкая
Требуемые привилегии
Низкие
Взаимодействие с пользователем
Не требуется
Область действия
Не изменяется
Влияние на конфиденциальность
Высокое
Влияние на целостность
Высокое
Влияние на доступность
Высокое

Вектор CVSS

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

nvd-secondary

Контекст атаки

Шаблоны атак MITRE CAPEC и техники ATT&CK для этого класса уязвимости (CWE). Отправная точка для правил обнаружения и threat hunting.

Анализ Noroxi

Анализа Noroxi для этой записи пока нет

Мы не пишем анализ вручную для всех 385 000+ уязвимостей; это было бы нечестно. Для значимых уязвимостей с реальным влиянием наша команда описывает механизм, обнаружение и устранение.

Мы используем этот продукт, нужна помощь

Журнал изменений

  1. Исправление✗ → ✓

Для отслеживаемых записей эти изменения приходят и как уведомления. →

Источники

Все записи