CVE-2024-26885CWE-119

CVE-2024-26885

High · published April 17, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
15.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

bpf: Fix DEVMAP_HASH overflow check on 32-bit arches

The devmap code allocates a number hash buckets equal to the next power

of two of the max_entries value provided when creating the map. When

rounding up to the next power of two, the 32-bit variable storing the

number of buckets can overflow, and the code checks for overflow by

checking if the truncated 32-bit value is equal to 0. However, on 32-bit

arches the rounding up itself can overflow mid-way through, because it

ends up doing a left-shift of 32 bits on an unsigned long value. If the

size of an unsigned long is four bytes, this is undefined behaviour, so

there is no guarantee that we'll end up with a nice and tidy 0-value at

the end.

Syzbot managed to turn this into a crash on arm32 by creating a

DEVMAP_HASH with max_entries > 0x80000000 and then trying to update it.

Fix this by moving the overflow check to before the rounding up

operation.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00250 · 15.4th percentile
Weakness
CWE-119 · Improper Restriction of Operations within the Bounds of a Memory Buffer
Published
2024-04-17T15:15Z
Affected products (6)
ProductVersionsFixed in
linux/linux_kernel≥ 5.4, < 5.10.2145.10.214
linux/linux_kernel≥ 5.11, < 5.15.1535.15.153
linux/linux_kernel≥ 5.16, < 6.1.836.1.83
linux/linux_kernel≥ 6.2, < 6.6.236.6.23
linux/linux_kernel≥ 6.7, < 6.7.116.7.11
linux/linux_kernel≥ 6.8, < 6.8.26.8.2
References (17)
https://git.kernel.org/stable/c/1f5e352b9088211fa5eb4e1639cd365f4f7d2f65 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/22079b3a423382335f47d9ed32114e6c9fe88d7c · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/250051acc21f9d4c5c595e4fcb55986ea08c4691 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/281d464a34f540de166cee74b723e97ac2515ec3 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/4b81a9f92b3676cb74b907a7a209b3d15bd9a7f9 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/c826502bed93970f2fd488918a7b8d5f1d30e2e3 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/e89386f62ce9a9ab9a94835a9890883c23d9d52c · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/edf7990baa48de5097daa9ac02e06cb4c798a737 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/22079b3a423382335f47d9ed32114e6c9fe88d7c · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/225da02acdc97af01b6bc6ce1a3e5362bf01d3fb · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/250051acc21f9d4c5c595e4fcb55986ea08c4691 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/281d464a34f540de166cee74b723e97ac2515ec3 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/c826502bed93970f2fd488918a7b8d5f1d30e2e3 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/e89386f62ce9a9ab9a94835a9890883c23d9d52c · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/edf7990baa48de5097daa9ac02e06cb4c798a737 · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html · af854a3a-2127-422b-91ae-364da2661108https://cert-portal.siemens.com/productcert/html/ssa-265688.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5e
EPSS history
Timeline
  • 17 APR 10:27Z
    bpf: Fix DEVMAP_HASH overflow check on 32-bit arches
    cvelistv5