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哈希函数的密码哈希函数。
