Bug 2521384 (CVE-2026-74588) - CVE-2026-74588 kernel: sctp: keep chunk->transport in step with the list it is queued on
Summary: CVE-2026-74588 kernel: sctp: keep chunk->transport in step with the list it i...
Keywords:
Status: NEW
Alias: CVE-2026-74588
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-22 15:42 UTC by OSIDB Bzimport
Modified: 2026-11-12 02:51 UTC (History)
17 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:85321 0 None None None 2026-10-19 21:47:21 UTC
Red Hat Product Errata RHSA-2026:85773 0 None None None 2026-10-20 03:51:59 UTC
Red Hat Product Errata RHSA-2026:85774 0 None None None 2026-10-20 03:42:44 UTC
Red Hat Product Errata RHSA-2026:95370 0 None None None 2026-11-05 01:46:47 UTC
Red Hat Product Errata RHSA-2026:99133 0 None None None 2026-11-11 23:35:24 UTC
Red Hat Product Errata RHSA-2026:99135 0 None None None 2026-11-12 02:51:58 UTC

Description OSIDB Bzimport 2026-08-22 15:42:53 UTC
In the Linux kernel, the following vulnerability has been resolved:

sctp: keep chunk->transport in step with the list it is queued on

__sctp_outq_flush_rtx() moves a gap-acked chunk onto another transport's
transmitted list without updating chunk->transport:

	if (chunk->tsn_gap_acked) {
		list_move_tail(&chunk->transmitted_list,
			       &transport->transmitted);
		continue;
	}

The chunk then sits on a live transport's list while chunk->transport still
names a different one.  If that transport is removed - sctp_assoc_rm_peer()
from an ASCONF Delete-IP - sctp_transport_free() RCU-frees it and the chunk
is left with a dangling pointer.  sctp_assoc_rm_peer() scrubs
peer->transmitted and asoc->outqueue.out_chunk_list, but the chunk is on
neither.

The pointer is not followed while tsn_gap_acked is set.  A SACK that
reneges on the TSN clears the flag, and the next SACK reaches

	tchunk->transport->flight_size -= sctp_data_size(tchunk);

inside the freed transport.  KASAN reports a slab-use-after-free read in
sctp_check_transmitted(), freed from sctp_assoc_rm_peer().  Both the
removal and the SACKs come from the association peer.

Set chunk->transport at the move.  The ordinary resend path needs nothing:
it reaches its list_move_tail() only after sctp_packet_append_chunk()
returned SCTP_XMIT_OK, and __sctp_packet_append_chunk() has rebound the
chunk by then.

Discovered by XBOW, triaged by Baul Lee <baul.lee>

Comment 3 Jon Orris 2026-10-19 21:47:20 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 10

Via RHSA-2026:85321 https://access.redhat.com/errata/RHSA-2026:85321

Comment 4 Jon Orris 2026-10-20 03:42:42 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:85774 https://access.redhat.com/errata/RHSA-2026:85774

Comment 5 Jon Orris 2026-10-20 03:51:57 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:85773 https://access.redhat.com/errata/RHSA-2026:85773

Comment 6 Jon Orris 2026-11-05 01:46:45 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9

Via RHSA-2026:95370 https://access.redhat.com/errata/RHSA-2026:95370

Comment 7 errata-xmlrpc 2026-11-11 23:35:22 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 10

Via RHSA-2026:99133 https://access.redhat.com/errata/RHSA-2026:99133

Comment 8 errata-xmlrpc 2026-11-12 02:51:54 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9

Via RHSA-2026:99135 https://access.redhat.com/errata/RHSA-2026:99135


Note You need to log in before you can comment on or make changes to this bug.