PHP源代码后门事件后续:用户数据库遭泄露或是元凶
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
PHP 的维护人员 Nikita Popov 发布更新,说明了PHP源代码如何遭攻陷以及恶意代码如何被插入的情况,他将原因归咎于用户数据库泄露而非服务器本身存在问题。
上个月,PHP 代码仓库中被插入代码,如运行该恶意代码可造成web 服务器后门。该恶意代码最初以 PHP 语言的创始人 Rasmus Lerdorf 的名义提交,被删除后,又以 Popov 的名义提交。
PHP 团队原以为托管仓库的服务器遭破解,但 Popov 发布博客文章指出,“我们认为 git.php.net 服务器并未遭攻陷。然而,很可能master.php.net用户数据库被泄露。“
Git.php.net 服务器使用gitolite 启用 git 托管,而 Popov 发现“这两次提交完全绕过 gitolite 基础设施“,因此他怀疑服务器被攻陷。由于代码诊断和服务器设置需要时间,因此他决定将 GitHub 上的 PHP 仓库作为主要发布版本。
然而,Popov 之后发现该仓库还支持通过 HTTPS 做出的修改,使用 “git-http-backend behind Apache2 Digest authentication against the master.php.net user database”即可,而这种情况是他之前未曾预料到的,“我不确定为什么会支持基于密码的认证,因为它的安全性远不及公钥认证。“
Popov 认为,用户数据库被泄露,尽管与日志表明攻击者猜测的是用户名这一事实不符。攻击者一旦找到正确的用户名,则认证会立即生效。Popov 指出,用户数据库是“非常老旧的操作系统/PHP版本上的非常老旧的代码”,他认为其中存在漏洞“并不令人十分惊讶”。
遗留问题
目前,为防御 SQL 注入攻击,Popov 已采取多种措施如重置所有密码,修复代码使用参数化查询等。
多年来,参数化查询一直都被推崇为最佳实践,而并未如此践行的代码这么就都在 PHP 源代码基础设施核心运行的事实表明,如果不安全的遗留代码运行正常且未引发任何明显问题,它们将在组织机构中存在很长的时间。
Popov 表示和,“少数”PECL (PHP Extension Community Library) 扩展仍然在使用更老旧的源代码管理系统 Subversion,其代码托管在 svn.php.net 中。
密码加密已被升级为使用公钥,它和 Apache 的 HTTP Digest 认证不兼容。这种限制以及这起 PHP 源代码后门事件说明,svn.php.net 目前已被设为只读状态,且其活跃仓库已被迁移到GitHub。
Popov 认为,“可能在迁移过程中某些东西崩溃了“,并表示遇到任何问题均应报告给他。
现在虽然仍无法确定PHP源代码后门事件的根因,但迁移到 GitHub 使其相形见绌。不管根因是否为 SQL 注入,但仍然有必要提醒所运行代码的存在时间已无法保证其安全,而且结果常常正好相反。
为增强供应链安全,美国将设立“国家供应链完整性之月”
有人滥用 GitHub Actions在 GitHub 服务器挖掘密币,且正在蔓延
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制
找到软件供应链的薄弱链条
https://www.theregister.com/2021/04/07/update_on_php_source_code/
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。