sctp: fix race between sctp_wait_for_connect and peeloff
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: sctp: fix race between sctp_wait_for_connect and peeloff sctp_wait_for_connect() drops and re-acquires the socket lock while waiting for the association to reach ESTABLISHED state. During this window, another thread can peeloff the association to a new socket via getsockopt(SCTP_SOCKOPT_PEELOFF), changing asoc->base.sk. After re-acquiring the old socket lock, sctp_wait_for_connect() returns success without noticing the migration — the caller then accesses the association under the wrong lock in sctp_datamsg_from_user(). Add the same sk != asoc->base.sk check that sctp_wait_for_sndbuf() already has, returning an error if the association was migrated while we slept.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 0e0d5bc76fd4267a71334fcc8f1a5fbcf997845d; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in bcfeac79af740735ace44008b4a11b8e5add20f5; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 8e9b56051d24540cfbf39194618708c4a7633549; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 634a9af8a26a84d8b0d7b3b643204b344b42d9fb; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 7d2038d4b80166f7bead8d07eba3b97405816c21; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 68667ee4c7dadf7f63167234e2a1af09b3f7874e; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in 6140cfa721451fa6e18e134e709703c2bf34d0fb; From 668c9beb9020d5834ee9e43c208190a07d2b1928 · fixed in f14fe6395a8b3d961a61e138ad7b36ba3626dd4e
- Linux Linux
4.16
- KernelLinux
From 4.16.0 · fixed in 5.10.259; From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.143; From 6.7.0 · fixed in 6.12.93; From 6.13.0 · fixed in 6.18.35; From 6.19.0 · fixed in 7.0.12
References 8
git.kernel.org
- stable/c/0e0d5bc76fd4267a71334fcc8f1a5fbcf997845d
- stable/c/bcfeac79af740735ace44008b4a11b8e5add20f5
- stable/c/8e9b56051d24540cfbf39194618708c4a7633549
- stable/c/634a9af8a26a84d8b0d7b3b643204b344b42d9fb
- stable/c/7d2038d4b80166f7bead8d07eba3b97405816c21
- stable/c/68667ee4c7dadf7f63167234e2a1af09b3f7874e
- stable/c/6140cfa721451fa6e18e134e709703c2bf34d0fb
- stable/c/f14fe6395a8b3d961a61e138ad7b36ba3626dd4e