如何修復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了。
GIF
歡迎分享和關注,運維實談,不定期分享純乾貨!
TAG:運維實談 |