CVE-2026-40517radare2是一个广泛使用的逆向工程框架。在6.1.4版本之前,其PDB解析器中的`print_gvars()`函数存在严重的命令注入漏洞。该漏洞源于对符号名称的清理不当,攻击者可以通过在恶意PDB文件的符号名称中插入换行符来注入任意radare2命令。当用户使用受影响的radare2版本对恶意PDB文件执行`idp`命令时,这些注入的命令将被执行。由于radare2支持通过`!`操作符执行Shell命令,攻击者可借此实现任意操作系统命令执行,从而完全控制受害者系统。
该漏洞位于radare2处理PDB文件的解析逻辑中,具体涉及`print_gvars()`函数。在解析全局变量时,代码会将符号名称直接拼接进重命名标志的命令字符串中,而未对符号名称进行严格的过滤或转义。攻击者可以构造一个特制的PDB文件,其中包含带有换行符(`\n`)和radare2命令语法的恶意符号名。当受害者使用`idp`命令加载此文件时,radare2会将恶意符号名作为参数传递给内部重命名命令。由于换行符的存在,解析器会将其视为新的命令行指令。更重要的是,radare2允许使用`!`前缀调用系统Shell。因此,攻击者只需在注入的命令前加上`!`,即可绕过沙箱限制,直接执行底层操作系统命令。