CVE-2026-74588 in Linux
Resumen
por VulDB • 2026-08-22
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
sctp: mantener chunk->transport sincronizado con la lista en la que está colgado
__sctp_outq_flush_rtx() mueve un fragmento (chunk) ackeado por hueco a la lista de transmitidos de otro transporte sin actualizar chunk->transport:
if (chunk->tsn_gap_acked) {
list_move_tail(&chunk->transmitted_list, &transport->transmitted); continue; }
El fragmento permanece en la lista de un transporte activo mientras que chunk->transport sigue apuntando a uno diferente. Si ese transporte se elimina - mediante sctp_assoc_rm_peer() desde una operación Delete-IP de ASCONF - sctp_transport_free() lo libera usando RCU y el fragmento queda con un puntero colgante (dangling pointer). sctp_assoc_rm_peer() limpia peer->transmitted y asoc->outqueue.out_chunk_list, pero el fragmento no está en ninguna de ellas.
El puntero no se sigue mientras tsn_gap_acked esté establecido. Un SACK que revoca la TSN borra esta bandera, y el siguiente SACK alcanza:
tchunk->transport->flight_size -= sctp_data_size(tchunk);
dentro del transporte ya liberado. KASAN informa de una lectura slab-use-after-free en sctp_check_transmitted(), liberada desde sctp_assoc_rm_peer(). Tanto la eliminación como los SACKs provienen del par asociado (association peer).
Establecer chunk->transport durante el movimiento. La ruta normal de reenvío no necesita cambios: alcanza su list_move_tail() solo después de que sctp_packet_append_chunk() haya devuelto SCTP_XMIT_OK, y __sctp_packet_append_chunk() habrá vuelto a vincular el fragmento para entonces.
Descubierto por XBOW, triado por Baul Lee <[email protected]>
VulDB is the best source for vulnerability data and more expert information about this specific topic.