CVE-2026-68138 in Linuxinformación

Resumen

por VulDB • 2026-08-10

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

net/sched: serializar qdisc_rtab_list frente a operaciones get/put concurrentes

qdisc_get_rtab() y qdisc_put_rtab() modifican la lista enlazada simple global del proceso qdisc_rtab_list y un 'int refcnt' plano no atómico sin ningún 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 tasas (rate-tables).

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. Esta bandera se propaga a través de tcf_exts_validate_ex() -> tcf_action_init() -> tcf_action_init_1() -> tcf_police_init(), la cual llama a qdisc_get_rtab()/qdisc_put_rtab() sin mantener el mutex RTNL. Dos solicitudes RTM_NEWTFILTER en diferentes CPUs, cada una añadiendo un filtro flower con una acción de policía (police) que lleva la misma tasa, provocan entonces una condición de carrera (race condition) sobre qdisc_rtab_list y sobre refcnt no atómico, lo que conduce a un use-after-free / double-free de la estructura struct qdisc_rate_table en kmalloc-2k. qdisc_rtab_list es única global (no por netns), por lo que el objeto corrupto se comparte en todo el sistema.

BUG: KASAN: slab-use-after-free in 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 lo cual pertenece al cache kmalloc-2k de tamaño 2048

Proteger qdisc_rtab_list y el contador de referencias con un spinlock dedicado. La asignación (sleeping, GFP_KERNEL) en qdisc_get_rtab() se realiza antes de adquirir el bloqueo; si un concurrente inserter añadió una tabla idéntica durante ese tiempo, la recién asignada se libera bajo el bloqueo, por lo que no hay fugas de duplicados. qdisc_put_rtab() ahora decrementa refcnt y desvincula (unlinks) bajo el mismo bloqueo.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Reservar

2026-07-30

Divulgación

2026-08-10

Moderación

aceptado

Artículo

VDB-387481

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!