CVEvulnerability
CVE-2026-98033
- Status
- Received
- Published
- 2026-09-25
- Last modified
- 2026-10-21
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Description
In the Linux kernel, the following vulnerability has been resolved:
bpf: Preserve inner map identity in callback frames
Callback frame constructors initialize map-typed argument registers with
__mark_reg_known_zero() and then restore map_ptr. This clears map_uid,
which is the only field distinguishing inner maps that share an
inner_map_meta template.
When a timer callback invokes bpf_for_each_map_elem() on a second inner
map, both the saved first map and the second map value can reach the nested
callback as the same template with map_uid zero. bpf_timer_init() then
accepts pairing the timer from the second map with the first map.
The runtime records the first map in the timer without taking a reference.
Freeing that map does not find the timer stored in the second map, so a
later timer callback dereferences the freed map.
Copy map_uid from the same caller register as map_ptr when constructing
for-each, timer/workqueue, and task-work callback arguments. The existing
identity check can then reject mismatched inner maps while allowing a
callback value to be paired with its actual map.
References
- https://git.kernel.org/stable/c/08b534bafdd9de65b6374474a8fe719c90eb3b01 git.kernel.org
- https://git.kernel.org/stable/c/166221c52d3ca332f8699a854efca8e2704bb137 git.kernel.org
- https://git.kernel.org/stable/c/66ff2eff093d2a0838f39c713eeb590bc0946c2a git.kernel.org
- https://git.kernel.org/stable/c/b90c5d770dad910fb89e6c1b15052a8a1e8db752 git.kernel.org
- https://git.kernel.org/stable/c/cf85e4f94d7feef8b3c4c90dbe2468595a48393b git.kernel.org