阅读全部内容

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

  [字体: ]


受影响系统:
Yukihiro Matsumoto Ruby 1.9.x
Yukihiro Matsumoto Ruby 1.8.x
描述:
BUGTRAQ  ID: 30036

Ruby是一种功能强大的面向对象的脚本语言。

Ruby的rb_ary_fill()函数中存在整数溢出漏洞:

rb_ary_modify(ary);
    end = beg + len;
    if (end < 0) {
    rb_raise(rb_eArgError, "argument too big");
    }
    if (end > RARRAY(ary)->len) {
    if (end >= RARRAY(ary)->aux.capa) {
        REALLOC_N(RARRAY(ary)->ptr, VALUE, end);
        RARRAY(ary)->aux.capa = end;
    }

len值由之前的函数递增1,且由用户指定。由于缺少输入检查,可能在以下位置触发整数溢出:

REALLOC_N(RARRAY(ary)->ptr, VALUE, end);

这个宏会分配end * VALUE。在32位架构上VALUE为4,因此如果攻击者指定的值为0x3fffffff的话,宏就会分配0内存区域,在下一次访问ary->ptr的时候就出出现空指针引用。

<*来源:Vincenzo Iozzo (snagg@securenetwork.it
  
  链接:http://marc.info/?l=bugtraq&m=121494001419255&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

a = []
a.fill("A",0..0x3fffffff)

建议:
厂商补丁:

Yukihiro Matsumoto
------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?view=markup


日期:2008年07月

【 hits:】 【 评论 】 【 推荐 】 【 打印
上一篇:游戏秘密战争远程拒绝服务漏洞
下一篇:GNOME Rhythmbox畸形播放列表文件拒绝服务漏洞
相关新闻      
为什么选择连天科技
河南连天科技有限公司 ( LianTian Technology Co.,Ltd. ),是国内从事网络安全的高科技企业之一。
连天科技是Radware、Mirage、绿盟、AVENTAIL、Sonicwall、比蒙等国际国内知名厂商的河南区域战略合作伙伴,我们本着“专业、专注、全心、全程”的服务理念为客户提供全面的信息安全解决方案,协助客户建立安全可靠的运营环境。