Ruby rb_ary_fill()函数远程拒绝服务漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

BUGTRAQ ID: 30036 Ruby是一种功能强大的面向对象的脚本语言。 Ruby的rb_ary_fill()函数中存在整数溢出漏洞: rb_ary_modify(ary); end = beg + len; if (end &lt; 0) { rb_raise(rb_eArgError, &quot;argument too big&quot;); } if (end &gt; RARRAY(ary)-&gt;len) { if (end &gt;= RARRAY(ary)-&gt;aux.capa) { REALLOC_N(RARRAY(ary)-&gt;ptr, VALUE, end); RARRAY(ary)-&gt;aux.capa = end; } len值由之前的函数递增1,且由用户指定。由于缺少输入检查,可能在以下位置触发整数溢出: REALLOC_N(RARRAY(ary)-&gt;ptr, VALUE, end); 这个宏会分配end * VALUE。在32位架构上VALUE为4,因此如果攻击者指定的值为0x3fffffff的话,宏就会分配0内存区域,在下一次访问ary-&gt;ptr的时候就出出现空指针引用。 Yukihiro Matsumoto Ruby 1.9.x Yukihiro Matsumoto Ruby 1.8.x Yukihiro Matsumoto ------------------ 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: <a href=http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?view=markup target=_blank>http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?view=markup</a>

0%
暂无可用Exp或PoC
当前有0条受影响产品信息