{"id":"CVE-2024-50262","state":"PUBLISHED","title":"bpf: Fix out-of-bounds write in trie_get_next_key()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix out-of-bounds write in trie_get_next_key()\n\ntrie_get_next_key() allocates a node stack with size trie->max_prefixlen,\nwhile it writes (trie->max_prefixlen + 1) nodes to the stack when it has\nfull paths from the root to leaves. For example, consider a trie with\nmax_prefixlen is 8, and the nodes with key 0x00/0, 0x00/1, 0x00/2, ...\n0x00/8 inserted. Subsequent calls to trie_get_next_key with _key with\n.prefixlen = 8 make 9 nodes be written on the node stack with size 8.","publishedAt":"2024-11-09T10:17:50.461Z","updatedAt":"2026-10-15T00:57:42.947Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"e8494ac079814a53fbc2258d2743e720907488ed","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"91afbc0eb3c90258ae378ae3c6ead3d2371e926d","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"590976f921723d53ac199c01d5b7b73a94875e68","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"86c8ebe02d8806dd8878d0063e8e185622ab6ea6","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"a035df0b98df424559fd383e8e1a268f422ea2ba","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"90a6e0e1e151ef7a9282e78f54c3091de2dcc99c","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"c4b4f9a9ab82238cb158fa4fe61a8c0ae21a4980","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"13400ac8fb80c57c2bfb12ebd35ee121ce9b4d21","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/bpf/lpm_trie.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.16","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.16","versionType":"semver"},{"version":"4.19.323","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.285","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.229","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.171","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.116","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.60","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.7","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/bpf/lpm_trie.c"]}],"references":["https://git.kernel.org/stable/c/e8494ac079814a53fbc2258d2743e720907488ed","https://git.kernel.org/stable/c/91afbc0eb3c90258ae378ae3c6ead3d2371e926d","https://git.kernel.org/stable/c/590976f921723d53ac199c01d5b7b73a94875e68","https://git.kernel.org/stable/c/86c8ebe02d8806dd8878d0063e8e185622ab6ea6","https://git.kernel.org/stable/c/a035df0b98df424559fd383e8e1a268f422ea2ba","https://git.kernel.org/stable/c/90a6e0e1e151ef7a9282e78f54c3091de2dcc99c","https://git.kernel.org/stable/c/c4b4f9a9ab82238cb158fa4fe61a8c0ae21a4980","https://git.kernel.org/stable/c/13400ac8fb80c57c2bfb12ebd35ee121ce9b4d21","https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html","https://cert-portal.siemens.com/productcert/html/ssa-398330.html","https://cert-portal.siemens.com/productcert/html/ssa-265688.html","https://cert-portal.siemens.com/productcert/html/ssa-355557.html"],"weaknesses":["CWE-787"],"ingestedAt":"2026-10-29T20:07:56.516Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/50xxx/CVE-2024-50262.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-50262","state":"PUBLISHED","datePublished":"2024-11-09T10:17:50.461Z","dateUpdated":"2026-10-15T00:57:42.947Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-10-21T19:36:19.981Z"},"containers":{"cna":{"title":"bpf: Fix out-of-bounds write in trie_get_next_key()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Fix out-of-bounds write in trie_get_next_key()\n\ntrie_get_next_key() allocates a node stack with size trie->max_prefixlen,\nwhile it writes (trie->max_prefixlen + 1) nodes to the stack when it has\nfull paths from the root to leaves. For example, consider a trie with\nmax_prefixlen is 8, and the nodes with key 0x00/0, 0x00/1, 0x00/2, ...\n0x00/8 inserted. Subsequent calls to trie_get_next_key with _key with\n.prefixlen = 8 make 9 nodes be written on the node stack with size 8."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"e8494ac079814a53fbc2258d2743e720907488ed","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"91afbc0eb3c90258ae378ae3c6ead3d2371e926d","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"590976f921723d53ac199c01d5b7b73a94875e68","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"86c8ebe02d8806dd8878d0063e8e185622ab6ea6","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"a035df0b98df424559fd383e8e1a268f422ea2ba","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"90a6e0e1e151ef7a9282e78f54c3091de2dcc99c","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"c4b4f9a9ab82238cb158fa4fe61a8c0ae21a4980","versionType":"git"},{"version":"b471f2f1de8b816f1e799b80aa92588f3566e4bd","status":"affected","lessThan":"13400ac8fb80c57c2bfb12ebd35ee121ce9b4d21","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/bpf/lpm_trie.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.16","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.16","versionType":"semver"},{"version":"4.19.323","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.285","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.229","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.171","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.116","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.60","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.7","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/bpf/lpm_trie.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/e8494ac079814a53fbc2258d2743e720907488ed"},{"url":"https://git.kernel.org/stable/c/91afbc0eb3c90258ae378ae3c6ead3d2371e926d"},{"url":"https://git.kernel.org/stable/c/590976f921723d53ac199c01d5b7b73a94875e68"},{"url":"https://git.kernel.org/stable/c/86c8ebe02d8806dd8878d0063e8e185622ab6ea6"},{"url":"https://git.kernel.org/stable/c/a035df0b98df424559fd383e8e1a268f422ea2ba"},{"url":"https://git.kernel.org/stable/c/90a6e0e1e151ef7a9282e78f54c3091de2dcc99c"},{"url":"https://git.kernel.org/stable/c/c4b4f9a9ab82238cb158fa4fe61a8c0ae21a4980"},{"url":"https://git.kernel.org/stable/c/13400ac8fb80c57c2bfb12ebd35ee121ce9b4d21"}],"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 exclusively through the local `bpf()` syscall (BPF_MAP_GET_NEXT_KEY / BPF_MAP_LOOKUP_BATCH) against an LPM_TRIE map fd. No network-facing code path processes remote data through trie_get_next_key().\nAC:L - The overflow is fully deterministic — the attacker builds the trie with keys 0x00/0 … 0x00/max_prefixlen and issues one GET_NEXT_KEY with prefixlen == max_prefixlen. No race, no timing dependency, and the attacker also chooses key_size so the allocation sits exactly on a kmalloc bucket boundary, and can repeat the trigger arbitrarily to groom the heap.\nPR:L - Creating the map nominally needs CAP_BPF, but `bpf_token_capable()` honors ns_capable() against a BPF-token user namespace, so a delegated bpffs mount grants it to an unprivileged container process; furthermore `bpf_obj_get()` performs only a file-permission check and `map_get_next_key()` requires only FMODE_CAN_READ, so an unprivileged process holding or opening an existing pinned LPM_TRIE map fd can trigger the write with no capability at all.\nUI:N - Exploitation is entirely self-contained in the attacker's own process — map creation, element insertion, and the GET_NEXT_KEY call. No victim action of any kind is required.\nS:U - The out-of-bounds write corrupts kernel slab memory within the same kernel security authority; it is a standard local privilege-escalation surface rather than a crossing of a VM, IOMMU, or sandbox boundary.\nC:H - The 8-byte heap overflow overwrites the first field of the adjacent slab object with a pointer to attacker-controlled data, which for the many kmalloc-64/128/256 objects that begin with a pointer yields a fake-object read primitive and, via freelist corruption, arbitrary kernel memory disclosure.\nI:H - This is a controllable out-of-bounds heap write of a valid kernel pointer at a precisely chosen slab bucket boundary, repeatable at will — a classic path to SLUB freelist corruption, arbitrary write, and control-flow hijack for privilege escalation.\nA:H - Corrupting the head of an adjacent slab object or a SLUB freelist pointer reliably produces kernel oops/panic, and the trigger can be issued repeatedly by any process holding a readable LPM_TRIE map fd."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:42:51.880Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"4.19.323"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.4.285"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.10.229"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"5.15.171"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.1.116"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.6.60"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.11.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.16","versionEndExcluding":"6.12"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":7.8,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"id":"CVE-2024-50262","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2024-12-11T15:09:18.664200Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-787","lang":"en","type":"CWE","description":"CWE-787 Out-of-bounds Write"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-12-11T15:18:34.769Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html"},{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:27:42.104Z"}},{"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.0","status":"affected","lessThan":"V3.1.5","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.0","status":"affected","lessThan":"V3.1.5","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.0","status":"affected","lessThan":"V3.1.5","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.0","status":"affected","lessThan":"V3.1.5","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V1.1.1","versionType":"custom"}]},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.0","status":"affected","lessThan":"V3.1.5","versionType":"custom"}]},{"vendor":"Siemens","product":"RUGGEDCOM RST2428P","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V3.2","versionType":"custom"}]},{"vendor":"Siemens","product":"SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V3.2","versionType":"custom"}]},{"vendor":"Siemens","product":"SCALANCE XCM-/XRM-/XCH-/XRH-300 family","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V3.2","versionType":"custom"}]}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-398330.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-265688.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-355557.html"}],"providerMetadata":{"shortName":"siemens-SADP","orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","dateUpdated":"2026-10-15T00:57:42.947Z"},"x_adpType":"supplier"}]}}}