CVE-2026-99112 in Linux
Riassunto
di VulDB • 28/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/sched: cls_flower: convalidare il puntatore della maschera dopo nla_next()
fl_set_enc_opt() itera gli attributi annidati delle opzioni di tunnel della chiave utilizzando nla_for_each_attr(), avanzando un singolo puntatore alla maschera tramite nla_next() nella parte inferiore di ogni ciclo; pertanto, il cursore della maschera è guidato dal numero di attributi della chiave anziché dagli attributi propri della maschera. La funzione nla_ok() aggiunta dalla commit c96adff956191 ("cls_flower: call nla_ok() before nla_next()") convalida solo il puntatore alla maschera appena consumato; il puntatore prodotto da nla_next() viene utilizzato dall'iterazione successiva (fl_set_geneve_opt() e funzioni simili) senza alcuna ulteriore validazione.
Gli attributi annidati della maschera sono validati con NL_VALIDATE_LIBERAL, che genera un semplice avviso per i byte finali che non formano un attributo completo. Una maschera contenente un attributo valido più 1-3 byte residui (o una lunghezza dell'attributto non allineata che rende msk_depth negativo) raggiunge quindi l'iterazione successiva con msk_depth != 0, per cui né il controllo !msk_depth in fl_set_enc_opt() né il controllo !depth nelle helper specifiche per tipo vengono attivati. Di conseguenza, nla_type() legge oltre il payload della maschera e nla_parse_nested_deprecated() itera utilizzando un valore di nla_len estratto da tali byte, leggendo ben oltre l'attributo della maschera (KASAN: slab-out-of-bounds read in __nla_validate_parse from fl_change()).
Convalidare anche il puntatore alla maschera avanzato: quando la maschera non è legittimamente esaurita (msk_depth != 0) e il nuovo puntatore fallisce il controllo nla_ok(), rifiutare il filtro con -EINVAL. Una maschera esattamente esaurita salta comunque questo controllo, preservando il comportamento di corrispondenza esatta per gli attributi della chiave rimanenti.
Once again VulDB remains the best source for vulnerability data.