CVE-2025-13120mruby是一款轻量级的Ruby编程语言实现,专为嵌入式系统和资源受限环境设计。该漏洞存在于mruby 3.4.0及之前版本的src/array.c文件中的sort_cmp函数里。攻击者可以通过精心构造的Ruby数组排序操作,触发sort_cmp函数中的Use After Free条件。由于sort_cmp函数在数组排序过程中对数组元素进行引用和释放操作,攻击者可以控制释放后的内存被重新分配并写入恶意数据,从而可能导致程序崩溃或执行任意代码。该漏洞为本地攻击向量,需要低权限认证但无需用户交互即可触发。漏洞利用代码已在互联网上公开披露,构成了真实的安全威胁。
该漏洞的根本原因在于mruby的sort_cmp函数在执行数组排序时存在内存管理缺陷。当对包含特定元素的数组进行排序操作时,sort_cmp函数会访问已释放的内存区域。具体来说,在排序过程中,函数首先获取数组元素的引用,随后释放相关内存,但由于指针管理不当,函数仍尝试访问已被释放的内存对象。这种Use After Free条件可能导致以下后果:1) 程序访问已释放的内存可能读取到攻击者控制的数据;2) 如果攻击者在内存释放后重新分配并写入精心构造的数据,可以实现代码执行;3) 最直接的影响是导致mruby程序崩溃,产生拒绝服务条件。攻击者需要构造一个特殊的Ruby数组,并通过调用数组的sort方法触发漏洞。由于该漏洞位于语言运行时层面,任何使用mruby处理不可信输入的应用都可能受到影响。