宇宙最强语言 PHP 爆出 DoS 漏洞,可以直接灌满 CPU 代号 69364

更新时间 : 2015-05-20 16:10:23
PHP 远程 DoS 漏洞
4 月 3 日,有人在 PHP 官网提交 PHP 远程 DoS 漏洞(PHP Multipart/form-data remote dos Vulnerability),代号 69364①。
由于该漏洞涉及 PHP 的所有版本,故其影响面较大,一经发布迅速引发多方面关注。14 日,各种 PoC 已经在网络上流传。此次
漏洞具备如下特性:
1. 一旦被利用成功,可以在迅速消耗被攻击主机的 CPU 资源,从而达到 DoS 的目的;
2. PHP 在全球的部署量相当大,为攻击者提供了相当多可以攻击的目标;
3. PHP 官方目前仅给出了 5.4 及 5.5 版本的补丁
受此漏洞影响的软件及系统包括 PHP 的如下版本。
• PHP 5.0.0 - 5.0.5
• PHP 5.1.0 - 5.1.6
• PHP 5.2.0 - 5.2.17
• PHP 5.3.0 - 5.3.29
• PHP 5.4.0 - 5.4.40
• PHP 5.5.0 - 5.5.24
• PHP 5.6.0 - 5.6.8
绿盟科技常年密切关注 PHP 的安全问题。绿盟科技威胁响应中心在获知相关信息后,随即启动应急机制,相关工作随即启
动。本文章将会深入分析该漏洞,并给出应对方案。

PHP 远程 DoS 漏洞分析
2015 年 5 月 15 日夜,绿盟科技威胁响应中心在获取 PHP 漏洞传播情况的同时,也在进行漏洞的分析工作,通过重现漏洞
的攻击过程,分析其工作原理,得以清晰识别及检测该漏洞方法。
Boundary 中的键值对分隔
PHP 是一种流行的 Web 服务器端编程语言,它功能强大,简单易用,利用它编写网络应用程序,可以应对大规模的 Http 请
求,所以很多业务环境中都部署了 PHP。考虑规范性,PHP 在设计之初就遵循 rfc 规范,进行各个协议模块的封装及过程处理。
PHP 与其他同样遵循 rfc 规范的语言及环境相比,不过是处理方式不同。
而从 rfc1867②开始,http 协议开始支持"multipart/form-data"请求,以便接受多种数据格式,包括多种变量甚至是文件上
传。multipart/form-data 中可以包含多个报文,每一个报文 boundary(分隔符)分隔开来,而每个报文中都包含了多行键值对,
键值对用冒号分隔,这样的设计是为了让程序可以清晰的区分这些数据。

紫樱主机已全国首家全局升级PHP到5.6.9进行安全防护。