High · published April 17, 2024
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix hashtab overflow check on 32-bit arches
The hashtab code relies on roundup_pow_of_two() to compute the number of
hash buckets, and contains an overflow check by checking if the
resulting value is 0. However, on 32-bit arches, the roundup code itself
can overflow by doing a 32-bit left-shift of an unsigned long value,
which is undefined behaviour, so it is not guaranteed to truncate
neatly. This was triggered by syzbot on the DEVMAP_HASH type, which
contains the same check, copied from the hashtab code. So apply the same
fix to hashtab, by moving the overflow check to before the roundup.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 3.19, < 4.19.311 | 4.19.311 |
| linux/linux_kernel | ≥ 4.20, < 5.4.273 | 5.4.273 |
| linux/linux_kernel | ≥ 5.5, < 5.10.214 | 5.10.214 |
| linux/linux_kernel | ≥ 5.11, < 5.15.153 | 5.15.153 |
| linux/linux_kernel | ≥ 5.16, < 6.1.83 | 6.1.83 |
| linux/linux_kernel | ≥ 6.2, < 6.6.23 | 6.6.23 |
| linux/linux_kernel | ≥ 6.7, < 6.7.11 | 6.7.11 |
| linux/linux_kernel | ≥ 6.8, < 6.8.2 | 6.8.2 |