PHP的Git服务器被入侵,源代码被添加后门
在最新的软件供应链攻击中,PHP官方Git仓库被黑客攻击,代码库被篡改。
3月28日,攻击者使用PHP的作者Rasmus Lerdorf和Jetbrains开发者Nikita Popov的账号,向git.php.net服务器上的 php-src 存储库推送了两次恶意提交。
PHP Git服务器被植入RCE后门
PHP是一种开源的计算机脚本语言,为互联网上超过79%的网站提供动力。因此,事件一经曝光被引起了强烈关注。
负责人Popov在公告中表示,他们目前还不知道事件是怎样发生的,但是此次事件导致的后果是git.php.net服务器的数据泄露而不是简单的单个账号的泄露。
官方公告
经观察,在两个恶意提交中,攻击者在上游发布了一个假装成排本更正的神秘修改。
攻击者以Rasmus Lerdorf的身份签署的恶意提交(非法)植入远程代码执行后门
然而,仔细检查一下新增的第370行调用zend_eval_string函数的地方,可以发现,这段代码实际上是为运行被劫持的PHP版本的网站植入了一个后门,以获得轻松的远程代码执行(RCE)。
PHP的开发者表示,如果字符串以'zerodium'开头,这一行就会从useragent HTTP头内执行PHP代码。
此外,PHP相关负责人还表示,恶意提交是在提交几小时后,他们进行常规的代码审查时发现的。这些更改很明显是恶意的,所以很快被还原了。
对于Git这样的源代码版本控制系统来说,这样的事件会发生很正常。因为可以把提交的内容为打上本地任何一个人的签名,然后再把伪造的提交内容上传到Git服务器上。这样一来,就会让人觉得这个提交确实是由签名的人提交的。
PHP官方代码库迁移到GitHub
作为此次事件后的预防措施,PHP维护人员决定将PHP官方源码库迁移至GitHub。
他们表示,虽然调查还在继续,但他们为了使自己的Git基础设施没有多余的风险,他们会关闭git.php.net的服务器。
取而代之的是GitHub上的存储库,之前这只是一个镜像,之后将成为正式服务器。
并且,从现在开始,任何修改都要直接推送到GitHub上而不是原先的服务器。
那些想要帮助PHP的人可以申请在GitHub上被添加为PHP组织的一部分。不过,如果要成为该组织的一员,先要在自己的GitHub账户上开启双因素认证。
目前,PHP还在检查除了那两个恶意提交外的威胁,并且检查是否有任何代码再恶意提交被发现之前被分发到下游。