CVE-2023-53296

sctp: check send stream number after wait_for_sndbuf

State
Published
Severity
5.5 Medium
Published
Sep 16, 2025
Updated
May 11, 2026
Reserved
Sep 16, 2025

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

sctp: check send stream number after wait_for_sndbuf

This patch fixes a corner case where the asoc out stream count may change after wait_for_sndbuf.

When the main thread in the client starts a connection, if its out stream count is set to N while the in stream count in the server is set to N - 2, another thread in the client keeps sending the msgs with stream number N - 1, and waits for sndbuf before processing INIT_ACK.

However, after processing INIT_ACK, the out stream count in the client is shrunk to N - 2, the same to the in stream count in the server. The crash occurs when the thread waiting for sndbuf is awake and sends the msg in a non-existing stream(N - 1), the call trace is as below:

KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f] Call Trace: <TASK> sctp_cmd_send_msg net/sctp/sm_sideeffect.c:1114 [inline] sctp_cmd_interpreter net/sctp/sm_sideeffect.c:1777 [inline] sctp_side_effects net/sctp/sm_sideeffect.c:1199 [inline] sctp_do_sm+0x197d/0x5310 net/sctp/sm_sideeffect.c:1170 sctp_primitive_SEND+0x9f/0xc0 net/sctp/primitive.c:163 sctp_sendmsg_to_asoc+0x10eb/0x1a30 net/sctp/socket.c:1868 sctp_sendmsg+0x8d4/0x1d90 net/sctp/socket.c:2026 inet_sendmsg+0x9d/0xe0 net/ipv4/af_inet.c:825 sock_sendmsg_nosec net/socket.c:722 [inline] sock_sendmsg+0xde/0x190 net/socket.c:745

The fix is to add an unlikely check for the send stream number after the thread wakes up from the wait_for_sndbuf.

Scores

CVSSScoreVectorSource
3.15.5 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:HCISA-ADP

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before 9346a1a21142357972a6f466ba6275ddc54b04acAffected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before 0443fff49d6352160c200064156c25898bd9f58cAffected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before b4b6dfad41aaae9e36e44327b18d5cf4b20dd2ceAffected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before 667eb99cf7c15fe5b0ecefe75cf658e20ef20c9fAffected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before d2128636b303aa9cf065055402ee6697409a8837Affected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before a615e7270318fa0b98bf1ff38daf6cf52d840312Affected
  • 5bbbbe32a43199c2b9ea5ea66fab6241c64beb51 to before 2584024b23552c00d95b50255e47bd18d306d31aAffected
LinuxLinux
  • 4.15Affected
  • before 4.15Not affected
  • 4.19.281 through 4.19.*Not affected
  • 5.4.241 through 5.4.*Not affected
  • 5.10.178 through 5.10.*Not affected
  • 5.15.107 through 5.15.*Not affected
  • 6.1.24 through 6.1.*Not affected
  • 6.2.11 through 6.2.*Not affected
  • 6.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.