安全研究

安全漏洞
PCRE正则表达式编译缓冲区溢出漏洞

发布日期:2010-05-06
更新日期:2010-05-07

受影响系统:
PCRE PCRE < 8.02
不受影响系统:
PCRE PCRE 8.02
描述:
BUGTRAQ  ID: 39974

PCRE(Perl兼容正则表达式)库是个开放源代码的软件,可提供正则表达式支持。

PCRE库的pcre_compile.c文件中执行以下检查确认容纳所编译正则表达式的缓冲区是否已溢出:

2725     if (code > cd->start_workspace + COMPILE_WORK_SIZE) /* Check for overrun */
2726       {
2727       *errorcodeptr = ERR52;
2728       goto FAILED;
2729       }

当检查返回true的时候,cd->start_workspace所指向的缓冲区(大小为COMPILE_WORK_SIZE字节)实际已经被溢出。

<*来源:Michael Santos (michael.santos@gmail.com
  
  链接:http://marc.info/?l=bugtraq&m=127315780830196&w=2
        http://bugs.exim.org/show_bug.cgi?format=multiple&id=962
        http://secunia.com/advisories/39738/
*>

测试方法:

警 告

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

~$ perl -e 'print "/","("x819, ")"x819, "/"' | pcretest

建议:
厂商补丁:

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

http://vcs.pcre.org/viewvc/code/trunk/pcre_compile.c?r1=504&r2=505&view=patch

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