Binutils: binutils: out-of-bounds write in bfd dlx elf backend relocation processing
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- 1 proof of concept on GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
An out-of-bounds write vulnerability was found in the BFD library's DLX ELF backend (bfd/elf32-dlx.c) in GNU binutils. The dlx_rtype_to_howto() function maps ELF relocation types to internal howto structures but fails to perform adequate bounds checking on attacker-controlled relocation type values (via ELF32_R_TYPE(r_info)) before indexing into the dlx_elf_howto_table[] array. The DLX relocation type number space is non-contiguous (basic types 0-6, extended types at 0x10000+), but the default case in the switch statement allows arbitrary index values to reach the array access. A specially crafted ELF/DLX object file can trigger this out-of-bounds write when processed by any BFD-consuming tool (objdump, readelf, strip, ld, nm, objcopy). The vulnerability has been demonstrated to achieve arbitrary code execution via a File Stream Oriented Programming (FSOP) attack against glibc FILE structures (stderr), redirecting control flow to system(). Attack scenarios include CI/CD pipelines performing automated binary analysis, developer workstations running objdump/readelf on untrusted binaries, automated security scanning or malware analysis tools invoking binutils, and package build systems processing third-party code. Note: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- binutils
Version range not reported
- gcc-toolset-15-binutils
Version range not reported
- gcc-toolset-16-binutils
Version range not reported
- gdb
Version range not reported
- mingw-binutils
Version range not reported
- binutils
Version range not reported
- binutils
Version range not reported
- gdb
Version range not reported
- binutils
Version range not reported
- gcc-toolset-14-binutils
Version range not reported
- gcc-toolset-14-gdb
Version range not reported
- gcc-toolset-15-binutils
Version range not reported
- gcc-toolset-15-gdb
Version range not reported
- gdb
Version range not reported
- mingw-binutils
Version range not reported
- binutils
Version range not reported
- gcc-toolset-14-binutils
Version range not reported
- gcc-toolset-15-binutils
Version range not reported
- gcc-toolset-16-binutils
Version range not reported
- gdb
Version range not reported
- mingw-binutils
Version range not reported
- binutils
Version range not reported
- rhcos
Version range not reported