Skip to main content
← All vulnerabilities
CVE-2026-18220

Binutils: binutils: out-of-bounds write in bfd dlx elf backend relocation processing

Published
Last modified
published
Not listed in CISA KEV
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

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: total

  3. 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

References 3

access.redhat.com

bugzilla.redhat.com

GitHub · 4D4J/objdump-Out-Of-Bounds-write