DEVCORE 發現 PHP 中存在一個嚴重的遠端程式碼執行漏洞,影響 Windows 系統上該語言的所有版本。該漏洞被追蹤為 CVE-2024-4577,已於 2024 年 6 月 6 日修復。
發現和披露
DEVCORE 攻擊研究團隊在檢查 PHP 與 Windows 編碼轉換功能的整合時發現了此嚴重漏洞。該漏洞允許未經身份驗證的攻擊者使用特定字元序列繞過現有保護措施(特別是 CVE-2012-1823),從而在受影響的伺服器上執行任意程式碼。DEVCORE 於 2024 年 5 月 7 日向 PHP 官方團隊報告了此問題,他們承認了該問題的嚴重性並迅速開發和釋出了補丁。
技術細節和影響
該漏洞源於 PHP 實現中的疏忽,特別是在 Windows 上編碼轉換期間對 Best-Fit 功能的處理。此漏洞允許引數注入攻擊,從而危及伺服器安全。受影響的 PHP 版本包括:
- 8.3.8 以下的 PHP 8.3 版本
- 8.2.20 以下的 PHP 8.2 版本
- 8.1.29 以下的 PHP 8.1 版本
值得注意的是,較舊的 PHP 分支(8.0、7.x、5.x)已經不再受支援且仍無人維護,這增加了仍在執行這些版本的系統的風險。
在 CGI 模式下執行 PHP 或暴露 PHP 二進位制檔案的伺服器尤其容易受到威脅。常見的受影響配置包括:
- 將 HTTP 請求對映到 Apache 配置中的 PHP-CGI 可執行檔案。
- 適用於 Windows 的 XAMPP,預設情況下公開 PHP 可執行二進位制檔案。
DEVCORE 已驗證該漏洞在 Windows 繁體中文(內碼表 950)、簡體中文(內碼表 936)和日語(內碼表 932)語言環境中的利用情況。對於其他語言環境(包括英語、韓語和西歐),由於 PHP 使用場景各異,建議進行全面的資產評估。
解決措施
強烈建議升級到最新的 PHP 版本 (8.3.8、8.2.20、8.1.29)。對於無法立即升級的系統,臨時緩解措施包括實施特定的 Apache 重寫規則來阻止攻擊媒介,特別是在被確定為易受攻擊的區域。
對於 Windows 版 XAMPP 使用者,註釋掉 Apache 配置檔案中的 ScriptAlias /php-cgi/”C:/xampp/php/” 行可以減輕暴露。
伺服器管理員應該:
- 確保 PHP 已更新至版本 8.3.8、8.2.20 或 8.1.29。
- 徹底檢查 PHP 配置,特別是使用 CGI 模式或公開 PHP 二進位制檔案的伺服器。
- 如果無法立即升級,請使用推薦的重寫規則。
- 評估遷移到更安全的 PHP 執行架構,如 Mod-PHP、FastCGI 或 PHP-FPM。