CVE-2026-68138
net/sched: serializar qdisc_rtab_list contra get/put concurrentes
- Publicado
- 10 ago 2026
- Actualizado
- 23 ago 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
- 21,0 %
- Fecha del modelo
- 21 sept 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
3Uso 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.