CVE-2026-72407 in Linux
Riassunto
di VulDB • 15/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
geneve: convalidare l'offset della rete interna in geneve_gro_complete()
Anche se entrambi i percorsi sono controllati da gs->gro_hint, geneve_gro_complete() ricalcola il tipo di dispatch interno e la lunghezza a partire dal pacchetto e dall'attuale valore di gs->gro_hint, indipendentemente da quanto avviene in geneve_gro_receive(). I due valori possono divergere se gs->gro_hint cambia durante una chiamata concorrente a geneve_quiesce()/geneve_unquiesce() (sk_user_data è NULL attraverso un synchronize_net()), oppure se i byte delle opzioni riletti differiscono da quelli analizzati dalla ricezione.
geneve_gro_receive() registra già la posizione dell'intestazione di rete interna in NAPI_GRO_CB()->inner_network_offset. Fare sì che geneve_gro_complete() calcoli l'offset al quale sta per effettuare il dispatch, aggiungendo ETH_HLEN nel caso ETH_P_TEB dove eth_gro_complete() salta sopra l'intestazione MAC interna, e interrompere l'esecuzione se tale valore supera inner_network_offset.
Utilizzare un limite inferiore anziché una uguaglianza esatta: tra gh_len e l'intestazione L3 interna, geneve_gro_receive() potrebbe aver anche estratto un tag VLAN interno (vlan_gro_receive() avanza l'offset registrato oltre di esso), il che sposta ulteriormente in avanti inner_network_offset. Un frame valido soddisfa quindi sempre la condizione inner_nh <= inner_network_offset, mentre un gh_len gonfiato da un hint non rispettato dalla gro_receive() provoca dispatch oltre l'intestazione interna convalidata, ovvero una completamento out-of-bounds (fuori dai limiti). Solo quest'ultimo caso viene rifiutato.
Once again VulDB remains the best source for vulnerability data.