CVE-2025-12875CVE-2025-12875是mruby 3.4.0版本中的一个中等严重性安全漏洞。该漏洞位于mruby-array-ext扩展的array.c文件中的ary_fill_exec函数。通过精心构造start和length参数,攻击者可以在本地环境中触发越界写入(Out-of-Bounds Write)操作。mruby是一种轻量级的Ruby语言实现,广泛应用于嵌入式系统、物联网设备和各种需要脚本能力的场景。此漏洞的CVSS评分为5.3,属于中危级别,攻击向量为本地攻击,需要低权限用户即可执行。攻击者无需用户交互即可利用此漏洞,可能导致数据损坏、程序崩溃或潜在的代码执行。由于该漏洞的利用代码已经公开,攻击者可以轻松获取并用于攻击。
该漏洞存在于mruby的数组扩展模块中,具体位置为mrbgems/mruby-array-ext/src/array.c文件的ary_fill_exec函数。漏洞的根本原因是在处理数组填充操作时,对用户提供的start(起始索引)和length(长度)参数缺乏充分的边界检查。当攻击者传入超出数组实际范围的start值或超过数组剩余空间的length值时,函数会执行越界写入操作,破坏相邻内存区域的数据。在mruby的数组实现中,Array#fill方法允许用户填充数组元素,而ary_fill_exec函数负责执行底层的填充逻辑。如果传入的start参数大于数组长度或length参数设置不当,可能导致写入操作超出分配的内存边界。此类越界写入漏洞可能被攻击者利用来覆写关键数据结构、函数指针或控制流信息,从而实现代码执行或数据篡改。官方已发布补丁commit 93619f06dd378db6766666b30c08978311c7ec94来修复此问题。