最近PHP發佈了一個重大漏洞。這個漏洞是由戴夫寇爾研究團隊發現的,他們在進行前瞻攻擊研究期間,發現了PHP程式語言在Windows作業系統上的遠端程式碼執行弱點。這讓我非常驚訝,因為PHP在網站開發中使用非常廣泛,而這個漏洞的存在對我們這些開發者來說是一個很大的威脅。
漏洞描述
根據文章內容,這個漏洞是因為PHP在設計時忽略了Windows作業系統內部對字元編碼轉換的Best-Fit特性,導致未認證的攻擊者可以透過特定的字元序列繞過舊有的CVE-2012-1823保護,並且可以在遠端PHP伺服器上執行任意程式碼。這對於我們這些使用Windows作業系統並搭建PHP環境的開發者來說,是一個非常嚴重的問題。
影響範圍
這個弱點影響了所有安裝於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官方已不再維護,我們需要特別注意自己的版本是否在影響範圍內。
如何確認自己易遭受攻擊?
對於使用Apache HTTP Server加上PHP組合的網站管理員,文章列出了兩個方式確認伺服器是否易被攻擊。其中情境二也是XAMPP for Windows安裝時的預設設定,這意味著所有版本的XAMPP for Windows安裝也預設受此弱點影響。尤其是在繁體中文、簡體中文及日文語系的Windows作業系統上,這個漏洞更容易被利用。
修補建議
強烈建議所有使用者升級至PHP官方最新版本(8.3.8、8.2.20與8.1.29)。對於無法升級的系統,可以透過下列方式暫時緩解弱點:
- 對無法更新PHP的使用者,可以透過Rewrite規則阻擋攻擊。
- 對XAMPP for Windows使用者,可以透過修改Apache Httpd設定檔避免暴露在弱點中。
例如,將 C:/xampp/apache/conf/extra/httpd-xampp.conf 中的 ScriptAlias /php-cgi/ “C:/xampp/php/” 註解掉即可。
作為一名PHP開發者,看到這樣的資安問題,確實讓人感到有些擔憂。不過,幸運的是,研究團隊已經在第一時間回報給PHP官方並且發佈了修復版本。如果有相同或是類似環境,希望大家都能夠盡快更新自己的PHP版本,保證系統的安全。
原文-戴夫寇爾官方BLOG: