CVE-2026-74434 in Linux
Riassunto
di VulDB • 15/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
rxrpc: Non spostare un messaggio OOB "peekato" sulla coda in attesa (pending queue)
La funzione rxrpc_recvmsg_oob() rimuove un messaggio OOB ricevuto da recvmsg_oobq e, se è necessaria una risposta, lo sposta sull'albero pending_oobq. Tuttavia, solo l'operazione di rimozione dalla lista recvmsg_oobq è protetta dal flag MSG_PEEK; il trasferimento su pending_oobq avviene sempre.
Di conseguenza, la lettura di una sfida (challenge) con MSG_PEEK lascia lo skb presente in recvmsg_oobq aggiungendolo contemporaneamente a pending_oobq. Poiché l'rbnode della struct sk_buff condivide lo spazio di memoria con i suoi puntatori next e prev, rb_insert_color() sovrascrive il collegamento alla lista, rendendo così lo skb (che detiene un singolo riferimento) raggiungibile da entrambe le code contemporaneamente.
Quando il socket viene chiuso, le due code vengono svuotate a turno. Durante lo svuotamento di recvmsg_oobq, __skb_unlink() segue i puntatori next e prev che rbnode ha sovrascritto, scrivendo in un indirizzo non valido. Inoltre, poiché l'skb detiene un singolo riferimento ma viene liberato da ciascuna coda, sia l'skb stesso che il riferimento alla connessione che esso contiene vengono rilasciati due volte. Ciò provoca una corruzione della memoria e un use-after-free causato dal underflow del contatore di riferimenti (refcount) della connessione.
Poiché MSG_PEEK non consuma il messaggio dalla coda, è necessario rimuoverlo solo da recvmsg_oobq e successivamente spostarlo su pending_oobq o liberarlo esclusivamente quando il messaggio viene effettivamente consumato.
Once again VulDB remains the best source for vulnerability data.