{ "dataType": "CVE_RECORD", "cveMetadata": { "cveId": "CVE-2024-26885", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-02-19T14:20:24.185Z", "datePublished": "2024-04-17T10:27:40.300Z", "dateUpdated": "2026-08-05T11:28:10.593Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:28:10.593Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix DEVMAP_HASH overflow check on 32-bit arches\n\nThe devmap code allocates a number hash buckets equal to the next power\nof two of the max_entries value provided when creating the map. When\nrounding up to the next power of two, the 32-bit variable storing the\nnumber of buckets can overflow, and the code checks for overflow by\nchecking if the truncated 32-bit value is equal to 0. However, on 32-bit\narches the rounding up itself can overflow mid-way through, because it\nends up doing a left-shift of 32 bits on an unsigned long value. If the\nsize of an unsigned long is four bytes, this is undefined behaviour, so\nthere is no guarantee that we'll end up with a nice and tidy 0-value at\nthe end.\n\nSyzbot managed to turn this into a crash on arm32 by creating a\nDEVMAP_HASH with max_entries > 0x80000000 and then trying to update it.\nFix this by moving the overflow check to before the rounding up\noperation." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerability is reached only through the `bpf()` syscall (BPF_MAP_CREATE followed by BPF_MAP_UPDATE_ELEM), requiring local execution on the target; there is no remote or adjacent-network path into `dev_map_init_map()`.\nAC:L - The attacker fully controls both `max_entries` (chosen > 0x80000000) and the update key that becomes the out-of-bounds index, and on an affected 32-bit build the corruption is deterministic and repeatable with no race or unpredictable memory-layout requirement.\nPR:L - Map creation requires CAP_NET_ADMIN, but this is routinely held by ordinary non-root workloads — containers started with `--cap-add=NET_ADMIN` (no userns remapping, so `ns_capable(&init_user_ns, ...)` succeeds) and processes given a delegated BPF token whose userns grants the capability — so it is not equivalent to real administrative control of the host kernel.\nUI:N - The attacker performs both syscalls itself; no victim action, mount, or file open is involved.\nS:U - The corruption is confined to kernel memory within the same security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - With `n_buckets == 0` the bucket mask becomes 0xFFFFFFFF, so hash lookup and `dev_map_hash_get_next_key()` dereference an attacker-chosen address anywhere in the 32-bit space and walk it as an hlist, giving an arbitrary kernel-memory read/disclosure oracle.\nI:H - `hlist_add_head_rcu()` on the out-of-bounds head writes kernel heap pointers to the attacker-selected address (and to `first->pprev`), an arbitrary-write primitive readily leveraged into control-flow hijack and privilege escalation.\nA:H - This is the reported syzbot outcome — updating such a map dereferences a wild pointer off `ZERO_SIZE_PTR` and oopses/panics the kernel, trivially and repeatably." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "kernel/bpf/devmap.c" ], "versions": [ { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "1f5e352b9088211fa5eb4e1639cd365f4f7d2f65", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "4b81a9f92b3676cb74b907a7a209b3d15bd9a7f9", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "c826502bed93970f2fd488918a7b8d5f1d30e2e3", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "edf7990baa48de5097daa9ac02e06cb4c798a737", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "250051acc21f9d4c5c595e4fcb55986ea08c4691", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "22079b3a423382335f47d9ed32114e6c9fe88d7c", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "e89386f62ce9a9ab9a94835a9890883c23d9d52c", "status": "affected", "versionType": "git" }, { "version": "6f9d451ab1a33728adb72d7ff66a7b374d665176", "lessThan": "281d464a34f540de166cee74b723e97ac2515ec3", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "kernel/bpf/devmap.c" ], "versions": [ { "version": "5.4", "status": "affected" }, { "version": "0", "lessThan": "5.4", "status": "unaffected", "versionType": "semver" }, { "version": "5.4.285", "lessThanOrEqual": "5.4.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.10.227", "lessThanOrEqual": "5.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.15.153", "lessThanOrEqual": "5.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.83", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.23", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.7.11", "lessThanOrEqual": "6.7.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.8.2", "lessThanOrEqual": "6.8.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.9", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "5.4.285" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "5.10.227" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "5.15.153" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "6.1.83" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "6.6.23" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "6.7.11" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "6.8.2" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.4", "versionEndExcluding": "6.9" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/1f5e352b9088211fa5eb4e1639cd365f4f7d2f65" }, { "url": "https://git.kernel.org/stable/c/4b81a9f92b3676cb74b907a7a209b3d15bd9a7f9" }, { "url": "https://git.kernel.org/stable/c/c826502bed93970f2fd488918a7b8d5f1d30e2e3" }, { "url": "https://git.kernel.org/stable/c/edf7990baa48de5097daa9ac02e06cb4c798a737" }, { "url": "https://git.kernel.org/stable/c/250051acc21f9d4c5c595e4fcb55986ea08c4691" }, { "url": "https://git.kernel.org/stable/c/22079b3a423382335f47d9ed32114e6c9fe88d7c" }, { "url": "https://git.kernel.org/stable/c/e89386f62ce9a9ab9a94835a9890883c23d9d52c" }, { "url": "https://git.kernel.org/stable/c/281d464a34f540de166cee74b723e97ac2515ec3" } ], "title": "bpf: Fix DEVMAP_HASH overflow check on 32-bit arches", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CISA ADP Vulnrichment", "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-26885", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "total" } ], "version": "2.0.3", "timestamp": "2024-05-28T19:51:32.926370Z" } } } ], "affected": [ { "cpes": [ "cpe:2.3:o:linux:linux_kernel:5.4:*:*:*:*:*:*:*" ], "vendor": "linux", "product": "linux_kernel", "versions": [ { "status": "affected", "version": "5.4" }, { "status": "affected", "version": "6f9d451ab1a3" } ], "defaultStatus": "unknown" } ], "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-06-04T17:49:30.477Z" } }, { "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2024-08-02T00:21:05.424Z" }, "title": "CVE Program Container", "references": [ { "url": "https://git.kernel.org/stable/c/225da02acdc97af01b6bc6ce1a3e5362bf01d3fb", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/c826502bed93970f2fd488918a7b8d5f1d30e2e3", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/edf7990baa48de5097daa9ac02e06cb4c798a737", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/250051acc21f9d4c5c595e4fcb55986ea08c4691", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/22079b3a423382335f47d9ed32114e6c9fe88d7c", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/e89386f62ce9a9ab9a94835a9890883c23d9d52c", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/281d464a34f540de166cee74b723e97ac2515ec3", "tags": [ "x_transferred" ] }, { "url": "https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html", "tags": [ "x_transferred" ] } ] }, { "x_adpType": "supplier", "providerMetadata": { "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e", "shortName": "siemens-SADP", "dateUpdated": "2026-05-12T11:50:09.415Z" }, "affected": [ { "vendor": "Siemens", "product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem", "versions": [ { "status": "affected", "version": "0", "lessThan": "*", "versionType": "custom" } ], "defaultStatus": "unknown" } ], "references": [ { "url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html" } ] } ] }, "dataVersion": "5.2" }