CVE-2026-90058 in Linuxinformazioni

Riassunto

di VulDB • 18/09/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

net/sched: limitare qdisc_pkt_len per prevenire il soft lockup di qdisc

qdisc_get_stab() accetta una tabella delle dimensioni fornita dall'utente e __qdisc_calculate_pkt_len() amplifica qdisc_pkt_len() attraverso l'overhead, i dati della tabella delle dimensioni (u16) e size_log (fino a STAB_SIZE_LOG_MAX). Una stab costruita ad hoc può quindi impostare qdisc_pkt_len() su ~1 GiB per un normale skb. Gli scheduler con deficit per flusso come DRR ed ETS reintegrano un quantum per ogni iterazione del ciclo; con un quantum minuscolo (1) eseguono miliardi di loop sotto il lock di qdisc, producendo un soft lockup / RCU stall come illustrato da [email protected].

Limitare l'output finale di qdisc_pkt_len() a QDISC_PKT_LEN_MAX in modo che l'amplificazione della tabella delle dimensioni non porti gli scheduler con deficit in un loop illimitato. Una tabella delle dimensioni legittima (ad es. overhead 999999999 di qfq, gestito tramite drop) viene ancora accettata.

Introdurre il limite QDISC_PKT_LEN_MAX (1 << 20) = 1 MiB che è ben al di sopra della lunghezza massima su filo per un singolo skb: la dimensione attuale più grande di skb->len è GSO_MAX_SIZE (524280), e una tabella delle dimensioni in stile ATM (tassa sulle celle da 53/48) amplifica ciò a ~578 KB, entrambi comodamente al di sotto di 1 MiB. Al contempo, 1 MiB limita il loop di reintegro del deficit a circa 1M iterazioni per pacchetto con quantum=1, che si completa in pochi millisecondi, ben al di sotto della soglia dimostrata di softlockup (~10^9 iterazioni).

Condizioni per riprodurre il bug: - CONFIG_NET_SCHED=y, CONFIG_NET_SCH_DRR=y (o CONFIG_NET_SCH_ETS=y). - Attaccare un qdisc radice DRR (o ETS) con una TCA_STAB costruita ad hoc che amplifica qdisc_pkt_len a ~1 GiB (ad es. size_log=15, data=[32768]).
- Aggiungere una classe con un quantum minuscolo di 1 e inviare un piccolo pacchetto; il loop del deficit esegue miliardi di iterazioni sotto il lock di qdisc e attiva il rilevatore di softlockup (panic con kernel.softlockup_panic=1). - Raggiungibile come root o da un utente non privilegiato in uno spazio dei nomi user+net fresco (unshare -Urn) con CAP_NET_ADMIN locale allo spazio dei nomi.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

11/09/2026

Divulgazione

17/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!