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