如何修复PHP的GD库漏洞

2021-02-23 11:38:58 浏览数 (1)

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

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

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

PHP 5< PHP 5.6.33

PHP 7.0<PHP 7.0.27

PHP 7.1<PHP 7.1.13

PHP 7.2<PHP 7.2.1

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

以下只通过CentOS系统描述:

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

rpm -qa |grep php

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

1

remi 源

remi源地址:http://rpms.famillecollet.com/

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

CentOS6.x:

代码语言:javascript复制
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

CentOS7.x:

代码语言:javascript复制
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 

安装后直接通过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:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

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

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

代码语言:javascript复制
yum update <package> --enablerepo=webtatic-testing

3

编译安装

PHP官网地址:php.net

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

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

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

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

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

0 人点赞