Skip to main content
← All vulnerabilities
CVE-2026-72111

bpf: Reset register bounds before narrowing retval range in check_mem_access()

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 6.11, 6.12, 6.12.103, 6.18.40, 7.1.5
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: bpf: Reset register bounds before narrowing retval range in check_mem_access() When the BPF verifier processes a context load of an LSM hook return value, it calls __mark_reg_s32_range() to narrow the register to the hook's valid range. However, __mark_reg_s32_range() intersects the new range with the register's existing bounds using max_t()/min_t() rather than replacing them. If the destination register carries stale bounds from a prior instruction (e.g. BPF_MOV64_IMM), the intersection can produce a range narrower than reality. The verifier then believes it knows the register's exact value, while at runtime the actual hook return value is loaded, creating a verifier/runtime mismatch that can be used to bypass BPF memory safety checks. The else branch already calls mark_reg_unknown() to reset register state before any narrowing. Apply the same reset in the is_retval path so stale bounds are cleared before __mark_reg_s32_range() intersects.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: total

  3. Record last updated

Affected versions

  • Linux Linux

    From 5d99e198be279045e6ecefe220f5c52f8ce9bfd5 · fixed in bde92f65042ec14389782dd223f706bf6b59ce5d; From 5d99e198be279045e6ecefe220f5c52f8ce9bfd5 · fixed in 0993dc5fc619c0b25ab1310cb11d65e78351c0fe; From 5d99e198be279045e6ecefe220f5c52f8ce9bfd5 · fixed in 5a55f9aecc08990940e70f0c7048a80850c5a16a; From 5d99e198be279045e6ecefe220f5c52f8ce9bfd5 · fixed in 5e0b273e0a62cc04ec338c7b502797c66c2ed42a; From 6.10.13 · fixed in 6.11; From 6.11.2 · fixed in 6.12

  • Linux Linux

    6.12

  • KernelLinux

    From 6.12.0 · fixed in 6.12.103; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5

References 4

git.kernel.org