PHP Git 服務器被黑客入侵,破壞用戶數據庫
PHP編程語言的維護者確認,威脅行為者可能已經破壞了包含其密碼的用戶數據庫。
PHP編程語言的維護者提供了有關3月28日發生的安全漏洞的更新。
未知的攻擊者入侵了PHP編程語言的官方Git服務器,并推送了未經授權的更新,以在源代碼中插入后門。3月28日,攻擊者向git.php.net服務器上托管的“ php-src ”存儲庫提交了兩次提交,他們使用了PHP的作者Rasmus Lerdorf和Jetbrains開發人員Nikita Popov的帳戶。
以下是Nikita Popov提供的關于調查過程中發現的問題的摘要:
- 我們不再相信git.php.net服務器已受到威脅。但是,master.php.net用戶數據庫有可能泄漏。
- master.php.net已遷移到新系統main.php.net。
- 所有的php.net密碼均已重置。轉到
<https://main.php.net/forgot.php>設置新密碼。 - git.php.net和svn.php.net現在都是只讀的,但暫時仍然可用。
Popov解釋說,對該事件的進一步調查顯示,提交還通過HTTPS和基于密碼的身份驗證進行了推送。
“當時我不知道的是git.php.net(有意地)不僅支持通過SSH(使用gitolite基礎設施和公共密鑰密碼學)而且還通過HTTPS推送更改。后者不使用gitolite,而是在針對master.php.net用戶數據庫的Apache2 Digest身份驗證之后使用了git-http-backend。波波夫繼續。“我不確定為什么首先要支持基于密碼的身份驗證,因為它比pubkey身份驗證的安全性低得多。根據訪問日志,我們可以確定確實使用HTTPS和基于密碼的身份驗證推送了提交。相關日志條目的摘錄如下所示”

Popov指出,攻擊者僅進行了幾次嘗試猜測用戶名的嘗試,一次嘗試是成功的。在撰寫本文時,尚不清楚master.php.net數據庫中該特定用戶的憑據是否已泄漏,因為顯然,攻擊者沒有理由猜測用戶名一旦損壞數據庫。
PHP維護人員還注意到,用于身份驗證和各種管理任務的master.php.net系統正在運行非常舊的代碼,并且基于非常舊的操作系統/ PHP版本。
下面列出了為保護該系統而實施的改進措施:
- master.php.net已遷移到新系統(運行PHP 8),并同時重命名為main.php.net。除其他外,新系統支持TLS 1.2,這意味著您在訪問該站點時將不再看到TLS版本警告。
- 該實現已轉向使用參數化查詢,以更加確信不會發生SQL注入。
- 密碼現在使用bcrypt存儲。
- 重置現有密碼(使用
main.php.net/forgot.php生成一個新密碼)。
維護者已經將master.php.net遷移到了一個新的main.php.net系統,該系統提供對TLS 1.2的支持,他們還強制重置密碼,并用bcrypt替換了MD5哈希函數的密碼哈希函數。