PHP 软件包存储库 Packagist 透露,一名“攻击者”获得了该平台上四个非活动帐户的访问权限,以劫持十几个软件包,迄今为止安装量已超过 5 亿。
“攻击者分叉了每个包,并用他们自己的消息替换了composer.json中的包描述,但没有进行任何恶意更改,”Packagist 的 Nils Adermann说。“然后将包 URL 更改为指向分叉的存储库。”
据说这四个用户帐户可以访问总共 14 个包,包括多个 Doctrine 包。事件发生在2023年5月1日,受影响包裹的完整列表如下——
- acmephp/acmephp
- acmephp/core
- acmephp/ssl
- doctrine/doctrine-cache-bundle
- doctrine/doctrine-module
- doctrine/doctrine-mongo-odm-module
- doctrine/doctrine-orm-module
- doctrine/instantiator
- growthbook/growthbook
- jdorn/file-system-cache
- jdorn/sql-formatter
- khanamiryan/qrcode-detector-decoder
- object-calisthenics/phpcs-calisthenics-rules
- tga/simhash-php
据安全研究员 Ax Sharma透露,这些更改是由化名“neskafe3v1”的匿名渗透测试人员试图找到一份工作而做出的。
简而言之,攻击链使得将这些软件包中的每一个的 Packagist 页面修改为同名的 GitHub 存储库成为可能,从而有效地改变了 Composer 环境中使用的安装工作流程。
成功利用意味着下载包的开发人员将获得分叉版本,而不是实际内容。
Packagist 表示,没有分发额外的恶意更改,所有帐户都被禁用,他们的软件包已于 2023 年 5 月 2 日恢复。它还敦促用户启用双因素身份验证 (2FA) 以保护他们的帐户。
“所有四个帐户似乎都在使用在其他平台上先前发生的事件中泄露的共享密码,”阿德曼指出。“请不要重复使用密码。”
随着云安全公司 Aqua 确定了数千个暴露的云软件注册表和存储库,其中包含超过 2.5 亿个工件和超过 65,000 个容器映像,这一发展正值此发展之际。
错误配置源于将注册表错误地连接到互联网、设计允许匿名访问、使用默认密码以及向可能被滥用以用恶意代码毒害注册表的用户授予上传权限。
“在其中一些情况下,匿名用户访问允许潜在的攻击者获取敏感信息,例如秘密、密钥和密码,这可能导致严重的软件供应链攻击和软件开发生命周期 (SDLC) 中毒, ”研究人员 Mor Weinberger 和 Assaf Morag上月底透露。