{"id":"CVE-2026-18220","aliases":["DEBIAN-CVE-2026-18220","EUVD-2026-50279","GHSA-9x84-fgv4-3chj","UBUNTU-CVE-2026-18220","openSUSE-SU-2026:11932-1"],"status":"published","title":"Binutils: binutils: out-of-bounds write in bfd dlx elf backend relocation processing","description":"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.\n\nA 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().\n\nAttack 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.\n\nNote: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).","severity":{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00186,"percentile":0.08266,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":false},"cwes":["CWE-787"],"published":"2026-07-29T09:47:51Z","modified":"2026-10-01T11:15:05Z","exploits":[{"source":"pocgithub","id":"4D4J/objdump-Out-Of-Bounds-write","title":"4D4J/objdump-Out-Of-Bounds-write","date":"2026-06-22","url":"https://github.com/4D4J/objdump-Out-Of-Bounds-write"}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"binutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.40-2","2.40.50.20230111-1","2.40.50.20230215-1","2.40.50.20230501-1","2.40.50.20230510-1","2.40.50.20230602-1","2.40.50.20230611-1","2.40.50.20230611-2","2.40.50.20230622-1","2.40.50.20230625-1","2.40.50.20230630-1","2.40.90.20230705-1","2.40.90.20230714-1","2.40.90.20230714-2","2.40.90.20230720-1","2.40.90.20230729-1","2.40.90.20230729-2","2.41-1","2.41-2","2.41-3","2.41-4","2.41-5","2.41-6","2.41-7","2.41.50.20230731-1","2.41.50.20230803-1","2.41.50.20230905-1","2.41.50.20231010-1","2.41.50.20231101-1","2.41.50.20231125-1","2.41.50.20231202-1","2.41.50.20231206-1","2.41.50.20231214-1","2.41.50.20231227-1","2.41.90.20240115-1","2.41.90.20240122-1","2.42-1","2.42-2","2.42-2+hurd.1","2.42-3","2.42-4","2.42.50.20240614-1","2.42.50.20240618-1","2.42.50.20240625-1","2.42.50.20240710-1","2.42.90.20240720-1","2.42.90.20240720-2","2.43-1","2.43-2","2.43.1-1","2.43.1-2","2.43.1-3","2.43.1-4","2.43.1-5","2.43.50.20240817-1","2.43.50.20240909-1","2.43.50.20241004-1","2.43.50.20241112-1","2.43.50.20241126-1","2.43.50.20241126-2","2.43.50.20241126-3","2.43.50.20241204-1","2.43.50.20241204-2","2.43.50.20241210-1","2.43.50.20241215-1","2.43.50.20241221-1","2.43.50.20241230-1","2.43.50.20250108-1","2.43.90.20250122-1","2.43.90.20250122-2","2.43.90.20250127-1","2.43.90.20250202-1","2.44-1","2.44-2","2.44-3","2.44.50.20250201-1","2.44.50.20250207-1","2.44.50.20250218-1","2.44.50.20250218-2","2.44.50.20250309-1","2.44.50.20250405-1","2.44.50.20250502-1","2.44.50.20250520-1","2.44.50.20250528-1","2.44.50.20250707-1","2.44.90.20250719-1","2.45-1","2.45-2","2.45-3","2.45-4","2.45-5","2.45-6","2.45-7","2.45-8","2.45.50.20250813-1","2.45.50.20250903-1","2.45.50.20251005-1","2.45.50.20251023-1","2.45.50.20251023-2","2.45.50.20251122-1","2.45.50.20251125-1","2.45.50.20251201-1","2.45.50.20251209-1","2.45.50.20260116-1","2.45.50.20260119-1","2.45.90.20260125-1","2.45.90.20260201-1","2.46-1","2.46-2","2.46-3","2.46.50.20260216-1","2.46.50.20260509-1","2.46.50.20260519-1","2.46.50.20260608-1","2.46.50.20260617-1","2.46.90.20260712-1","2.47-1","2.47-2","2.47-3","2.47-4","2.47-5","2.47-6","2.47.50.20260813-1","2.47.50.20260813-2","2.47.50.20260813-3","2.47.50.20260901-1"]},{"source":"osv","ecosystem":"Debian:13","package":"binutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.44-3","2.44.50.20250201-1","2.44.50.20250207-1","2.44.50.20250218-1","2.44.50.20250218-2","2.44.50.20250309-1","2.44.50.20250405-1","2.44.50.20250502-1","2.44.50.20250520-1","2.44.50.20250528-1","2.44.50.20250707-1","2.44.90.20250719-1","2.45-1","2.45-2","2.45-3","2.45-4","2.45-5","2.45-6","2.45-7","2.45-8","2.45.50.20250813-1","2.45.50.20250903-1","2.45.50.20251005-1","2.45.50.20251023-1","2.45.50.20251023-2","2.45.50.20251122-1","2.45.50.20251125-1","2.45.50.20251201-1","2.45.50.20251209-1","2.45.50.20260116-1","2.45.50.20260119-1","2.45.90.20260125-1","2.45.90.20260201-1","2.46-1","2.46-2","2.46-3","2.46.50.20260216-1","2.46.50.20260509-1","2.46.50.20260519-1","2.46.50.20260608-1","2.46.50.20260617-1","2.46.90.20260712-1","2.47-1","2.47-2","2.47-3","2.47-4","2.47-5","2.47-6","2.47.50.20260813-1","2.47.50.20260813-2","2.47.50.20260813-3","2.47.50.20260901-1"]},{"source":"osv","ecosystem":"Debian:14","package":"binutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.44-3","2.44.50.20250201-1","2.44.50.20250207-1","2.44.50.20250218-1","2.44.50.20250218-2","2.44.50.20250309-1","2.44.50.20250405-1","2.44.50.20250502-1","2.44.50.20250520-1","2.44.50.20250528-1","2.44.50.20250707-1","2.44.90.20250719-1","2.45-1","2.45-2","2.45-3","2.45-4","2.45-5","2.45-6","2.45-7","2.45-8","2.45.50.20250813-1","2.45.50.20250903-1","2.45.50.20251005-1","2.45.50.20251023-1","2.45.50.20251023-2","2.45.50.20251122-1","2.45.50.20251125-1","2.45.50.20251201-1","2.45.50.20251209-1","2.45.50.20260116-1","2.45.50.20260119-1","2.45.90.20260125-1","2.45.90.20260201-1","2.46-1","2.46-2","2.46-3","2.46.50.20260216-1","2.46.50.20260509-1","2.46.50.20260519-1","2.46.50.20260608-1","2.46.50.20260617-1","2.46.90.20260712-1","2.47-1","2.47-2","2.47-3","2.47-4","2.47-5","2.47-6","2.47.50.20260813-1","2.47.50.20260813-2","2.47.50.20260813-3","2.47.50.20260901-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"binutils","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.47-1.1"}]}],"bundled":16}],"products":[{"vendor":"red hat","product":"red hat enterprise linux 10"},{"vendor":"red hat","product":"red hat enterprise linux 6"},{"vendor":"red hat","product":"red hat enterprise linux 7"},{"vendor":"red hat","product":"red hat enterprise linux 8"},{"vendor":"red hat","product":"red hat enterprise linux 9"},{"vendor":"red hat","product":"red hat hardened images"},{"vendor":"red hat","product":"red hat openshift container platform 4"}],"references":[{"url":"https://access.redhat.com/security/cve/CVE-2026-18220","tags":["vdb-entry","x_refsource_REDHAT","report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2507670","tags":["issue-tracking","x_refsource_REDHAT","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-18220"},{"url":"https://github.com/advisories/GHSA-9x84-fgv4-3chj"},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-18220","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-18220","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-18220","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2025-11082","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-11839","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-11840","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69644","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69645","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69646","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69647","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69648","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69649","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-69652","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-15003","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-18220","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-3441","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-3442","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-4647","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-6846","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-18220","title":"Binutils: binutils: out-of-bounds write in bfd dlx elf backend relocation processing","description":"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.\n\nA 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().\n\nAttack 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.\n\nNote: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).","status":"published","published":"2026-07-29T09:47:51.891Z","modified":"2026-07-29T12:12:53.713Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:20:12.60856Z"}],"euvd":[{"id":"EUVD-2026-50279","description":"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.\n\nA 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().\n\nAttack 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.\n\nNote: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).","status":"published","published":"2026-07-29T09:47:51Z","modified":"2026-07-29T12:12:53Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T18:02:30.59681Z"}],"ghsa":[{"id":"GHSA-9x84-fgv4-3chj","title":"An out-of-bounds write vulnerability was found in the BFD library's DLX ELF backend (bfd/elf32...","description":"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.\n\nA 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().\n\nAttack 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.\n\nNote: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).","status":"published","published":"2026-07-29T12:31:23Z","modified":"2026-07-29T12:31:23Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T15:09:53.70861Z"}],"nvd":[{"id":"CVE-2026-18220","description":"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.\n\nA 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().\n\nAttack 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.\n\nNote: This vulnerability is only exploitable when binutils is built with the DLX backend enabled (typically via --enable-targets=all).","status":"published","published":"2026-07-29T11:16:49.097Z","modified":"2026-07-30T14:15:31.167Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-787"],"updated_at":"2026-11-02T14:12:33.629616Z"}],"osv":[{"id":"DEBIAN-CVE-2026-18220","description":"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).","status":"published","published":"2026-07-29T11:16:49.097Z","modified":"2026-10-01T03:02:54.761683769Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:53.097669Z"},{"id":"UBUNTU-CVE-2026-18220","description":"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).","status":"withdrawn","published":"2026-07-29T11:16:00Z","modified":"2026-08-31T17:15:59.302170591Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:56:01.334185Z"},{"id":"openSUSE-SU-2026:11932-1","title":"binutils-2.47-1.1 on GA media","description":"These are all security issues fixed in the binutils-2.47-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-09-30T00:00:00Z","modified":"2026-10-01T11:15:05.44014221Z","updated_at":"2026-11-02T16:58:40.245664Z"}]}}
