作者:陳思蘊 / 臺灣大學計算機及資訊網路中心資訊網路組行政專員、李美雯 / 臺灣大學計算機及資訊網路中心資訊網路組程式設計師
前言
資安研究團隊DEVCORE於2024年6月6日通報PHP重大遠端程式碼執行漏洞(CVE-2024-4577),當時正值端午節連續假期前,且PHP為廣泛使用的開源程式語言,多個網站因此漏洞遭到加密勒索,導致此漏洞引發了大量的關注,並凸顯出網站防護為極嚴峻的挑戰。本文將介紹CVE-2024-4577漏洞的背景,並提供幾項日常防範攻擊的方法。
CVE-2024-4577漏洞背景
資安研究團隊DEVCORE於2024年6月6日通報CVE-2024-4577漏洞,因PHP程式語言在開發時未考慮到字元編碼轉換的特性,特別是在PHP的CGI模式下,利用了Windows作業系統上的「Best-Fit」功能,導致未經身分驗證的遠程攻擊者可透過特定的字元序列繞過原先CVE-2012-1823的防護,並透過參數注入攻擊在PHP伺服器上執行任意程式碼,即便PHP未設定為CGI模式,只要PHP的可執行檔(如:php.exe或php-cgi.exe)位於可存取的目錄中,該漏洞就可能被利用(參考資料[1])。
CVE-2024-4577漏洞影響範圍(Apache)
安裝於Windows作業系統上所有的PHP版本皆受此漏洞影響,詳細版本請參考以下說明。
- PHP 8.3所有於8.3.8以前的版本
- PHP 8.2所有於8.2.20以前的版本
- PHP 8.1所有於8.1.29以前的版本
由於PHP 8.0分支版本、PHP 7以及PHP 5官方已不再提供更新,請網站管理者盡速評估升級版本或採取修補建議。
CVE-2024-4577漏洞影響範圍(XAMPP)
除了常見的Apache與PHP的組合,所有版本的XAMPP於Windows預設安裝時也遭受此弱點影響。
CVE-2024-4577漏洞修補建議
立刻備份並升級至PHP官方最新8.3.8、8.2.20與8.1.29版本,由於PHP CGI模式已經是一種過時且易於出現問題的架構,建議評估採用較為安全的Mod-PHP、FastCGI或PHP-FPM等架構,對於無法升級的系統可透過下列方式暫時緩解弱點。
- 無法立即更新至最新PHP版本
透過Rewrite規則阻擋攻擊,請注意此規則只作為繁體中文、簡體中文及日文語系中的暫時緩解機制,實務上仍建議更新至已修復版本或採用較安全的架構,如圖1。
圖1、PHP 阻擋CVE-2024-4577漏洞Rewrite規則;圖片來源:DEVCORE
- 使用XAMPP的網站
若確認未使用到PHP CGI之功能,請至httpd-xampp.conf找到相對應的設定行數進行註解後儲存,如圖2。
圖2、XAMPP註解PHP CGI之功能;圖片來源:DEVCORE
CVE-2024-4577漏洞災情
因漏洞通報當時正值端午節連續假期,許多網站來不及執行PHP版本更新或是採取其他防護措施,導致網站資料被加密並遭勒索0.1比特幣,相當於今日台幣匯率216,802.1元,如圖3所示。
圖3、遭勒索加密的網站
日常防護攻擊的方法
面對層出不窮的駭客攻擊,本文提供以下幾點建議作為參考,加強網站的資安防護以避免成為加密勒索的目標。
- 確保網站之作業系統、軟體與使用套件更新至最新版本
勒索組織通常利用系統漏洞進行攻擊,網站管理者應隨時確認作業系統、軟體與所使用套件是否更新至最新的穩定版本。
- 網站資料應定期執行快照或備份並儲存於安全的位置
為了防範駭客攻擊並保障網站安全,網站應定期進行快照或備份,即使網站不幸遭到駭客加密,仍然可以透過還原備份資料恢復網站運作。
- 網站應定期執行弱點掃描,並修補已知漏洞
- ,即時修補已知漏洞預防系統遭駭客入侵。
- 啟用額外的防護機制
- Web Application Firewall)、端點偵測和回應機制(Endpoint Detection and Response)或防毒軟體,防護機制若偵測到疑似後門程式運作,立即跳出告警或終止連線。
參考資料
- DEVCORE:資安通報:PHP 遠端程式碼執行 (CVE-2024-4577) - PHP CGI 參數注入弱點。2024-06-06。網址:https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/