PCRE正则表达式处理代码执行和拒绝服务漏洞

 

中心编号:NIPC-2007-3609

CVE编号:CVE-2007-1659~CVE-2007-1662,CVE-2007-4766~CVE-2007-4768

漏洞级别:紧急

发布日期:2007-11-07

更新日期:2007-11-08

攻击方式:远程

攻击效果:管理员访问权限,未授权访问权限,未授权的信息泄漏,拒绝服务

漏洞描述:


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

pcre处理某些畸形正则表达式的方法存在多个漏洞:

CVE-2007-1659
在处理有孤儿"E"代码的"QE"序列时存在漏洞,可能导致所编译的正则表达式失去同步,执行破坏的bytecode。

CVE-2007-1660
多种字符类在初始传送阶段错误的计算了大小,导致分配过少的内存。

CVE-2007-1661
非UTF-8模式的多种X?d或P{L}?d形式可能回退到字符串开始之前,这可能造成泄露地址空间地址或由于越界读取而出现崩溃。

CVE-2007-1662
一些例程可能在寻找不匹配的括号或方括号时受骗读过字符串的末尾,导致拒绝服务。

CVE-2007-4766
处理转义序列时的多个整数溢出可能导致堆溢出或越界读写。

CVE-2007-4767
由于错误的处理非标准运算的长度,在处理P和P{x}序列时会出现多个死循环和堆溢出漏洞。

CVE-2007-4768
错误的优化了包含有单个unicode序列的字符类,可能导致堆溢出。

受影响系统和软件:


PCRE, PCRE, 6.0, 及其早期版本
PCRE, PCRE, 6.1, 及其早期版本
PCRE, PCRE, 7.3, 及其早期版本

解决方案:


升级到7.4版本:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

参考资源一:


http://www.pcre.org/changelog.txt

参考资源二:


http://www.frsirt.com/english/advisories/2007/3725

参考资源三:


http://www.debian.org/security/2007/dsa-1399

致谢:


该漏洞由Tavis Ormandy发现。