CVE-2026-46227
published 2026-05-28CVE-2026-46227: In the Linux kernel, the following vulnerability has been resolved: sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL The SCTP_SENDALL…
PriorityP340high7.8CVSS 3.1
AVLACLPRLUINSUCHIHAH
EPSS
0.10%
1.2th percentile
In the Linux kernel, the following vulnerability has been resolved:
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
The SCTP_SENDALL path in sctp_sendmsg() iterates ep->asocs with
list_for_each_entry_safe(), which caches the next entry in @tmp before
the loop body runs. The body calls sctp_sendmsg_to_asoc(), which may
drop the socket lock inside sctp_wait_for_sndbuf().
While the lock is dropped, another thread can SCTP_SOCKOPT_PEELOFF the
association cached in @tmp, migrating it to a new endpoint via
sctp_sock_migrate() (list_del_init() + list_add_tail() to
newep->asocs), and optionally close the new socket which frees the
association via kfree_rcu(). The cached @tmp can also be freed by a
network ABORT for that association, processed in softirq while the
lock is dropped.
sctp_wait_for_sndbuf() revalidates @asoc (the current entry) on re-lock
via the "sk != asoc->base.sk" and "asoc->base.dead" checks, but nothing
revalidates @tmp. After a successful return, the iterator advances to
the stale @tmp, yielding either a use-after-free (if the peeled socket
was closed) or a list-walk onto the new endpoint's list head (type
confusion of &newep->asocs as a struct sctp_association *).
Both are reachable from CapEff=0; the type-confusion path gives
controlled indirect call via the outqueue.sched->init_sid pointer.
Fix by re-deriving @tmp from @asoc after sctp_sendmsg_to_asoc()
returns. @asoc is known to still be on ep->asocs at that point: the
only callers that list_del an association from ep->asocs are
sctp_association_free() (which sets asoc->base.dead) and
sctp_assoc_migrate() (which changes asoc->base.sk), and
sctp_wait_for_sndbuf() checks both under the lock before any
successful return; a tripped check propagates as err < 0 and the loop
bails before the re-derive.
The SCTP_ABORT path in sctp_sendmsg_check_sflags() returns 0 and the
loop hits 'continue' before sctp_sendmsg_to_asoc() is ever called, so
the @tmp cached by list_for_each_entr
Affected
20 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| linux | linux | — | — |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < f3a3f0b406b4b7eb3cea35a23fa2bf170848b104 | f3a3f0b406b4b7eb3cea35a23fa2bf170848b104 |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < 0dbc8cde64280fc37cdd678cced34eaf96cfb197 | 0dbc8cde64280fc37cdd678cced34eaf96cfb197 |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < 0c7b55974f97b78d1109025eadf084e74cbf330f | 0c7b55974f97b78d1109025eadf084e74cbf330f |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < 1bfb06ecb00f7fdf35dba8e8f2877346cbe5e078 | 1bfb06ecb00f7fdf35dba8e8f2877346cbe5e078 |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < 6187a172d6ed57d6b2c327836e4407c6456e639d | 6187a172d6ed57d6b2c327836e4407c6456e639d |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < c9dadb31f36045a8cb65df4bd75e7237ef21a4b5 | c9dadb31f36045a8cb65df4bd75e7237ef21a4b5 |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < bf0f40d8107e2ce827521968dc6926f3e13728ae | bf0f40d8107e2ce827521968dc6926f3e13728ae |
| linux | linux | >= 4910280503f3af2857d5aa77e35b22d93a8960a8 < abb5f36771cc4c05899b34000829a787572a8817 | abb5f36771cc4c05899b34000829a787572a8817 |
| linux | linux_kernel | — | — |
| linux | linux_kernel | — | — |
| linux | linux_kernel | — | — |
| linux | linux_kernel | — | — |
| linux | linux_kernel | >= 4.17 < 5.10.258 | 5.10.258 |
| linux | linux_kernel | >= 5.11 < 5.15.209 | 5.15.209 |
| linux | linux_kernel | >= 5.16 < 6.1.175 | 6.1.175 |
| linux | linux_kernel | >= 6.13 < 6.18.32 | 6.18.32 |
| linux | linux_kernel | >= 6.19 < 7.0.9 | 7.0.9 |
| linux | linux_kernel | >= 6.2 < 6.6.140 | 6.6.140 |
| linux | linux_kernel | >= 6.7 < 6.12.90 | 6.12.90 |
CVSS provenance
nvdv3.17.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vendor_redhat7.0HIGH
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
Red Hat
kernel: sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
vendor_redhat·2026-05-28·CVSS 7.0
CVE-2026-46227 [HIGH] CWE-367 kernel: sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
kernel: sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
A flaw was found in the Linux kernel's Stream Control Transmission Protocol (SCTP) implementation. A race condition exists in the `SCTP_SENDALL` path where a cached list entry is not properly revalidated after the socket lock is temporarily released. This allows a local attacker or a remote attacker (via a network abort) to trigger a use-after-free or type confusion vulnerability. Successful exploitation can lead to a controlled indirect call, potentially resulting in arbitrary code execution.
Package: kernel (Red Hat Enterprise Linux 10) - Affected
Package: kernel (Red Hat Enterprise Linux 6) - Under investigation
Package: kernel (Red Hat Enterprise Linux 7) - Not affected
Package: kernel-rt (Red Hat En
GHSA
GHSA-rg55-jvw9-p7m7: In the Linux kernel, the following vulnerability has been resolved:
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
The SC
ghsa_unreviewed·2026-05-28
CVE-2026-46227 GHSA-rg55-jvw9-p7m7: In the Linux kernel, the following vulnerability has been resolved:
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
The SC
In the Linux kernel, the following vulnerability has been resolved:
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL
The SCTP_SENDALL path in sctp_sendmsg() iterates ep->asocs with
list_for_each_entry_safe(), which caches the next entry in @tmp before
the loop body runs. The body calls sctp_sendmsg_to_asoc(), which may
drop the socket lock inside sctp_wait_for_sndbuf().
While the lock is dropped, another thread can SCTP_SOCKOPT_PEELOFF the
association cached in @tmp, migrating it to a new endpoint via
sctp_sock_migrate() (list_del_init() + list_add_tail() to
newep->asocs), and optionally close the new socket which frees the
association via kfree_rcu(). The cached @tmp can also be freed by a
network ABORT for that association, processed in softirq while the
lock
No detection rules found.
No public exploits indexed.
https://git.kernel.org/stable/c/0c7b55974f97b78d1109025eadf084e74cbf330fhttps://git.kernel.org/stable/c/0dbc8cde64280fc37cdd678cced34eaf96cfb197https://git.kernel.org/stable/c/1bfb06ecb00f7fdf35dba8e8f2877346cbe5e078https://git.kernel.org/stable/c/6187a172d6ed57d6b2c327836e4407c6456e639dhttps://git.kernel.org/stable/c/abb5f36771cc4c05899b34000829a787572a8817https://git.kernel.org/stable/c/bf0f40d8107e2ce827521968dc6926f3e13728aehttps://git.kernel.org/stable/c/c9dadb31f36045a8cb65df4bd75e7237ef21a4b5https://git.kernel.org/stable/c/f3a3f0b406b4b7eb3cea35a23fa2bf170848b104https://access.redhat.com/errata/RHSA-2026:26462https://access.redhat.com/errata/RHSA-2026:26515https://access.redhat.com/errata/RHSA-2026:26535https://access.redhat.com/errata/RHSA-2026:26563https://access.redhat.com/errata/RHSA-2026:27731https://access.redhat.com/errata/RHSA-2026:27735https://access.redhat.com/errata/RHSA-2026:33899https://access.redhat.com/errata/RHSA-2026:34094https://access.redhat.com/errata/RHSA-2026:36018https://access.redhat.com/errata/RHSA-2026:36348https://access.redhat.com/errata/RHSA-2026:36349https://access.redhat.com/errata/RHSA-2026:36956https://access.redhat.com/security/cve/CVE-2026-46227https://bugzilla.redhat.com/show_bug.cgi?id=2482564https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-46227.json
2026-05-28
Published