黑客攻击 Packagist PHP 包,“劫持”数亿软件包
2023-5-6 14:33:52 Author: www.freebuf.com(查看原文) 阅读量:20 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Bleeping Computer 网站披露,一个化名“neskafe3v1”的网络攻击者“黑进” PHP 软件包集中式存储库 Packagist 中 ,获取了四个不太活跃账户的访问权限,劫持十四个软件包。据悉,这些软件包累计安装已超数亿次。1683354732_6455f46c99b0c186684d5.png!small?1683354732606

有意思的是,包“劫持”事件发生后,这名网络攻击者联系了 Bleeping Computer 并表示之所以发动此次网络攻击活动,是想通过劫持软件包,找到一份工作。

至少劫持了 14 个 Packagist 包

Packagist 是一个 PHP 软件包的集中式存储库,为开发人员提供了一个快捷的方式来分享和安装 PHP 软件包,开发人员可以将自己的 PHP 软件包上传到 Packagist,并通过 Composer 进行安装和依赖管理。

被劫持包的名称主要包括:1683354764_6455f48c53e6bcc48901f.png!small?1683354763848

值得一提的是,该名攻击者还向 Bleeping Computer 提供了材料,证明被劫持包的 Packagist 页面已经修改成了指向自己的(伪造的)链接,取代了此前指向合法 GitHub 存储库的链接。

例如,下面截图中 acmepp 包 Packagist 页面的 GitHub 链接,已经从 GitHub.com/acmehp/acmephp 改为研究人员的 repo。1683354792_6455f4a85d6f32a3f205e.png!small?1683354792124

acmepp 劫持软件包列表页面(Bleeping Computer)

Packagist 的发布过程与 npm 或 PyPI 等开源 repos 的发布过程略有不同,与直接将二进制文件或软件版本上传到 Packagist.org 相反,开发人员只需创建一个 Packagistorg 帐户,并提交一个链接到特定包的GitHub 回购,Packagist 的爬虫随后访问所提供的 repo,并聚合所有数据以显示在该包的 Packagist 页面上。

当开发人员使用“install”或“update”命令运行 Composer 时, Composer 实例首先在本地查找包的存在,如果找不到,则默认在 Packagist 上搜索此包,并检索为该包列出的 GitHub URL。之后,从该包的 Packagist 页面上列出的 GitHub 回购中下载该包的内容。也就是说,Packagist 直接从服务器托管和分发软件版本,这种方式与 npm 或 PyPI 的工作方式形成了鲜明对比。

通过修改每个包的 Packagist 页面,网络攻击者有效地劫持了 Composer 环境中使用的安装工作流。开发人员现在可以从 neskafe3v1 的 GitHub 回购中获取包的内容,而不是从项目的存储库中获取。

网络攻击者简单地将 composer.json 文件更改为类似于应用程序清单的文件,在这些包中读取”由neskafe3v1……Иõураборунапозиции应用安全、渗透测试人员、网络安全专家提供。“等内容。

更改了 composer.json 文件以演示黑客攻击:1683354817_6455f4c1b4be3e30cdd31.png!small?1683354817905

网络攻击者通过分叉原始项目存储库,修改 composer.json 中 的“description”字段,并将更改提交到自身的分叉存储库中,但没有将更改合并回原始存储库。(这样做需要额外的访问权限,并且可能会引起维护人员的仔细检查)。
当 Bleeping Computer 要求网络攻击者分享劫持包裹使用的确切技术时,没有获得答案,反而收到了”我正在找工作,在被某家公司聘用后会披露一份报告,没有获得取工作之前,没有什么可谈的。”一段话。


文章来源: https://www.freebuf.com/news/365695.html
如有侵权请联系:admin#unsafe.sh