{"id":"CVE-2026-40499","aliases":["EUVD-2026-22826","GHSA-7rhq-9q45-5gm4","MGASA-2026-0198","UBUNTU-CVE-2026-40499","openSUSE-SU-2026:10555-1","openSUSE-SU-2026:20653-1"],"status":"published","title":"radare2 \u003c 6.1.4 Command Injection via PDB Parser print_gvars()","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","severity":{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.01184,"percentile":0.68009,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-78"],"published":"2026-04-15T00:00:00Z","modified":"2026-10-28T10:49:44Z","fixes":[{"ecosystem":"Mageia:9","package":"radare2","fixed_in":["5.8.8-1.7.mga9"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"radare2","fixed_in":["6.1.4-1.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Mageia:9","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.8.8-1.7.mga9"}]}]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.9.6-3.1ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.0+dfsg-1","2.0.0+dfsg-1","2.1.0+dfsg-1","2.3.0+dfsg-1","2.3.0+dfsg-2","2.3.0+dfsg-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.2.1+dfsg-5build1","4.0.0+dfsg-1","4.2.1+dfsg-1","4.2.1+dfsg-2","4.2.1+dfsg-2ubuntu0.1~esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:24.04:LTS","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.0+dfsg-1ubuntu1","5.5.0+dfsg-1.1ubuntu2","5.5.0+dfsg-1.1ubuntu3","5.5.0+dfsg-1.1ubuntu3+esm1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.9.8+dfsg-2","5.9.8+dfsg-2ubuntu0.25.10.1","5.9.8+dfsg-2ubuntu0.25.10.2"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.0.7+ds-1","6.1.6+ds-2","6.1.6+ds-3","6.1.8+ds-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.9.8+dfsg-2","6.0.4+dfsg-1","6.0.7+ds-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"radare2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.4-1.1"}]}]}],"products":[{"vendor":"radare","product":"radare2"},{"vendor":"radare2","product":"radare2"},{"vendor":"radareorg","product":"radare2"}],"references":[{"url":"https://github.com/radareorg/radare2/issues/25752","tags":["issue-tracking","Exploit","Issue Tracking","Third Party Advisory","report"]},{"url":"https://github.com/radareorg/radare2/commit/5590c87deeb7eb2a106fd7aab9ca88bfeebb7397","tags":["patch","Patch","fix"]},{"url":"https://github.com/radareorg/radare2/releases/tag/6.1.4","tags":["release-notes","Release Notes","advisory"]},{"url":"https://www.vulncheck.com/advisories/radare2-command-injection-via-pdb-parser-print-gvars","tags":["third-party-advisory","Third Party Advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40499","tags":["advisory"]},{"url":"https://blog.calif.io/p/mad-bugs-discovering-a-0-day-in-zero"},{"url":"https://github.com/advisories/GHSA-7rhq-9q45-5gm4"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40499.json","tags":["advisory"]},{"url":"https://advisories.mageia.org/MGASA-2026-0198.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=35375","tags":["report"]},{"url":"https://lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/message/PCMPUDTEBB4WMS5A4EHRR725KUAT3WWS/","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2026-40499","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-40499","tags":["report"]},{"url":"https://github.com/radareorg/radare2/pull/25731","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-40499","tags":["web"]},{"url":"https://bugzilla.suse.com/1234065","tags":["report"]},{"url":"https://bugzilla.suse.com/1237250","tags":["report"]},{"url":"https://bugzilla.suse.com/1238075","tags":["report"]},{"url":"https://bugzilla.suse.com/1238451","tags":["report"]},{"url":"https://bugzilla.suse.com/1244121","tags":["report"]},{"url":"https://bugzilla.suse.com/1262142","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2024-29645","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1378","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1744","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-1864","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-5641","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-40499","title":"radare2 \u003c 6.1.4 Command Injection via PDB Parser print_gvars()","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-15T02:05:20.899Z","modified":"2026-11-08T14:02:48.223Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high","assessor":"cna"}],"cwes":["CWE-78"],"updated_at":"2026-11-08T15:43:33.322657Z"}],"euvd":[{"id":"EUVD-2026-22826","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-15T02:05:20Z","modified":"2026-11-08T14:02:48Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-08T15:13:09.268962Z"}],"ghsa":[{"id":"GHSA-7rhq-9q45-5gm4","title":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's...","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-16T03:31:05Z","modified":"2026-05-01T15:30:30Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"},{"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-78"],"updated_at":"2026-11-02T15:07:52.84276Z"}],"nvd":[{"id":"CVE-2026-40499","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-15T04:17:48.33Z","modified":"2026-10-26T21:10:00.17Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"},{"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":"primary"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:12:14.748836Z"}],"osv":[{"id":"CVE-2026-40499","title":"radare2 \u003c 6.1.4 Command Injection via PDB Parser print_gvars()","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-15T02:05:20.899Z","modified":"2026-11-09T07:05:00.347184511Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-78"],"updated_at":"2026-11-09T03:16:17.543303Z"},{"id":"UBUNTU-CVE-2026-40499","description":"radare2 prior to version 6.1.4 contains a command injection vulnerability in the PDB parser's print_gvars() function that allows attackers to execute arbitrary commands by embedding a newline byte in the PE section header name field. Attackers can craft a malicious PDB file with specially crafted section names to inject r2 commands that are executed when the idp command processes the file.","status":"published","published":"2026-04-15T04:17:00Z","modified":"2026-10-17T12:58:52.864081163Z","cvss":[{"version":"4.0","score":8.4,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"},{"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:16.686388Z"},{"id":"MGASA-2026-0198","title":"Updated radare2 packages fix security vulnerability","description":"CVE-2026-40499, Command Injection via PDB Parser print_gvars()\n","status":"published","published":"2026-06-12T16:20:14Z","modified":"2026-06-12T16:30:04.411785979Z","updated_at":"2026-11-02T15:49:43.178336Z"},{"id":"openSUSE-SU-2026:10555-1","title":"libsdb2_4_2-6.1.4-1.1 on GA media","description":"These are all security issues fixed in the libsdb2_4_2-6.1.4-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-04-15T00:00:00Z","modified":"2026-04-16T08:32:09.801161Z","updated_at":"2026-11-02T16:58:38.415593Z"},{"id":"openSUSE-SU-2026:20653-1","title":"Security update for radare2","description":"This update for radare2 fixes the following issues:\n\nChanges in radare2:\n\n- Update to version 6.1.4 (bsc#1262142, CVE-2026-40499):\n  * Analysis: improve autoname scoring, jmptbl detection, and performance\n  * Add callargs modifier, rnum expressions, and typed function context\n  * Refactor autoname into plugin; extend RAnalPlugin hooks\n  * Fix leaks, overflows, and command injection in analysis scripts\n  * Improve string detection, wide strings, and switch/case analysis\n  * Arch: fix v850/nds32 ESIL, optimize to O(1), improve pseudo support\n  * Cache capstone options and improve multi-arch disassembly\n  * ASM: add camel syntax support, unify via RArch API\n  * Bin: major parser fixes (ELF, Mach-O, PE, DEX, PDB, WAD, XCOFF)\n  * Fix leaks, OOB reads/writes, overflows, and improve bounds checks\n  * Improve Swift demangling, ARM hints, relocations, and imports\n  * Add nds32 reloc support and optimize kernelcache parsing\n  * Build: install to lib64, fix illumos and packaging issues\n  * CI: add GitHub Actions and FilC builds\n  * Console: fix multiple overflows, OOB issues, and improve performance\n  * Core: API renames, plugin load order, sandbox/config fixes\n  * Crash: extensive fixes (UAF, OOB, overflows, injections, fuzz bugs)\n  * Harden ELF, PDB, kernelcache, regex, disassemblers, and webserver\n  * Debug: improve ptrace, winkd support, breakpoints, checkpoints\n  * Disasm: cache flag lookups for performance\n  * FS/IO: fix leaks, bounds, sparse IO, and device handling\n  * HTTP/socket: webserver fixes and SSL fallback handling\n  * Print/projects: improve formatting, endian handling, project metadata\n  * Pseudo: add while/switch support and cleaner control flow\n  * Search/shell: improve commands, parsing, and usability\n  * Security: fix widespread command injection and sandbox escapes\n  * Tests/tools: improve r2r, CLI tools, fuzzing, and plugin support\n  * Types/util: parsing improvements, JSON/base64 updates, optimizations\n  * Visual: fix UAF/leaks, improve panels and UX\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.1.4\n\n- Update to version 6.1.2:\n  * Analysis: preserve timeouts, improve bb/jmptbl validation and limits\n  * Optimize string detection and hot-path functions\n  * Add APIs for function signatures, vars limits, and instruction hints\n  * Fix overlapped functions, invalid code checks, and large bb handling\n  * API: remove deprecated librmagic/filetype APIs and name filter\n  * Arch: fix Thumb/endianness issues, add Python pseudo plugin\n  * ASM: unify settings via RArch, fix directives, add bf pseudo plugin\n  * Bin: improve ELF/Mach-O stripped detection and parsing safety\n  * Harden Mach-O bounds, optimize kernelcache and XNU parsing\n  * Fix many leaks (DEX, demangler, parsers) and infinite loops\n  * Improve DWARF handling and symbol/type extraction\n  * Build: improve meson, toolchains, and add ISO/docker support\n  * Console: preserve timeout, fix themes and UTF-8 handling\n  * Core: fix config bugs, improve startup and addressing support\n  * Crash: fix UAF, OOB, race conditions, regex bugs, and overflows\n  * Add safety checks across dotnet, Mach-O, DWARF, and webserver\n  * Debug/ESIL: safer execution and divide-by-zero handling\n  * FS/IO: fix HFS+, dyldcache speedups, safer zip handling\n  * Graph: add bb size limit option\n  * Print: merge commands, improve UTF-8 and formatting\n  * Projects/tools: new configs, plugin support, CLI improvements\n  * Search: faster analysis search and block buffering\n  * Shell: improve grep/macros and file operations\n  * Types: lazy-load, cache, and improve parsing (varargs, structs)\n  * Tests: expand fuzzing and test suites\n  * General cleanup, performance tuning, and safety improvements\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.1.4\n\n- Update to version 6.1.0:\n  * Reimplement RBufRef using RRef; fix RLibDelHandler API\n  * Remove stale JAY code; improve analysis performance and CI speed\n  * Optimize type propagation, jump tables, and plugin integration\n  * Fix infinite loops, antidisasm tricks, and function autonaming\n  * Add new analysis options and trace import plugin (DRCOV)\n  * Improve RCore seek operations and naming APIs\n  * API: add RNum.getErr, enforce safe alloc macros, new helpers\n  * Arch: update ARC disasm, refactor sessions, remove unsafe string ops\n  * ASM: improve x86 validation, add CIL and ARC pseudo plugins\n  * Bin: major fixes for PE, ELF, Java, MDMP, LE, DEX; reduce memory use\n  * Add/import DWARF types, improve relocations and symbol handling\n  * Extensive memory leak fixes and parser hardening across formats\n  * Improve string handling, caching, and zero-copy optimizations\n  * Build: improve meson, remove zip deps, add 3rd-party plugin support\n  * Console: fix UTF-8 graphs and color propagation\n  * Core: improve plugin handling and background task stability\n  * Crash: fix multiple UAF, OOB, overflows, and injection issues\n  * Sanitize inputs (function names, demangler, callconv)\n  * Debug: add source breakpoints, ARM64/XNU support, FPU regs\n  * Disasm: improve string handling, comments, and color logic\n  * ESIL: extend x86 FPU emulation\n  * FS/IO: fixes and plugin reorganizations\n  * HTTP: fix sandbox webserver issues\n  * Hash/tools: minor fixes and output improvements\n  * General cleanup, safety checks, and performance optimizations\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.1.0\n\n- Update to version 6.0.8:\n  * Migrate r_vector to RVec across core components\n  * Refactor and optimize type propagation (now plugin-based)\n  * Remove redundant anal.a2f and related duplication\n  * Improve caching, memoization, and performance in analysis\n  * Fix file corruption, null asserts, and command issues\n  * Enhance x86 (AT\u0026T syntax, enter instruction) and z80 support\n  * Add initial .NET (CIL) disasm/asm support\n  * Improve Java, ELF, Mach-O, APK, and PDB handling\n  * Fix demangling, symbols, and relocation issues\n  * Resolve multiple memory leaks and parser bugs\n  * Fix UAF, OOB, overflows, and command injection vulnerabilities\n  * Improve GDB debugging and breakpoint handling\n  * Enhance disassembly visuals and color options\n  * Update ESIL operators and behavior\n  * Add support for APFS, GPT, BSD, APM partitions\n  * Improve IO handling and add new plugins\n  * Optimize performance (strbuf, memory usage)\n  * Improve console UI, themes, and terminal handling\n  * Refine SDK builds and CI pipelines\n  * Improve CLI tools (rabin2, rasm2, rafs2)\n  * Add JSON support and better help/version info\n  * Expand type parsing (typedef, enum, union)\n  * Improve socket/HTTP handling and downloads\n  * Add and refine tests and reporting\n  * General cleanup, safety checks, and code modernization\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.0.8\n\n- Update to version 6.0.7:\n  * shell: Fix parsing r2 -H$(VARNAME) without a space\n\n- Update to version 6.0.6:\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.0.6\n\n- Update to version 6.0.4:\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.0.4\n\n- Update to version 6.0.2:\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.0.2\n\n- Update to version 6.0.0:\n  * ABI changes:\n    ~ RCorePlugins now have a session\n    ~ Finish the RKons refactoring, all r_cons calls take instance instead of global\n    ~ Rename RCrypto to RMuta\n    ~ Use RCons instance from RLine\n    ~ Rename RIOPlugin.widget to RIOPlugin.data\n    ~ Refactor the RRegAlias api\n    ~ Camelcase all the RCoreBind methods\n  * Breaking API changes:\n    ~ Boolify r_cons_rgb_parse\n    ~ Add RLogLevel.fromString() and use it from -e log.level=?\n    ~ Deprecate r_bin_addr2line\n    ~ Rename RBinDbgItem into RBinAddrline\n    ~ RNumCalc is now known as RNumMath\n    ~ Move RFlagItem.alias into the Meta\n    ~ Rename core-\u003eoffset into core-\u003eaddr (asm.offset and more!)\n    ~ Rename RFlagItem.offset -\u003e addr\n  * API changes:\n    ~ Boolify r_cons_rgb_parse\n    ~ Add RLogLevel.fromString() and use it from -e log.level=?\n    ~ Deprecate r_bin_addr2line\n    ~ Rename RBinDbgItem into RBinAddrline\n    ~ RNumCalc is now known as RNumMath\n    ~ Move RFlagItem.alias into the Meta\n    ~ Rename core-\u003eoffset into core-\u003eaddr (asm.offset and more!)\n    ~ Rename RFlagItem.offset -\u003e addr\n    ~ Deprecate RLang.list()\n    ~ Unified function to jsonify the plugin meta + more fields\n    ~ Redesign the REvent API\n  * Full changelog is available at:\n    https://github.com/radareorg/radare2/releases/tag/6.0.0\n\n- CVE-2025-5641: Fix memory corruption by manipulation of the argument -T (bsc#1244121)\n- CVE-2025-1864: Fix buffer overflow and potential code execution (bsc#bsc#1238451)\n- CVE-2025-1744: Fix heap-based buffer over-read or buffer overflow (bsc#1238075)\n- CVE-2025-1378: Fix memory corruption (bsc#1237250)\n\n- Update to version 5.9.8:\n  * Resolved CVE:\n    - CVE-2024-29645: buffer overflow vulnerability allows an attacker to\n      execute arbitrary code via the parse_die function (boo#1234065).\n  For details, check full release notes:\n  https://github.com/radareorg/radare2/releases/tag/5.9.8\n  https://github.com/radareorg/radare2/releases/tag/5.9.6\n  https://github.com/radareorg/radare2/releases/tag/5.9.4\n  https://github.com/radareorg/radare2/releases/tag/5.9.2\n  https://github.com/radareorg/radare2/releases/tag/5.9.0\n","status":"published","published":"2026-04-29T08:45:46Z","modified":"2026-05-01T18:27:00.404849Z","updated_at":"2026-11-02T16:58:41.463445Z"}]}}
