2018年1月18日,国家信息安全漏洞共享平台(CNVD)收录了PHP GD Graphics Library存在拒绝服务漏洞(CNVD-2018-02505,对应CVE-2018-5711)。综合利用上述漏洞,攻击者可以构造恶意GIF文件,远程利用PHP函数形成无限循环的方式发起拒绝服务攻击。目前,漏洞利用代码已公开,且厂商已发布漏洞修复版本。

 一、漏洞情况分析

PHP(超文本预处理器)是一种通用开源脚本语言。GD Graphics Library(又名libgd或libgd2)是一个开源的用于动态创建图像的库,它支持创建图表、图形和缩略图等,广泛应用于PHP语言的开发。

该漏洞触发的前提条件为受影响版本的PHP,并且使用了libgd库,漏洞文件存在于ext/gd/libgd/gd_gif_in.c。在“LWZReadByte_”函数存在一个循环(while-loop),该循环里“GetCode_”函数会调用GetDataBlock来读取GIF图片中的数据,但由于“GetCode_”函数未能正确处理int到unsigned char的类型转换,导致PHP在解析特定GIF文件调用PHP函数imagecreatefromgif或imagecreatefromstring时出现死循环,从而导致服务器计算资源大量消耗,直至崩溃宕机。该漏洞允许远程攻击者利用该漏洞导致拒绝服务攻击。

CNVD对上述漏洞的综合评级为“高危”。

二、漏洞影响范围

PHP 5

PHP 7.0

PHP 7.1

PHP 7.2

三、漏洞修复建议

目前,厂商已发布升级新版本以修复该漏洞,最新版本下载链接http://php.net/downloads.php

附:参考链接:

http://php.net/ChangeLog-7.php

https://bugs.php.net/bug.php?id=75571

http://www.cnvd.org.cn/flaw/show/CNVD-2018-02505

声明:本文来自国家互联网应急中心CNCERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。