CVE-2026-8696radare2 6.1.5版本中的GDB客户端核心存在一个释放后重用漏洞,位于gdbr_pids_list()函数内。由于在处理线程信息响应时存在逻辑缺陷,远程攻击者可以通过发送特制的畸形数据包来利用该漏洞。具体而言,当qfThreadInfo成功分配内存结构后,随后的qsThreadInfo操作失败,导致错误处理路径对已分配的内存进行了双重释放。这不仅会导致服务拒绝,在特定条件下还可能允许攻击者执行任意代码,对系统安全性构成严重威胁。
该漏洞源于radare2 GDB远程调试协议实现中的内存管理错误。在gdbr_pids_list()函数处理GDB远程协议的qfThreadInfo和qsThreadInfo查询包时,程序首先调用qfThreadInfo获取线程列表并分配RDebugPid结构体。随后,在调用qsThreadInfo继续获取后续信息时,如果操作失败,程序进入错误处理流程。然而,错误处理流程未正确检查内存状态,导致对已分配的RDebugPid结构体进行了释放。由于之前的分配并未被正确标记或处理,这导致了“双重释放”或“释放后重用”的情况。攻击者可以通过控制恶意GDB服务器或拦截网络流量,向radare2发送精心构造的响应数据,触发该内存破坏。由于该漏洞无需用户交互且可远程利用,攻击者可以利用此漏洞使调试器崩溃,造成拒绝服务;若能精确控制被释放的内存内容,则可能实现任意代码执行。