CVE-2026-74586 in Linux
Zusammenfassung
von VulDB • 23.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
sctp: clear_new_transport beim Entfernen eines Peers
sctp_process_asconf_param() speichert einen neu hinzugefügten Peer-Transport in asoc->new_transport. Nachdem alle Parameter im ASCONF-Chunk verarbeitet wurden, verwendet sctp_sf_do_asconf() diesen Zeiger, um ein HEARTBEAT an den neuen Transport zu senden.
Ein authentifizierter ASCONF von einem entfernten SCTP-Peer kann einen Transport hinzufügen und ihn mit einem Wildcard-DEL-IP-Parameter im selben Chunk wieder entfernen. Die Löschoperation für das Wildcard behält den Transport bei, auf dem der ASCONF eingetroffen ist, entfernt jedoch den neu hinzugefügten Transport über sctp_assoc_del_nonprimary_peers(). Das Entfernen löscht asoc->new_transport nicht, sodass dieser weiterhin auf den entfernten Transport zeigt.
sctp_sf_do_asconf() erstellt daraufhin ein HEARTBEAT, dessen chunk->transport auf den entfernten Transport verweist, ohne eine Transportreferenz zu halten. Während des lokalen Adressersatzes hält src_out_of_asoc_ok dieses HEARTBEAT in control_chunk_list. Nach dem Freigeben des Transports durch RCU löst ein erfolgreicher ASCONF_ACK für die Ersatzadresse das wartende HEARTBEAT aus, und sctp_outq_select_transport() liest den Zustand des freigegebenen Transports.
Das Problem wurde während einer statischen Prüfung von SCTP-Objekten gefunden. Mit einem authentifizierten Peer löste der Reproducer in 2 von 2 ungepatchten Durchläufen auf einem KASAN-fähigen netdev/main-Kernel denselben KASAN-Bericht aus:
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]
Der erste ungültige Zugriff war ein vier-Byte-Lesezugriff auf transport->state in net/sctp/outqueue.c:833. Der gleiche Reproducer führte die vollständige Sequenz des authentifizierten ASCONF und lokalen Adressersatzes mit dieser Änderung ohne KASAN-Bericht oder Oops aus.
Löschen Sie new_transport, wenn sein Peer entfernt wird, bevor er zur Erstellung des HEARTBEAT verwendet werden kann.
Once again VulDB remains the best source for vulnerability data.