CVE-2026-68138
net/sched: serializar qdisc_rtab_list contra get/put concurrentes
- Publicado
- 10 ago 2026
- Actualizado
- 16 oct 2026
- Asignación de CNA
- Linux
- Evidencia observada
- 19 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBajo · próximos 30 días
- Percentil
- 19,4 %
- Fecha del modelo
- 15 oct 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net/sched: serializar qdisc_rtab_list contra get/put concurrentes qdisc_get_rtab() y qdisc_put_rtab() modifican la lista enlazada individualmente global del proceso qdisc_rtab_list y un 'int refcnt' simple no atómico sin bloqueo. Esto solo era seguro porque históricamente cada llamador mantenía el mutex RTNL, que serializaba todas las búsquedas, inserciones y liberaciones de tablas de tasa. Esa invariante ya no se cumple. cls_flower establece TCF_PROTO_OPS_DOIT_UNLOCKED, por lo que tc_new_tfilter() mantiene rtnl_held == false para ello y establece TCA_ACT_FLAGS_NO_RTNL. Ese indicador se propaga a través de tcf_exts_validate_ex() -> tcf_action_init() -> tcf_action_init_1() -> tcf_police_init(), que llama a qdisc_get_rtab()/qdisc_put_rtab() con el mutex RTNL NO mantenido. Dos solicitudes RTM_NEWTFILTER en diferentes CPUs, cada una añadiendo un filtro flower con una acción police que lleva la misma tasa, compiten entonces por qdisc_rtab_list y por el refcnt no atómico, lo que conduce a un use-after-free / double-free de la estructura kmalloc-2k struct qdisc_rate_table. qdisc_rtab_list es un único global (no por netns), por lo que el objeto corrupto se comparte en todo el sistema. BUG: KASAN: slab-use-after-free en qdisc_put_rtab+0x12f/0x160 qdisc_put_rtab+0x12f/0x160 tcf_police_init+0xda9/0x1590 tcf_action_init_1+0x460/0x6b0 tcf_action_init+0x439/0xa40 tcf_exts_validate_ex+0x42d/0x550 fl_change+0xddd/0x7da0 tc_new_tfilter+0xaa7/0x2420 rtnetlink_rcv_msg+0x95e/0xe90 que pertenece a la caché kmalloc-2k de tamaño 2048 Proteger qdisc_rtab_list y el refcount con un spinlock dedicado. La asignación (que duerme, GFP_KERNEL) en qdisc_get_rtab() se realiza antes de tomar el bloqueo; si un insertador concurrente añadió una tabla idéntica mientras tanto, la recién asignada se libera bajo el bloqueo, por lo que no se filtra ningún duplicado. qdisc_put_rtab() ahora decrementa el refcount y desenlaza bajo el mismo bloqueo.
Fuentes
- CVE-2026-68138Exploit
Exploit de prueba de concepto para la escalada local de privilegios que aprovecha una condición de carrera en la tabla de tasas de qdisc de Linux, utilizando heap grooming con BPF y una fuga de pipe para obtener root.
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.