CVE-2021-46999
Linux SCTP Use-After-Free Vulnerability
Description
In the Linux kernel, the following vulnerability has been resolved: sctp: do asoc update earlier in sctp_sf_do_dupcook_a There's a panic that occurs in a few of envs, the call trace is as below: [] general protection fault, ... 0x29acd70f1000a: 0000 [#1] SMP PTI [] RIP: 0010:sctp_ulpevent_notify_peer_addr_change+0x4b/0x1fa [sctp] [] sctp_assoc_control_transport+0x1b9/0x210 [sctp] [] sctp_do_8_2_transport_strike.isra.16+0x15c/0x220 [sctp] [] sctp_cmd_interpreter.isra.21+0x1231/0x1a10 [sctp] [] sctp_do_sm+0xc3/0x2a0 [sctp] [] sctp_generate_timeout_event+0x81/0xf0 [sctp] This is caused by a transport use-after-free issue. When processing a duplicate COOKIE-ECHO chunk in sctp_sf_do_dupcook_a(), both COOKIE-ACK and SHUTDOWN chunks are allocated with the transort from the new asoc. However, later in the sideeffect machine, the old asoc is used to send them out and old asoc's shutdown_last_sent_to is set to the transport that SHUTDOWN chunk attached to in sctp_cmd_setup_t2(), which actually belongs to the new asoc. After the new_asoc is freed and the old asoc T2 timeout, the old asoc's shutdown_last_sent_to that is already freed would be accessed in sctp_sf_t2_timer_expire(). Thanks Alexander and Jere for helping dig into this issue. To fix it, this patch is to do the asoc update first, then allocate the COOKIE-ACK and SHUTDOWN chunks with the 'updated' old asoc. This would make more sense, as a chunk from an asoc shouldn't be sent out with another asoc. We had fixed quite a few issues caused by this.
INFO
Published Date :
Feb. 28, 2024, 9:15 a.m.
Last Modified :
Jan. 8, 2025, 5:36 p.m.
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Remotely Exploitable :
No
Impact Score :
5.9
Exploitability Score :
1.8
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2021-46999
.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2021-46999
vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2021-46999
vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
Initial Analysis by [email protected]
Jan. 08, 2025
Action Type Old Value New Value Added CVSS V3.1 NIST AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Added CWE NIST CWE-416 Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 4.19.123 up to (excluding) 4.19.191 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.4.41 up to (excluding) 5.4.120 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.7 up to (excluding) 5.10.38 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.11 up to (excluding) 5.11.22 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.12 up to (excluding) 5.12.5 Changed Reference Type https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 No Types Assigned https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 Patch Changed Reference Type https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 No Types Assigned https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 Patch Changed Reference Type https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae No Types Assigned https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae Patch Changed Reference Type https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae No Types Assigned https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae Patch Changed Reference Type https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 No Types Assigned https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 Patch Changed Reference Type https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 No Types Assigned https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 Patch Changed Reference Type https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f No Types Assigned https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f Patch Changed Reference Type https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f No Types Assigned https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f Patch Changed Reference Type https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 No Types Assigned https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 Patch Changed Reference Type https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 No Types Assigned https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 Patch Changed Reference Type https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e No Types Assigned https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e Patch Changed Reference Type https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e No Types Assigned https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e Patch -
CVE Modified by af854a3a-2127-422b-91ae-364da2661108
Nov. 21, 2024
Action Type Old Value New Value Added Reference https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 Added Reference https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae Added Reference https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 Added Reference https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f Added Reference https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 Added Reference https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
May. 28, 2024
Action Type Old Value New Value -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
May. 14, 2024
Action Type Old Value New Value -
CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Feb. 28, 2024
Action Type Old Value New Value Added Description In the Linux kernel, the following vulnerability has been resolved: sctp: do asoc update earlier in sctp_sf_do_dupcook_a There's a panic that occurs in a few of envs, the call trace is as below: [] general protection fault, ... 0x29acd70f1000a: 0000 [#1] SMP PTI [] RIP: 0010:sctp_ulpevent_notify_peer_addr_change+0x4b/0x1fa [sctp] [] sctp_assoc_control_transport+0x1b9/0x210 [sctp] [] sctp_do_8_2_transport_strike.isra.16+0x15c/0x220 [sctp] [] sctp_cmd_interpreter.isra.21+0x1231/0x1a10 [sctp] [] sctp_do_sm+0xc3/0x2a0 [sctp] [] sctp_generate_timeout_event+0x81/0xf0 [sctp] This is caused by a transport use-after-free issue. When processing a duplicate COOKIE-ECHO chunk in sctp_sf_do_dupcook_a(), both COOKIE-ACK and SHUTDOWN chunks are allocated with the transort from the new asoc. However, later in the sideeffect machine, the old asoc is used to send them out and old asoc's shutdown_last_sent_to is set to the transport that SHUTDOWN chunk attached to in sctp_cmd_setup_t2(), which actually belongs to the new asoc. After the new_asoc is freed and the old asoc T2 timeout, the old asoc's shutdown_last_sent_to that is already freed would be accessed in sctp_sf_t2_timer_expire(). Thanks Alexander and Jere for helping dig into this issue. To fix it, this patch is to do the asoc update first, then allocate the COOKIE-ACK and SHUTDOWN chunks with the 'updated' old asoc. This would make more sense, as a chunk from an asoc shouldn't be sent out with another asoc. We had fixed quite a few issues caused by this. Added Reference Linux https://git.kernel.org/stable/c/d624f2991b977821375fbd56c91b0c91d456a697 [No types assigned] Added Reference Linux https://git.kernel.org/stable/c/b1b31948c0af44628e43353828453461bb74098f [No types assigned] Added Reference Linux https://git.kernel.org/stable/c/f01988ecf3654f805282dce2d3bb9afe68d2691e [No types assigned] Added Reference Linux https://git.kernel.org/stable/c/61b877bad9bb0d82b7d8841be50872557090a704 [No types assigned] Added Reference Linux https://git.kernel.org/stable/c/0bfd913c2121b3d553bfd52810fe6061d542d625 [No types assigned] Added Reference Linux https://git.kernel.org/stable/c/35b4f24415c854cd718ccdf38dbea6297f010aae [No types assigned]
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2021-46999
is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2021-46999
weaknesses.