CVE-2026-68138
net/sched: serializza qdisc_rtab_list contro get/put concorrenti
- Pubblicato
- 10 ago 2026
- Aggiornato
- 23 ago 2026
- Assegnazione CNA
- Linux
- Evidenza osservata
- 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:HBasso · prossimi 30 giorni
- Percentile
- 21,0%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Nel kernel Linux, è stata risolta la seguente vulnerabilità: net/sched: serializzare qdisc_rtab_list contro get/put concorrenti qdisc_get_rtab() e qdisc_put_rtab() modificano la lista singolarmente concatenata globale di processo qdisc_rtab_list e un semplice 'int refcnt' non atomico senza alcun lock. Questo era sicuro solo perché ogni chiamante deteneva storicamente il mutex RTNL, che serializzava tutte le ricerche, le inserzioni e le liberazioni delle rate-table. Quell'invariante non vale più. cls_flower imposta TCF_PROTO_OPS_DOIT_UNLOCKED, quindi tc_new_tfilter() mantiene rtnl_held == false per esso e imposta TCA_ACT_FLAGS_NO_RTNL. Quel flag si propaga attraverso tcf_exts_validate_ex() -> tcf_action_init() -> tcf_action_init_1() -> tcf_police_init(), che chiama qdisc_get_rtab()/qdisc_put_rtab() con il mutex RTNL NON detenuto. Due richieste RTM_NEWTFILTER su CPU diverse, ciascuna che aggiunge un filtro flower con un'azione police che trasporta la stessa rate, competono quindi su qdisc_rtab_list e sul refcnt non atomico, portando a un use-after-free / double-free della struct qdisc_rate_table kmalloc-2k. qdisc_rtab_list è un singolo globale (non per-netns), quindi l'oggetto corrotto è condiviso a livello di 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 che appartiene alla cache kmalloc-2k di dimensione 2048 Proteggi qdisc_rtab_list e il refcount con uno spinlock dedicato. L'allocazione (che dorme, GFP_KERNEL) in qdisc_get_rtab() viene eseguita prima di acquisire il lock; se un inseritore concorrente ha aggiunto una tabella identica nel frattempo, quella appena allocata viene liberata sotto il lock, quindi nessun duplicato viene disperso. qdisc_put_rtab() ora decrementa il refcount e scollega sotto lo stesso lock.
Fonti
3Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.