安全研究

安全漏洞
Cairo PNG图形处理整数溢出漏洞

发布日期:2007-11-16
更新日期:2007-12-07

受影响系统:
Cairo Cairo < 1.4.12
不受影响系统:
Cairo Cairo 1.4.12
描述:
BUGTRAQ  ID: 26650
CVE(CAN) ID: CVE-2007-5503

Cairo过去叫做Xr或Xr/Xc,是一个跨平台的开放源代码的矢量图形函数库,可以提供高质量的显示和打印输出。

Cairo在处理畸形格式的PNG图像时存在漏洞,本地攻击者可能利用此漏洞控制用户系统。

Cairo的cairo-png.c文件的cairo_image_surface_create_from_png()函数支持从PNG图形文件创建新的图形面。该函数会调用read_png()解析输入文件名,然后分配内存容纳所生成的图形面:

    cairo-png.c: read_png()
    ..
    png_get_IHDR (png, info,
    &png_width, &png_height, &depth,
    &color_type, &interlace, NULL, NULL);
    ..
    pixel_size = 4;
    data = malloc (png_width * png_height * pixel_size);
    ..

png_width和png_height来自libpng的IHDR,默认下在libpng的pngconf.h中对图形宽度和高度做了如下限制:

    # define PNG_USER_WIDTH_MAX 1000000L
    # define PNG_USER_HEIGHT_MAX 1000000L

因此任何小于1000000的宽度和高度都可以通过libpng的限制,在read_png()函数中触发整数溢出。

<*来源:Peter Valchev
  
  链接:http://secunia.com/advisories/27880/
        https://bugzilla.redhat.com/long_list.cgi?buglist=387431
        http://cairographics.org/news/cairo-1.4.12/
        https://www.redhat.com/support/errata/RHSA-2007-1078.html
*>

建议:
厂商补丁:

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2007:1078-02)以及相应补丁:
RHSA-2007:1078-02:Important: cairo security update
链接:https://www.redhat.com/support/errata/RHSA-2007-1078.html

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

http://gitweb.freedesktop.org/?p=cairo;a=commitdiff;h=5c7d2d14d78e4dfb1ef6d2c40f0910f177e07360
http://gitweb.freedesktop.org/?p=cairo;a=commitdiff;h=e49bcde27f88e21d5b8037a0089a226096f6514b

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