一張GIF圖片就能讓伺服器宕機的PHP漏洞
最近,台灣Web漏洞挖掘大牛Orange Tsai在對一些Web開發框架和程序實現模塊進行安全審核的過程中,發現了一些有意思的漏洞。就比如說,這個PHP的CVE-2018-5711,它能用一張GIF圖片就可導致伺服器發生崩潰直至宕機,在現實中非常容易利用。在此,Orange Tsai簡單地介紹了這個漏洞。
漏洞影響的PHP版本 包含以下PHP系列和其它所有PHP版本
PHP 5
PHP 7.0
PHP 7.1
PHP 7.2
漏洞細節 漏洞存在於文件ext/gd/libgd/gdgifin.c中,其中在LWZReadByte_函數中存在一個循環(while-loop):
GetCode函數僅只是一個包裝類,GetCode_才是真正的執行體:
} GetCode_ 會調用GetDataBlock來讀取GIF圖片中的數據:
以上就是涉及到的漏洞代碼,你有發現一些端倪嗎?
該漏洞依賴於從整形(int)到無符號字元(unsigned char)的類型轉換。就像上述的:如果GetDataBlock_返回-1,則第400行中的scd->done將會被設置為True,並停止while循環。但是其定義的count是無符號字元,它總是從0到255的正數,所以這種循環停止動作是不會被觸發執行的。
因此,最終結果就是,一張GIF圖片就可以實現無限循環,導致伺服器資源耗盡,直到崩潰宕機。
PoC
由於現實網路中,很多伺服器都會用GD圖形的擴展庫,對用戶上傳的圖片作重新尺寸調整處理,所以該漏洞具有很強的現實危害。
後記 Orange Tsai後續會公開更多0-day和與該漏洞相關的內容。
漏洞參考:
https://bugs.php.net/bug.php?id=75571
http://php.net/ChangeLog-7.php
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5711
更多分享,敬請關注
本文來源網路,侵立刪!
※一套5萬名開發人員學了都說好的Hadoop視頻教程
※PHP 運行機制與原理
TAG:PHP技術大全 |