{"id":"DEBIAN-CVE-2022-50450","details":"In the Linux kernel, the following vulnerability has been resolved:  libbpf: Use elf_getshdrnum() instead of e_shnum  This commit replace e_shnum with the elf_getshdrnum() helper to fix two oss-fuzz-reported heap-buffer overflow in __bpf_object__open. Both reports are incorrectly marked as fixed and while still being reproducible in the latest libbpf.    # clusterfuzz-testcase-minimized-bpf-object-fuzzer-5747922482888704   libbpf: loading object 'fuzz-object' from buffer   libbpf: sec_cnt is 0   libbpf: elf: section(1) .data, size 0, link 538976288, flags 2020202020202020, type=2   libbpf: elf: section(2) .data, size 32, link 538976288, flags 202020202020ff20, type=1   =================================================================   ==13==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000000c0 at pc 0x0000005a7b46 bp 0x7ffd12214af0 sp 0x7ffd12214ae8   WRITE of size 4 at 0x6020000000c0 thread T0   SCARINESS: 46 (4-byte-write-heap-buffer-overflow-far-from-bounds)       #0 0x5a7b45 in bpf_object__elf_collect /src/libbpf/src/libbpf.c:3414:24       #1 0x5733c0 in bpf_object_open /src/libbpf/src/libbpf.c:7223:16       #2 0x5739fd in bpf_object__open_mem /src/libbpf/src/libbpf.c:7263:20       ...  The issue lie in libbpf's direct use of e_shnum field in ELF header as the section header count. Where as libelf implemented an extra logic that, when e_shnum == 0 && e_shoff != 0, will use sh_size member of the initial section header as the real section header count (part of ELF spec to accommodate situation where section header counter is larger than SHN_LORESERVE).  The above inconsistency lead to libbpf writing into a zero-entry calloc area. So intead of using e_shnum directly, use the elf_getshdrnum() helper provided by libelf to retrieve the section header counter into sec_cnt.","modified":"2025-11-04T14:19:36.954906Z","published":"2025-10-01T12:15:37Z","withdrawn":"2025-11-04T14:19:36.954906Z","upstream":["CVE-2022-50450"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2022-50450"}],"affected":[{"package":{"name":"linux","ecosystem":"Debian:12","purl":"pkg:deb/debian/linux?arch=source"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.4-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2022-50450.json"}},{"package":{"name":"linux","ecosystem":"Debian:13","purl":"pkg:deb/debian/linux?arch=source"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.4-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2022-50450.json"}},{"package":{"name":"linux","ecosystem":"Debian:14","purl":"pkg:deb/debian/linux?arch=source"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.4-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2022-50450.json"}}],"schema_version":"1.7.3"}