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