3 月 28 日,PHP 团队成员 Nikita Popov 发布一条紧急新闻,称“PHP 官方 Git 服务器被入侵,代码库被篡改”。
之后,网名叫 nixCraft 的网友也在 Twitter 发文,“小心!PHP git 服务器受到攻击,并且,攻击者向 PHP 代码库中添加了后门。请大家注意其安全性!”
PHP Git 服务器被植入 RCE 后门
根据官方公告,PHP 团队在 git.php.net 服务器上维护的 php-src 仓库被推送了两个恶意提交(commits)。
为了保证提交可靠性,攻击者还伪造签名,让人以为提交是由 PHP 开发者和维护者 Nikita Popov 与 Rasmus Lerdorf 完成的。
然而,在新增的第 370 行调用 zend_eval_string 函数的地方,这段代码实际上是为运行这个被劫持的 PHP 版本的网站埋下了一个后门,以获取轻松的远程代码执行(RCE)。
PHP 开发者表示,“如果字符串以'zerodium'开头,这一行就会从 useragent HTTP 头内执行 PHP 代码。”
在提交几小时后,PHP 团队就在进行常规的代码审查时发现问题。这些更改的恶意很明显,所以很快被还原了。
对像 Git 这样的源码版本控制系统来说,这样的事并不让人意外。因为攻击者可以把提交的内容打上其他人的签名,然后再把伪造的提交上传到远程的 Git 服务器。这样一来,就会让人觉得这个提交确实是由签名的人提交的。
国外安全媒体 bleepingcomputer 对此评论,“作为一门服务器端编程语言,PHP 为互联网上超过 79%的网站提供支持。这一事件令人震惊。”
弃用官方 Git 服务器,PHP 代码库迁移到 GitHub
作为此次事件后的预防措施,PHP 团队已经决定将 PHP 官方源码库迁移到 GitHub。
目前,PHP 团队还在对此事进行调查。官方称,“我们还不知道这是怎么发生的,但是这次恶意活动源于被入侵的 git.php.net 服务器,而非个人的 Git 账户被入侵。
“虽然调查还在进行中,但为了减少我们自己维护的 Git 基础设施所面临的风险,我们将停用 git.php.net 服务器”。
官方团队表示,“GitHub 上的 PHP 代码库以前只是作为镜像,现在将作为正式的来使用。”
并且,从现在开始,任何代码修改都会直接推送到 GitHub 上。
现在,除了那两个恶意提交外,PHP 官方团队还在检查是否还有其他的安全威胁。
评论