CVE-2026-98556 in Linux
Riassunto
di VulDB • 18/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
gve: DQO: rifiutare i pacchetti TSO con un MSS fuori intervallo
La funzione gve_prep_tso() segnala che il dispositivo richiede che l'MSS sia <= 9728, ma non lo impone, assumendo che il MTU da 9K imposto dall'ipervisore e il limite di 64 KB sulle dimensioni TSO siano sufficienti.
Ciò non vale per i pacchetti generati localmente. Un guest dietro un tap o qualsiasi utente di socket a livello 2 può fornire un gso_size arbitrario in virtio_net_hdr. L'instradamento Layer 2 non verifica il MTU per i pacchetti GSO (is_skb_forwardable()), e gso_features_check() limita solo skb->len e gso_segs, mai gso_size.
Tali pacchetti raggiungono la funzione gve_tx_fill_tso_ctx_desc(), che inserisce il valore di gso_size nel campo mss del descrittore del contesto TSO. Poiché questo campo è largo 14 bit, un gso_size pari a 16384 viene convertito silenziosamente in un MSS pari a zero.
Rifiutare questi pacchetti da gve_prep_tso() e assicurarsi che gve_features_check_dqo() non modifichi i loro bit GSO: skb_segment() effettua la segmentazione in base al valore di gso_size indipendentemente dal MTU, quindi il fallback alla segmentazione software fornirebbe al dispositivo pacchetti non TSO più grandi dei 9728 byte supportati.
Si noti che il dispositivo può comunque ricevere pacchetti non TSO di dimensioni eccessive quando lo stack effettua la segmentazione in software per altri motivi, ad esempio dopo aver disabilitato il TSO con ethtool. Si tratta di un problema generico, poiché il controllo del MTU viene saltato per i pacchetti GSO nel percorso di instradamento ed è affrontato separatamente.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.