CVE-2026-53078

bpf: Fix same-register dst/src OOB read and pointer leak in sock_ops

State
Published
Severity
7.8 High
Published
Jun 24, 2026
Updated
Oct 19, 2026
Reserved
Jun 9, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

bpf: Fix same-register dst/src OOB read and pointer leak in sock_ops

When a BPF sock_ops program accesses ctx fields with dst_reg == src_reg, the SOCK_OPS_GET_SK() and SOCK_OPS_GET_FIELD() macros fail to zero the destination register in the !fullsock / !locked_tcp_sock path.

Both macros borrow a temporary register to check is_fullsock / is_locked_tcp_sock when dst_reg == src_reg, because dst_reg holds the ctx pointer. When the check is false (e.g., TCP_NEW_SYN_RECV state with a request_sock), dst_reg should be zeroed but is not, leaving the stale ctx pointer:

- SOCK_OPS_GET_SK: dst_reg retains the ctx pointer, passes NULL checks as PTR_TO_SOCKET_OR_NULL, and can be used as a bogus socket pointer, leading to stack-out-of-bounds access in helpers like bpf_skc_to_tcp6_sock().

- SOCK_OPS_GET_FIELD: dst_reg retains the ctx pointer which the verifier believes is a SCALAR_VALUE, leaking a kernel pointer.

Fix both macros by: - Changing JMP_A(1) to JMP_A(2) in the fullsock path to skip the added instruction. - Adding BPF_MOV64_IMM(si->dst_reg, 0) after the temp register restore in the !fullsock path, placed after the restore because dst_reg == src_reg means we need src_reg intact to read ctx->temp.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • fd09af010788a884de1c39537c288830c3d305db to before db1200ec2c3ddf119d4d9ba67982063df06bbacbAffected
  • fd09af010788a884de1c39537c288830c3d305db to before 4c1c5efd9d1d74743d41ce4e1600501b4feb6827Affected
  • fd09af010788a884de1c39537c288830c3d305db to before 0e6b30657bbc771f38025c828d722b6162428508Affected
  • fd09af010788a884de1c39537c288830c3d305db to before 64eaf4ecda007140ddcdb28e00c48c9c69aaba39Affected
  • fd09af010788a884de1c39537c288830c3d305db to before 2a2c98141e0a75f2d4a7d78b0316c88b3da784acAffected
  • fd09af010788a884de1c39537c288830c3d305db to before 22400725de070b787cd6d806c5795370ab46d269Affected
  • fd09af010788a884de1c39537c288830c3d305db to before 18e3ffde1822f0b48b1753bf34aa97ce839df1d8Affected
  • fd09af010788a884de1c39537c288830c3d305db to before 10f86a2a5c91fc4c4d001960f1c21abe52545ef6Affected
  • 48be3df15aa19c04eadf156c9129293c9a10389fAffected
  • cd4644d904e1d153d516e73e2e127e7a2fe687e1Affected
  • 6e0bc946cbeec538322820786b5fb5200a2216abAffected
  • a7e52f7f675046d9ffc5692d815fa67c82fcdbf5Affected
  • db7f8c57dbdd31f7e59f8dc8d1e1b38607a320efAffected
  • 5.7.18 to before 5.8Affected
  • 5.8.4 to before 5.9Affected
  • 5.4.61 to before 5.5Affected
LinuxLinux
  • 5.9Affected
  • before 5.9Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.101 through 6.12.*Not affected
  • 6.18.42 through 6.18.*Not affected
  • 7.0.10 through 7.0.*Not affected
  • 7.1 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.