Medium severity · published Jun 21, 2024
CVE-2024-36489
tls: fix missing memory barrier in tls_init
5.5
CVSS
0.3%
EPSS
No
On KEV
Description
In the Linux kernel, the following vulnerability has been resolved:
tls: fix missing memory barrier in tls_init
In tls_init(), a write memory barrier is missing, and store-store
reordering may cause NULL dereference in tls_{setsockopt,getsockopt}.
CPU0 CPU1
----- -----
// In tls_init()
// In tls_ctx_create()
ctx = kzalloc()
ctx->sk_proto = READ_ONCE(sk->sk_prot) -(1)
// In update_sk_prot()
WRITE_ONCE(sk->sk_prot, tls_prots) -(2)
// In sock_common_setsockopt()
READ_ONCE(sk->sk_prot)->setsockopt()
// In tls_{setsockopt,getsockopt}()
ctx->sk_proto->setsockopt() -(3)
In the above scenario, when (1) and (2) are reordered, (3) can observe
the NULL value of ctx->sk_proto, causing NULL dereference.
To fix it, we rely on rcu_assign_pointer() which implies the release
barrier semantic. By moving rcu_assign_pointer() after ctx->sk_proto is
initialized, we can ensure that ctx->sk_proto are visible when
changing sk->sk_prot.
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Attack vector
Local
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
None
Integrity
None
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.3% · higher than 17% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
KE
Kernel · Linux
5.7 before 5.10.219; 5.11 before 5.15.161; 5.16 before 6.1.93; 6.2 before 6.6.33; 6.7 before 6.9.4 · source: NVD
LI
Linux · Linux
d5bee7374b68de3c44586d46e9e61ffc97a1e886 before d72e126e9a36d3d33889829df8fc90100bb0e071; d5bee7374b68de3c44586d46e9e61ffc97a1e886 before 2c260a24cf1c4d30ea3646124f766ee46169280b; d5bee7374b68de3c44586d46e9e61ffc97a1e886 before 335c8f1566d8e44c384d16b450a18554896d4e8b; d5bee7374b68de3c44586d46e9e61ffc97a1e886 before ab67c2fd3d070a21914d0c31319d3858ab4e199c; d5bee7374b68de3c44586d46e9e61ffc97a1e886 before ef21007a7b581c7fe64d5a10c320880a033c837b; d5bee7374b68de3c44586d46e9e61ffc97a1e886 before 91e61dd7a0af660408e87372d8330ceb218be302; +1 more · source: vendor
RR
RUGGEDCOM RST2428P · Siemens
before V3.1 · source: CISA
SX
SCALANCE XCM-/XRM-/XCH-/XRH-300 family · Siemens
before V3.1 · source: CISA
SS
SIMATIC S7-1500 TM MFP - GNU/Linux subsystem · Siemens
before V1.1.1 · source: CISA
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2024-36489
CVE.org
https://www.cve.org/CVERecord?id=CVE-2024-36489
Patch
https://git.kernel.org/stable/c/2c260a24cf1c4d30ea3646124f766ee46169280b
Patch
https://git.kernel.org/stable/c/335c8f1566d8e44c384d16b450a18554896d4e8b
Patch
https://git.kernel.org/stable/c/91e61dd7a0af660408e87372d8330ceb218be302
Patch
https://git.kernel.org/stable/c/ab67c2fd3d070a21914d0c31319d3858ab4e199c
Patch
https://git.kernel.org/stable/c/d72e126e9a36d3d33889829df8fc90100bb0e071
Patch
https://git.kernel.org/stable/c/ef21007a7b581c7fe64d5a10c320880a033c837b
More from Kernel
9.8
CVE-2025-39682
tls: fix handling of zero-length records on the rx_list
8.8
CVE-2026-53266
netfilter: bridge: make ebt_snat ARP rewrite writable
8.8
CVE-2013-6282
Linux Kernel Improper Input Validation Vulnerability
8.4
CVE-2022-0185
Linux Kernel Heap-Based Buffer Overflow Vulnerability
8.4
CVE-2013-2094
Linux Kernel Privilege Escalation Vulnerability
