Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved: bpf: account for current allocated stack depth in widen_imprecise_scalars() The usage pattern for widen_imprecise_scalars() looks as follows: prev_st = find_prev_entry(env, …); queued_st = push_stack(…); widen_imprecise_scalars(env, prev_st, queued_st); Where prev_st is an ancestor of the queued_st in the explored states tree. This ancestor is not guaranteed to have same allocated stack depth as queued_st. E.g. in the following case: def main(): for i in 1..2: foo(i) // same callsite, differnt param def foo(i): if i == 1: use 128 bytes of stack iterator based loop Here, for a second ‘foo’ call prev_st->allocated_stack is 128, while queued_st->allocated_stack is much smaller. widen_imprecise_scalars() needs to take this into account and avoid accessing bpf_verifier_state->frame[*]->stack out of bounds. An out-of-bounds access vulnerability was found in the BPF verifier in the Linux kernel. The widen_imprecise_scalars() function compares verifier states with different allocated stack depths without bounds checking. This can cause out-of-bounds stack array access when the ancestor state has larger stack allocation than the current state.Details
KernelCare state
Live-patch status from KernelCare for each operating system.
| Operating system | Status | Covered kernels |
|---|---|---|
| Debian 13 | Will Not Fix | — |
| Ubuntu 24.04 | Released |
39 kernels
|
| Ubuntu 24.04 AWS | Planned | — |