サイト一覧NewsBridge 翻訳して読み比べるニュース
iThomeの一覧へ戻る

PHP2Shell恐源自20年前的嚴重記憶體錯誤

iThome文字
元の記事を開く

記事本文

6 段落 · 単語をタップ(クリック)または文章を選ぶと翻訳 · 単語をタップ/文章を選ぶと翻訳

10月21日PHP開發團隊發布及修補統稱為PHP2Shell的重大漏洞CVE-2026-109618、CVE-2026-109619,這些漏洞由資安公司Wiz、Calif,以及AI龍頭OpenAI獨立調查並向PHP通報,其中Wiz指出,這兩個漏洞最早可追溯到2012年推出的PHP 5.4版,然而Calif透露,PHP2Shell存在的時間恐怕不僅於此,可能源自二十多年前第一個被發現的PHP記憶體限制漏洞。

Calif表示,他們在7月底參與OpenAI發起的Patch the Planet計畫,借助AI的力量成功找出PHP2Shell,但在此之前,已有研究人員多次找出相關問題,只是因為無法被證實能用於攻擊,而沒有被視為資安漏洞。Calif指出,這些弱點可追溯到2004年,現已加入該公司的PHP資安專家Stefan Esser當時發現的全球第一個PHP記憶體限制漏洞,該弱點可被用於遠端程式碼執行(RCE)攻擊,由於過於危險,Stefan一度不願將其公開。

後續在2020年,使用電子郵件信箱jr@coredu.edu的研究員也發現相同問題,他向PHP專案通報看似無害的問題#78876,提及特定的長變數可造成記憶體耗盡(OOM),並導致暫存檔案清理失敗,不過,當時並未引起太多注意。4年後OSTIF與Quarkslab對PHP進行稽核,也發現相同的OOM問題,然而,由於研究人員無法證明能被用於攻擊,此弱點未被修復。

直到Calif借助AI的力量重新檢視PHP的攻擊面,並針對Stefan發現的弱點重新調查,終於在8月1日找到第一個致命的OOM弱點,以及多個可導致遠端程式碼執行的途徑,成功拼湊出能用於WordPress的RCE漏洞,後續他們又從mod_php與PHP-FPM找出能利用的可靠漏洞。Calif發現,PHP在執行記憶體配置時,可能先增加資料結構的元素計數,卻尚未完成資料初始化;若此時發生致命錯誤,後續清理程序仍可能將未完整初始化的資料視為有效內容,進而造成記憶體破壞。

另一條攻擊途徑則涉及PHP的Session上傳進度處理功能,當PHP尚未完成模組啟用便開始處理上傳資料時,若請求因錯誤中斷,相關清理流程可能遭到跳過,使Session全域狀態繼續指向已釋放的記憶體。攻擊者可利用後續請求觸發這些失效參照,形成進一步利用的條件。Calif也分析Apache的mod_php與PHP-FPM在請求失敗後的處理差異,說明不同執行環境需要不同的漏洞利用途徑。

針對PHP2Shell的調查成果,Calif表示,該公司使用大型語言模型協助檢視PHP記憶體配置、錯誤處理與請求結束時的清理流程,並將發現的漏洞模式整理成可重複使用的分析方法,以尋找程式碼中其他相似缺陷,Calif強調,他們能借助AI成功找到漏洞的關鍵,極為仰賴研究人員對於軟體已知漏洞、架構及既有研究的理解,因為這是決定分析方向的與向AI提問的重要因素。

段落ごとの訳がずれるときに

単語をタップ(クリック)すると単語を、文章を選ぶとその範囲をすぐに翻訳します。