High · published August 16, 2025
In the Linux kernel, the following vulnerability has been resolved:
bpf: Reject %p% format string in bprintf-like helpers
static const char fmt[] = "%p%";
bpf_trace_printk(fmt, sizeof(fmt));
The above BPF program isn't rejected and causes a kernel warning at
runtime:
Please remove unsupported %\x00 in format string
WARNING: CPU: 1 PID: 7244 at lib/vsprintf.c:2680 format_decode+0x49c/0x5d0
This happens because bpf_bprintf_prepare skips over the second %,
detected as punctuation, while processing %p. This patch fixes it by
not skipping over punctuation. %\x00 is then processed in the next
iteration and rejected.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 6.13, < 6.15.8 | 6.15.8 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | ≥ 5.13, < 5.15.190 | 5.15.190 |
| linux/linux_kernel | ≥ 5.16, < 6.1.147 | 6.1.147 |
| linux/linux_kernel | ≥ 6.2, < 6.6.100 | 6.6.100 |
| linux/linux_kernel | ≥ 6.7, < 6.12.40 | 6.12.40 |
| debian/debian_linux | all versions | — |