主机博士 > LNMP军哥一键安装包518php multipart/form-data 远程DOS漏洞修补办法

LNMP军哥一键安装包518php multipart/form-data 远程DOS漏洞修补办法

2015-05-21 来源:主机博士 编辑: 浏览:2,964 views

近期PHP爆出重大漏洞,multipart/form-data 远程DOS漏洞,只需要很小的带宽就可以把服务搞挂。经测试LNMP军哥一键安装包也存在同样的问题,主机博士提供LNMP军哥一键安装包518php multipart/form-data 远程DOS漏洞修补办法

php-safe

首先登陆SSH,执行/root/lnmp stop

第一步:wget http://am1.php.net/distributions/php-5.6.9.tar.gz

第二步:tar zxvf php-5.6.9.tar.gz

第三步:cd php-5.6.9
第四步:

./configure –prefix=/usr/local/php –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d –with-openssl –with-zlib –with-curl –enable-ftp –with-gd –with-jpeg-dir –with-png-dir –with-freetype-dir –enable-gd-native-ttf –enable-mbstring –enable-zip –with-iconv=/usr/local/libiconv –with-mysql=/usr/local/mysql –without-pear –disable-fileinfo –enable-opcache

第五步:make

第六步:make install

启动 /root/lnmp start

更新后可以在百度安全中心提交测试检查是否生效,http://sec.baidu.com/index.php?phpdos
以上为php升级到5.6.9后漏洞解决办法,如果你不想升级也可以采用官方提供的方式解决:

编辑一下lnmp1.1的升级脚本upgrade_php.sh

php 5.2 修改php升级脚本,查找 patch -p1 < php-5.2.17-max-input-vars.patch
该行下面添加:

wget http://soft.vpser.net/web/php/bug/php-5.2-multipart-form-data.patch
patch -p1 < php-5.2-multipart-form-data.patch

 

php 5.3查找cd php-$php_version/ 应该是198行,下面添加

wget http://soft.vpser.net/web/php/bug/php-5.3-multipart-form-data.patch
patch -p1 < php-5.3-multipart-form-data.patch

并将
42行到45行
if [ “$php_version” == “$old_php_version” ]; then
echo “Error: The upgrade PHP Version is the same as the old Version!!”
exit 1
fi
删除

然后运行升级php脚本,重新输入当前版本号

PHP multipart/form-data头部解析远程拒绝服务漏洞说明

发布日期:2015-05-18

受影响的软件及系统:

====================

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 5.4.41

PHP 5.5.25

PHP 5.6.9

综述:

======

PHP 存在一个远程拒绝服务漏洞,攻击者通过发送恶意的HTTP请求,可以导致CPU资源大量占用,造成远程拒绝服务。

此漏洞影响所有PHP 5版本,更低版本可能也受影响,建议尽快升级。

分析:

======

PHP 在处理HTTP请求中的multipart/form-data头部数据时存在一个安全漏洞,导致PHP大量重复分配和拷贝内存的操作,可能造成CPU资源占用100%并持续较长时间,这可能造成远程拒绝服务攻击。

PHP 调用multipart_buffer_headers()函数来解析HTTP请求中的multipart头部数据,每次解析由get_line得到的一行。当被解析的行是以空白字符开始或者不包含“:”字符时,该行将被当作是前一头字段的延续来处理。此时,将会分配一个新的缓冲区,将前一头字段的值与当前行拼接起来作为该字段新的值。这个过程包含1次emalloc调用、2次memcpy调用。

若一个头字段是由多行组成,将导致多次调用emalloc与memcpy,并且分配的空间与拷贝的长度将越来越大。

因此,当行的数目足够多时,拷贝的操作将显著的消耗服务器的CPU。实际测试中,包含近一百万行的头字段可以使服务器的CPU保持100%几秒或者数十秒。如果并发多个攻击请求,可能造成更长时间的资源占用。

攻击者可通过发送一个2M左右的包含多行multipart头部数据的HTTP请求来发起攻击,无需认证,也不依赖PHP程序本身的内容。

解决方法:

==========

没有好的临时解决方法,建议进行升级。

厂商状态:

==========

PHP 已经在下列版本中修复此漏洞:

PHP 5.4.41: >

PHP 5.5.25:

http://php.net/downloads.php#v5.5.25

PHP 5.6.9:

http://php.net/downloads.php#v5.6.9

附加信息:

==========

1. https://bugs.php.net/bug.php?id=69364

2. http://php.net/ChangeLog-5.php#5.6.9

3. http://www.nsfocus.net/index.php?act=alert&do=view&aid=157

 

最新主机推荐
推荐专栏
vps标签
热门主机排行