Description
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix accesses to uninit stack slots
Privileged programs are supposed to be able to read uninitialized stack
memory (ever since 6715df8d5) but, before this patch, these accesses
were permitted inconsistently. In particular, accesses were permitted
above state->allocated_stack, but not below it. In other words, if the
stack was already "large enough", the access was permitted, but
otherwise the access was rejected instead of being allowed to "grow the
stack". This undesired rejection was happening in two places:
- in check_stack_slot_within_bounds()
- in check_stack_range_initialized()
This patch arranges for these accesses to be permitted. A bunch of tests
that were relying on the old rejection had to change; all of them were
changed to add also run unprivileged, in which case the old behavior
persists. One tests couldn't be updated - global_func16 - because it
can't run unprivileged for other reasons.
This patch also fixes the tracking of the stack size for variable-offset
reads. This second fix is bundled in the same commit as the first one
because they're inter-related. Before this patch, writes to the stack
using registers containing a variable offset (as opposed to registers
with fixed, known values) were not properly contributing to the
function's needed stack size. As a result, it was possible for a program
to verify, but then to attempt to read out-of-bounds data at runtime
because a too small stack had been allocated for it.
Each function tracks the size of the stack it needs in
bpf_subprog_info.stack_depth, which is maintained by
update_stack_depth(). For regular memory accesses, check_mem_access()
was calling update_state_depth() but it was passing in only the fixed
part of the offset register, ignoring the variable offset. This was
incorrect; the minimum possible value of that register should be used
instead.
This tracking is now fixed by centralizing the tracking of stack size in
grow_stack_state(), and by lifting the calls to grow_stack_state() to
check_stack_access_within_bounds() as suggested by Andrii. The code is
now simpler and more convincingly tracks the correct maximum stack size.
check_stack_range_initialized() can now rely on enough stack having been
allocated for the access; this helps with the fix for the first issue.
A few tests were changed to also check the stack depth computation. The
one that fails without this patch is verifier_var_off:stack_write_priv_vs_unpriv.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.10.33 – < 5.11, 5.11.17 – < 5.12, 5.12 | 5.11 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 6.6.15-1 | — |
| Debian 13 | linux | 6.6.15-1 | — |
| Debian 12 | linux | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Nvidia-BlueField 22.04 LTS | linux-bluefield | No fix yet | — |
| Ubuntu 22.04 LTS | linux +40 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-azure-6.5 | 6.5.0-1022.23~22.04.1 | USN-6819-1 |
| Ubuntu 22.04 LTS | linux-gcp-6.5 | 6.5.0-1022.24~22.04.1 | USN-6818-1 |
| Ubuntu 22.04 LTS | linux-hwe-6.5 | 6.5.0-41.41~22.04.2 | USN-6818-4 |
| Ubuntu 22.04 LTS | linux-lowlatency-hwe-6.5 | 6.5.0-41.41.1~22.04.1 | USN-6818-1 |
| Ubuntu 22.04 LTS | linux-nvidia-6.5 | 6.5.0-1021.22 | USN-6818-3 |
| Ubuntu 22.04 LTS | linux-oem-6.5 | 6.5.0-1024.25 | USN-6819-3 |
| Ubuntu 22.04 LTS | linux-oracle-6.5 | 6.5.0-1024.24~22.04.1 | USN-6819-4 |
| Ubuntu 22.04 LTS | linux-riscv-6.5 | 6.5.0-40.40.1~22.04.1 | — |
| Ubuntu 22.04 LTS | linux-starfive-6.5 | 6.5.0-1015.16~22.04.1 | USN-6819-1 |
| Ubuntu 20.04 LTS | linux-gke +27 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +13 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
Show 5 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro Realtime 24.04 LTS | linux-raspi-realtime | 6.8.0-2001.1 | — |
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime +1 | No fix yet | — |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS-preview 22.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro 20.04 LTS | linux-aws-5.15 +10 | No fix yet | — |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP5 | kernel-64kb +6 | 5.14.21-150500.55.52.1 | SUSE-SU-2024:0858-1 |
| SLES 15 SP5 | kernel-azure +2 | 5.14.21-150500.33.37.1 | SUSE-SU-2024:0855-1 |
| SLES 15 SP5 | kernel-default-base | 5.14.21-150500.55.52.1.150500.6.23.1 | SUSE-SU-2024:0858-1 |
| SLES 15 SP4 | kernel-64kb +3 | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLES 15 SP4 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| SLES 15 SP4 | kernel-syms +2 | 5.14.21-150400.24.111.1 | SUSE-SU-2024:0900-1 |
Show 10 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP4 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| SLES for SAP 15 SP4 | kernel-docs +1 | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLES for SAP 15 SP4 | kernel-syms +2 | 5.14.21-150400.24.111.1 | SUSE-SU-2024:0900-1 |
| SLE Micro 5.5 | kernel-default | 5.14.21-150500.55.52.1 | SUSE-SU-2024:0858-1 |
| SLE Micro 5.5 | kernel-default-base | 5.14.21-150500.55.52.1.150500.6.23.1 | SUSE-SU-2024:0858-1 |
| SLE Micro 5.5 | kernel-rt +1 | 5.14.21-150500.13.38.1 | SUSE-SU-2024:0910-1 |
| SLE Micro 5.4 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLE Micro 5.4 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| SLE Micro 5.4 | kernel-rt +1 | 5.14.21-150400.15.71.1 | SUSE-SU-2024:0977-1 |
| SLE Micro 5.3 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLE Micro 5.3 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| SLE Micro 5.3 | kernel-rt +1 | 5.14.21-150400.15.71.1 | SUSE-SU-2024:0977-1 |
| SLE Live Patching 15 SP5 | kernel-default | 5.14.21-150500.55.52.1 | SUSE-SU-2024:0858-1 |
| SLE Live Patching 15 SP5 | kernel-livepatch-SLE15-SP5_Update_11 +1 | 1-150500.11.3.1 | SUSE-SU-2024:0910-1, SUSE-SU-2024:0858-1 |
| SLE Live Patching 15 SP4 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLE Live Patching 15 SP4 | kernel-livepatch-SLE15-SP4-RT_Update_19 | 1-150400.1.3.1 | SUSE-SU-2024:0977-1 |
| SLE Live Patching 15 SP4 | kernel-livepatch-SLE15-SP4_Update_24 | 1-150400.9.3.1 | SUSE-SU-2024:0900-1 |
| SLE HPC 15 SP4 | kernel-64kb +2 | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| SLE HPC 15 SP4 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| SLE HPC 15 SP4 | kernel-syms +2 | 5.14.21-150400.24.111.1 | SUSE-SU-2024:0900-1 |
| SUSE Real Time Module 15 SP5 | kernel-rt +3 | 5.14.21-150500.13.38.1 | SUSE-SU-2024:0910-1 |
| SUSE Manager Server 4.3 | kernel-default +1 | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
| SUSE Manager Server 4.3 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
| SUSE Manager Server 4.3 | kernel-syms +1 | 5.14.21-150400.24.111.1 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
| SUSE Manager Proxy 4.3 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
| SUSE Manager Proxy 4.3 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
| SUSE Manager Proxy 4.3 | kernel-syms +1 | 5.14.21-150400.24.111.1 | SUSE-SU-2024:0900-2, SUSE-SU-2024:0900-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Leap 15.5 | dtb-aarch64 +10 | 5.14.21-150500.55.52.1 | SUSE-SU-2024:0858-1 |
| openSUSE Leap 15.5 | kernel-azure +2 | 5.14.21-150500.33.37.1 | SUSE-SU-2024:0855-1 |
| openSUSE Leap 15.5 | kernel-default-base | 5.14.21-150500.55.52.1.150500.6.23.1 | SUSE-SU-2024:0858-1 |
| openSUSE Leap 15.5 | kernel-rt +3 | 5.14.21-150500.13.38.1 | SUSE-SU-2024:0910-1 |
Show 2 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Leap Micro 5.4 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| openSUSE Leap Micro 5.4 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| openSUSE Leap Micro 5.4 | kernel-rt | 5.14.21-150400.15.71.1 | SUSE-SU-2024:0977-1 |
| openSUSE Leap Micro 5.3 | kernel-default | 5.14.21-150400.24.111.2 | SUSE-SU-2024:0900-1 |
| openSUSE Leap Micro 5.3 | kernel-default-base | 5.14.21-150400.24.111.2.150400.24.52.1 | SUSE-SU-2024:0900-1 |
| openSUSE Leap Micro 5.3 | kernel-rt | 5.14.21-150400.15.71.1 | SUSE-SU-2024:0977-1 |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 2 (CBL-Mariner) | kernel | No fix yet | — |
Advisories 13
- USN-6819-4 linux-oracle-6.5 vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- USN-6818-3 linux-nvidia-6.5 vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- USN-6818-1 linux, linux-gcp, linux-gcp-6.5, linux-lowlatency, linux-lowlatency-hwe-6.5, linux-raspi vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- USN-6819-3 linux-oem-6.5 vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- USN-6818-4 linux-hwe-6.5 vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- USN-6819-1 linux-azure, linux-azure-6.5, linux-starfive, linux-starfive-6.5 vulnerabilities Ubuntu Security Notices (USN) · Nov 3, 2026
- WID-SEC-2024-0473 Linux Kernel: Mehrere Schwachstellen BSI CERT-Bund (WID) · Feb 16, 2026
- SUSE-SU-2024:0977-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0858-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0855-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0910-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
- SUSE-SU-2024:0900-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · May 2, 2025
- SUSE-SU-2024:0900-2 Security update for the Linux Kernel SUSE / openSUSE Security Updates · May 2, 2025