官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
在最新的软件供应链攻击中,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代码。
此外,恶意代码中包含了一条注解 “REMOVETHIS: sold to zerodium, mid 2017”。值得注意的是,Zerodium是一家知名的零日漏洞经纪商,而注释的意思是“漏洞在2017年中出售给了zerodium”。对此,而Zerodium的CEO Chaouki Bekrar则认为攻击者很可能试图出售这个漏洞,但找不到卖家,所以攻击者干脆自己恶搞。
不过,PHP相关负责人表示,恶意提交是在提交几小时后,他们进行常规的代码审查时发现的。这些更改很明显是恶意的,所以很快被还原了。
对于Git这样的源代码版本控制系统来说,这样的事件会发生很正常。因为可以把提交的内容为打上本地任何一个人的签名,然后再把伪造的提交内容上传到Git服务器上。这样一来,就会让人觉得这个提交确实是由签名的人提交的。
PHP官方代码库迁移到GitHub
作为此次事件后的预防措施,PHP维护人员决定将PHP官方源码库迁移至GitHub。
他们表示,虽然调查还在继续,但为了减少自己的Git基础设施所面对的风险,他们决定关闭git.php.net的服务器。原本只是镜像的GitHub上的存储库,之后将成为正式服务器。
并且,从现在开始,任何修改都要直接推送到GitHub上而不是原先的服务器。
那些想要帮助PHP的人可以申请在GitHub上被添加为PHP组织的一部分。不过,如果要成为该组织的一员,先要在自己的GitHub账户上开启双因素认证。
目前,PHP还在检查除了那两个恶意提交外的威胁,并且检查是否有任何代码再恶意提交被发现之前被分发到下游。