CVE-2026-80841 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/packet: posticipare il rilascio di vmalloc del TX_RING finché gli skbs non sono terminati
Gli skb dell'AF_PACKET TX_RING mantengono un puntatore raw al frame della ring. I riferimenti alle pagine degli skb preservano i blocchi della ring basati su pagina dopo che pg_vec è stato liberato, ma non preservano una mappatura vmalloc.
tpacket_destruct_skb() attualmente rilascia il riferimento pendente prima di scrivere l'timestamp e TP_STATUS_AVAILABLE nel frame. Spostare la decrementazione dopo tali scritture. La smp_wmb() in __packet_set_status() ordina le scritture del frame prima della decrementazione.
Verificare nuovamente i frame TX pendenti sotto pg_vec_lock prima della sostituzione non-chiudente della ring, affinché un invio concorrente (race condition) non possa aggiungere uno skb pendente tra il controllo iniziale e lo swap della ring.
L'allocazione della ring può produrre una miscela di blocchi basati su pagina e blocchi basati su vmalloc. Allocare l'area di archiviazione per deferred-work durante la configurazione del TX ring quando si incontra il primo blocco basato su vmalloc, e mantenere il suo puntatore nell'intestazione dell'allocazione pg_vec. Se l'allocazione fallisce, restituire -ENOMEM dalla configurazione della ring. Alla chiusura del socket, un puntatore non-NULL identifica un vettore basato su vmalloc senza necessità di scansione. Se rimangono TX skb, posticipare l'intero vettore a system_long_wq.
Dopo che pg_vec è stato staccato, un distruttore tardivo può saltare la decrementazione pendente. Utilizzare il contabilità della memoria di scrittura del socket come gate per la durata differita: uno skb rimane addebitato fino al suo sock_wfree() finale, dopo tutti gli accessi ai frame della ring. Il lavoro ritardato mantiene un riferimento al socket e si riprogramma finché non rimangono TX skb.
Spostare il rilascio di pending_refcnt a packet_sock_destruct() in modo che i distruttori skb tardivi e la pulizia differita possano utilizzarlo in sicurezza dopo packet_release(). La teardown basata su pagina rimane sincrona, e nessun lock viene aggiunto al percorso caldo (hot path) del completamento TX.
If you want to get best quality of vulnerability data, you may have to visit VulDB.