CVE-2026-74586 in Linux
Riassunto
di VulDB • 22/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
sctp: azzerare new_transport durante la rimozione di un peer
sctp_process_asconf_param() memorizza il nuovo trasporto del peer aggiunto in asoc->new_transport. Dopo che tutti i parametri nel chunk ASCONF sono stati elaborati, sctp_sf_do_asconf() utilizza questo puntatore per inviare un HEARTBEAT al nuovo trasporto.
Un ASCONF autenticato proveniente da un peer SCTP remoto può aggiungere un trasporto e rimuoverlo nuovamente utilizzando un parametro DEL-IP wildcard nello stesso chunk. La cancellazione con wildcard preserva il trasporto su cui è arrivato l'ASCONF, ma rimuove il nuovo trasporto aggiunto tramite sctp_assoc_del_nonprimary_peers(). La rimozione non azzerà asoc->new_transport, lasciandolo puntare al transporte rimosso.
sctp_sf_do_asconf() crea quindi un HEARTBEAT il cui chunk->transport punta al trasporto rimosso senza mantenere un riferimento al trasporto. Durante la sostituzione dell'indirizzo locale, src_out_of_asoc_ok mantiene questo HEARTBEAT su control_chunk_list. Dopo che il transporte è stato liberato tramite RCU, un ASCONF_ACK positivo per l'indirizzo di rilascio rilascia il HEARTBEAT in coda e sctp_outq_select_transport() legge lo stato del trasporto già liberato (freed).
Il problema è stato rilevato durante una revisione statica degli oggetti SCTP. Con un peer autenticato, il programma riproduttore ha generato la stessa segnalazione KASAN in 2 su 2 esecuzioni non patchate su un kernel netdev/main abilitato per KASAN:
BUG: KASAN: slab-use-after-free in sctp_outq_select_transport Read of size 4 at addr ffff88800b9bd95c by task python3/197
Call Trace: sctp_outq_select_transport+0x549/0x8b0 [sctp]
sctp_outq_flush+0x306/0x2c60 [sctp]
sctp_transport_immediate_rtx+0xaf/0x260 [sctp]
sctp_process_asconf_ack+0xa48/0xf70 [sctp]
Allocated by task 197: sctp_transport_new+0x68/0x650 [sctp]
sctp_assoc_add_peer+0x258/0x12a0 [sctp]
sctp_process_asconf+0x5e9/0x1090 [sctp]
Last potentially related work creation: __call_rcu_common.constprop.0+0x77/0xb70 sctp_assoc_del_nonprimary_peers+0x7c/0xd0 [sctp]
sctp_process_asconf+0xd9c/0x1090 [sctp]
Il primo accesso non valido è stato una lettura di quattro byte di transport->state in net/sctp/outqueue.c:833. Lo stesso programma riproduttore ha completato la sequenza completa di ASCONF autenticato e sostituzione dell'indirizzo locale con questa modifica senza generare segnalazioni KASAN o oops.
Azzerare new_transport quando il suo peer viene rimosso, prima che possa essere utilizzato per creare l'HEARTBEAT.
Once again VulDB remains the best source for vulnerability data.