如何修复PHP的GD库漏洞

最近有关于台湾大神爆出的PHP的GD库漏洞,该漏洞可通过上传构造后的GIF图片,可直接导致CPU资源耗尽,直至宕机。

该漏洞是由于GD图形库中的gd_git_in.c具有整数签名错误,通过特殊构造的GIF文件使程序在调用imagecreatefromgif或imagecreatefromstring的PHP函数时导致无限循环。

该漏洞影响范围较广,漏洞版本:

PHP 5< PHP 5.6.33

PHP 7.0

PHP 7.1

PHP 7.2

目前PHP官方(php.net)已经发布了更新版本,下面说一下更新到最新版本的几个方法。

以下只通过CentOS系统描述:

首先确认之前的PHP是通过rpm包安装的,还是通过编译安装的,若是通过rpm包安装的,需要确认是通过哪个源安装的,确认方法:

rpm -qa grep php

如果什么都没有出现,那就是编译安装的,如果出现php及扩展包,则是通过rpm包安装的,那么升级就分两种方式,编译安装的,需要从官网下载最新小版本重新你编译,rpm包安装的,可以直接通过yum进行升级。

1

remi 源

首先选择合适的版本,安装remi源,若已安装,请跳过

CentOS6.x:

CentOS7.x:

安装后直接通过yum命令更新php

yum update php

更新完成后,若是apache,且是mod模式,则重启apache,若是fpm模式,则重启php-fpm,若是nginx,则从其nginx,查看PHP版本

2

webtatic 源

webtatic源地址:https://webtatic.com

同样首先选择合适的版本,安装webtatic源,若已安装,请跳过

CentOS/RHEL 7.x:

CentOS/RHEL 6.x:

安装完成后,直接通过yum命令更新php,因为webtatic是将php几个版本最新包放在测试源中,所以更新时要加参数--enablerepo=webtatic-testing

根据服务器目前php版本包进行更新,更新命令如下:

3

编译安装

PHP官网地址:php.net

从PHP官网下载你需要的大版本的最新小版本源码包,我这里是php7.1.4,需要更新到php7.1.13。

查看原版本的编译参数:php -i grep configure

复制编译参数,解压之前下载的最新源码包,用之前的编译参数重新编译php,这里注意修改prefix参数的值,不然覆盖掉原来的php了,还需要检查一下是否有之后添加的扩展,也需要重新添加。

完成后,通过php -m参数对比两个版本的php的扩展,是否一致,若一致,则可以将php迁移到最新版本的php了。

欢迎分享和关注,运维实谈,不定期分享纯干货!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202G0EX8200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券