圖片來源: 

PHP

假若你的網站使用PHP開發,並以Nginx建置網頁伺服器,而且開啟了PHP-FPM(FastCGI Process Manager)處理網頁存取的請求,請注意是否存在漏洞CVE-2019-11043。PHP官方團隊在接獲通報之後,於10月24日推出修補版本7.1.33、7.2.24,以及7.3.11,網路威脅情報公司Bad Packets也於26日向媒體ZDNet表示,已有濫用漏洞的攻擊事件出現。

之所以發現這項漏洞,緣自Wallarm公司的資安研究員Andrew Danau於9月中旬參與Capture the Flag(CTF)競賽,他在解題時,偶然找到PHP腳本不尋常的處理行為──如果在網址列上輸入%0a(代表換到新的一行),所連上的網站伺服器會回應比預期還要多的資料。雖然當時並未因此成功找到出題者的答案,但Andrew Danau與組隊的兩名隊友,也就是Emil Lerner和Omar Ganior,決定進一步探討背後的原因,隨後他們找到濫用的途徑,並且能夠用來進行遠端程式碼執行(RCE)攻擊,Emil Lerner與Omar Ganiev兩人在9月24日也公開概念驗證(PoC)攻擊程式

Andrew Danau表示,攻擊者若要濫用這個PHP臭蟲,必須要傳送一個特別的封包,裡面包含具有fastcgi_split_path參數的Nginx組態檔案,因此,並非所有使用PHP的網站都會受害,而是需要同時具備2個條件。

首先,是網站伺服器以Nginx架設,再者則是要啟用PHP裡面提供的PHP-FPM模組,而這個模組主要的用途,就是支援PHP網頁處理FastCGI協定。漏洞影響的範圍有多大?主要是PHP 7的所有版本,因為發動攻擊的過程中,需要使用FastCGI參數_fcgi_data_seg,這是PHP 7才開始提供的功能,因此,只能針對較新的PHP 7發動攻擊,而無法在終止支援的PHP 5上執行,但研究人員強調,攻擊者還是有可能透過其他的管道,於舊版PHP上濫用這個漏洞。

根據W3Techs網站的統計,目前全球的網站有30.6%採用Nginx網頁伺服器,33%網頁採用PHP 7,網站經營者很有可能同時採用上述兩者,再搭配PHP-FPM運作。因此這樣的漏洞,仍然相當值得管理者加以留意。

雖然PHP官方已推出新版本修補漏洞,但網站管理者若是無法更新PHP軟體,還是有一些緩解之道,像是Andrew Danau認為,可透過網頁應用程式防火牆(WAF),過濾%0a和%0d字串的網址請求(但可能會出現誤判的情況),而弱點管理業者Tenable則提出從網頁程式碼下手的做法,像是加入try_files指令,或是透過if宣告方式,如if (-f $uri),驗證是否有網頁伺服器上的檔案能被直接存取。


Advertisement

更多 iThome相關內容