CVE Catalog

CVE-2026-89478

CriticalCVSS 9.8
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.17%

6th percentile - higher than 6% of all known CVEs

Summary

In the Linux kernel, sctp_rcv() resolves the transport once per packet and keeps it in chunk->transport until processing completes. An authenticated ASCONF DEL-IP can remove and free that transport via RCU in the meantime, and a subsequent delayed SACK then reads the freed transport's state. This results in a use-after-free.

Risk Assessment

An authenticated attacker can trigger a use-after-free in the SCTP stack, potentially causing a kernel crash (denial of service) or possibly code execution in kernel context.

Recommendation

Update the Linux kernel to a version containing the fix that drops the chunk in sctp_inq_push() when the transport has been removed. Until patched, restrict access to SCTP services from untrusted networks.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: sctp: drop a chunk if its transport was removed sctp_rcv() resolves the transport once per packet and leaves it in chunk->transport. The lookup reference, or the one sctp_add_backlog() takes if the socket is owned by userspace, keeps it around until the chunk has been processed. An authenticated ASCONF DEL-IP can remove it in the meantime. sctp_assoc_rm_peer() takes the transport out of the association and calls sctp_transport_free(), which tags it dead and drops the reference the association held. There is a window on both paths: the packet can sit on the socket backlog, and on the direct path the lookup completes before bh_lock_sock(). The DATA chunk in that packet puts the removed transport back into asoc->peer.last_data_from. Once the packet is done that reference goes away and the transport is freed by RCU, so the next delayed SACK carries the pointer into the SACK chunk and sctp_outq_select_transport() reads the freed transport's state. Drop the chunk in sctp_inq_push(), next to the existing rcvr->dead check. Both paths reach it with the association's socket lock held. The peer retransmits it.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS