PHP的Git服務器被黑客攻擊源碼庫被添加後門
在最新的軟件供應鏈攻擊中,PHP官方Git倉庫被黑客攻擊,代碼庫被篡改。昨天,PHP團隊在git.php.net服務器上維護的php-src Git倉庫中被推送了兩個惡意提交。攻擊者在上游提交了一個神秘的改動,稱其正在”修復排版”,假裝這是一個小的排版更正,並且偽造簽名,讓人以為這些提交是由已知的PHP開發者和維護者Rasmus Lerdorf和Nikita Popov完成的。
實際上,攻擊者的惡意提交是植入了遠程代碼執行後門。考慮到PHP仍然是服務器端編程語言,為互聯網上超過79%的網站提供支持,這一事件令人震驚。新增的第370行調用zend_eval_string函數的地方,這段代碼實際上是為運行這個被劫持的PHP版本的網站埋下了一個後門,以獲取輕鬆的遠程代碼執行(RCE)。
“如果字符串以’zerodium’開頭,這一行就會從useragent HTTP頭內執行PHP代碼。”PHP開發者Jake Birchall向最先指出這一異常的Michael Voříšek回應道。
在電子郵件採訪中,PHP維護者Nikita Popov告訴我們。
“第一次提交是在幾個小時後被發現的,作為常規提交後代碼審查的一部分。Popov表示,”這些改動是相當明顯的惡意的,並且馬上就被還原了”。
這並不奇怪,因為像Git這樣的源碼版本控制系統,可以將一個提交的內容簽名為來自本地的其他人,然後將偽造的提交上傳到遠程的Git服務器上,這樣就會給人一種印象,好像它確實是由被已知的開發者簽名的。
雖然對事件的完整調查還在進行中,但根據PHP維護者的說法,這次惡意活動源於被入侵的git.php.net服務器,而不是個人的Git賬戶被入侵。作為此次事件後的預防措施,PHP維護人員決定將PHP官方源碼庫遷移至GitHub。
“雖然調查仍在進行中,但我們決定維護自己的git基礎設施是一個不必要的安全風險,我們將停止使用git.php.net服務器。”
“取而代之的是,GitHub上的倉庫,以前只是鏡像,現在將成為規範的來源。”Popov宣布。隨著這一改變的進行,從現在開始,任何代碼修改都要直接推送到GitHub上,而不是git.php.net服務器上。
那些有興趣為PHP項目做出貢獻的人現在需要在GitHub上被添加為PHP組織的一部分。相關說明在同一個安全公告中提供。
要成為該組織的成員,你需要在你的GitHub賬戶上啟用雙因素認證(2FA)。”我們正在審查倉庫中除了兩個引用的提交之外的任何損壞,在此期間,它可能被克隆/分叉,但這些更改並沒有進入任何標籤或發布工件中。”
“這些改動是在PHP 8.1的開發分支上,該分支將在年底發布。”PHP團隊已經證實,他們計劃在接下來的日子裡最終退役他們的git服務器,並永久轉移到GitHub。