CVE-2024-36489

tls: fix missing memory barrier in tls_init

State
Published
Severity
Not scored
Published
Jun 21, 2024
Updated
Oct 15, 2026
Reserved
Jun 21, 2024

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before d72e126e9a36d3d33889829df8fc90100bb0e071Affected
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before 2c260a24cf1c4d30ea3646124f766ee46169280bAffected
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before 335c8f1566d8e44c384d16b450a18554896d4e8bAffected
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before ab67c2fd3d070a21914d0c31319d3858ab4e199cAffected
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before ef21007a7b581c7fe64d5a10c320880a033c837bAffected
  • d5bee7374b68de3c44586d46e9e61ffc97a1e886 to before 91e61dd7a0af660408e87372d8330ceb218be302Affected
LinuxLinux
  • 5.7Affected
  • before 5.7Not affected
  • 5.10.219 through 5.10.*Not affected
  • 5.15.161 through 5.15.*Not affected
  • 6.1.93 through 6.1.*Not affected
  • 6.6.33 through 6.6.*Not affected
  • 6.9.4 through 6.9.*Not affected
  • 6.10 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.