源代碼被添加后門之后,PHP的用戶數(shù)據(jù)庫可能已被入侵
在最新的軟件供應(yīng)鏈攻擊中,PHP官方Git倉庫被黑客攻擊,代碼庫被篡改。近日,PHP維護人員表示黑客可能已經(jīng)擁有了包含密碼的用戶數(shù)據(jù)庫。
3月28日,攻擊者使用PHP的作者Rasmus Lerdorf和Jetbrains開發(fā)者Nikita Popov的賬號,向git.php.net服務(wù)器上的 php-src 存儲庫推送了兩次惡意提交。
用戶數(shù)據(jù)庫可能已被入侵
此次事件最初被視為git.php.net服務(wù)器的泄露。但對事件進行進一步調(diào)查發(fā)現(xiàn),這些提交是使用HTTPS和基于密碼的認證推送的結(jié)果,這讓研究人員懷疑master.php.net用戶數(shù)據(jù)庫可能存在泄露。
同時,研究人員還發(fā)現(xiàn)黑客需要對用戶名進行幾次猜測,一旦找到正確的用戶名,就會成功認證。但如果數(shù)據(jù)庫已經(jīng)泄露,為什么黑客還需要進行猜測呢?目前,研究人員還沒有找到原因。
此外,據(jù)說master.php.net認證系統(tǒng)使用的是非常老的操作系統(tǒng)和PHP的版本,這就使得攻擊者也有可能利用軟件的漏洞來發(fā)動攻擊。
因此,維護者已經(jīng)將master.php.net遷移到新的main.php.net系統(tǒng)中,并支持TLS 1.2。此外,維護者還重置了所有現(xiàn)有的密碼,并使用bcrypt而不是普通的MD5哈希存儲密碼。
事件回顧
PHP Git服務(wù)器被植入RCE后門
PHP是一種開源的計算機腳本語言,為互聯(lián)網(wǎng)上超過79%的網(wǎng)站提供動力。因此,事件一經(jīng)曝光被引起了強烈關(guān)注。
負責(zé)人Popov在公告中表示,他們目前還不知道事件是怎樣發(fā)生的,但是此次事件導(dǎo)致的后果是git.php.net服務(wù)器的數(shù)據(jù)泄露而不是簡單的單個賬號的泄露。
官方公告
經(jīng)觀察,在兩個惡意提交中,攻擊者在上游發(fā)布了一個假裝成修正文字輸入錯誤的神秘修改。
攻擊者以Rasmus Lerdorf的身份簽署的惡意提交(非法)植入遠程代碼執(zhí)行后門
然而,仔細檢查一下新增的第370行調(diào)用zend_eval_string函數(shù)的地方,可以發(fā)現(xiàn),這段代碼實際上是為運行被劫持的PHP版本的網(wǎng)站植入了一個后門,以獲得輕松的遠程代碼執(zhí)行(RCE)。
PHP的開發(fā)者表示,如果字符串以'zerodium'開頭,這一行就會從useragent HTTP頭內(nèi)執(zhí)行PHP代碼。
此外,惡意代碼中包含了一條注解 “REMOVETHIS: sold to zerodium, mid 2017”。值得注意的是,Zerodium是一家知名的零日漏洞經(jīng)紀商,而注釋的意思是“漏洞在2017年中出售給了zerodium”。對此,而Zerodium的CEO Chaouki Bekrar認為攻擊者很可能試圖出售這個漏洞,但找不到賣家,所以攻擊者干脆自己惡搞。
不過,PHP相關(guān)負責(zé)人表示,惡意提交幾小時后,就被他們在進行常規(guī)的代碼審查時發(fā)現(xiàn)。這些更改的惡意很明顯,所以很快被還原了。
對于Git這樣的源代碼版本控制系統(tǒng)來說,這樣的事件會發(fā)生很正常。因為可以把提交的內(nèi)容為打上本地任何一個人的簽名,然后再把偽造的提交內(nèi)容上傳到Git服務(wù)器上。這樣一來,就會讓人覺得這個提交確實是由簽名的人提交的。
PHP官方代碼庫遷移到GitHub
作為此次事件后的預(yù)防措施,PHP維護人員決定將PHP官方源碼庫遷移至GitHub。
他們表示,雖然調(diào)查還在繼續(xù),但為了減少自己的Git基礎(chǔ)設(shè)施所面對的風(fēng)險,他們決定關(guān)閉git.php.net的服務(wù)器。原本只是鏡像的GitHub上的存儲庫,之后將成為正式服務(wù)器。
并且,從現(xiàn)在開始,任何修改都要直接推送到GitHub上而不是原先的服務(wù)器。
那些想要幫助PHP的人可以申請在GitHub上被添加為PHP組織的一部分。不過,如果要成為該組織的一員,先要在自己的GitHub賬戶上開啟雙因素認證。
目前,PHP還在檢查除了那兩個惡意提交外的威脅,并且檢查是否有任何代碼再惡意提交被發(fā)現(xiàn)之前被分發(fā)到下游。