PyTorch维护者表示,建议在 2022 年 12 月 25 日至 12 月 30 日期间安装了 PyTorch 夜间构建的开发人员卸载它并清除 pip 缓存,以摆脱恶意包。新的攻击凸显了最近的一个趋势。
供应链攻击源自一个恶意依赖项。该依赖项被推送到了 PyPi,它与 PyTorch 夜间构建附带的依赖项同名。
由于 PyPI 是索引优先的,所以安装的是这个恶意包,而不是官方存储库中的版本。这种设计允许用户注册与第三方索引中存在重名的包,pip 将默认安装他们的版本。
该恶意包名为 torchtriton,包含一个二进制文件,除了窃取主机名、DNS 配置、用户名、shell 环境等系统信息外,还会将/etc/hosts
、/etc/passwords
、~/.gitconfig
、~ /.ssh /*
的内容,以及在用户主目录中找到的前 1000 个文件上传到外部服务器。不过,只有当用户显式地将triton
包导入到他们的程序中时,信息才会被泄露,这降低了此次攻击的影响。
这种被称为依赖混淆的供应链攻击方案并不新颖。在接受 InfoQ 采访时,Endor Labs 安全研究员 Henrik Plate 解释说,这种攻击“与我们在过去两年中看到的次世代攻击类型一致”,攻击者的重点是操纵维护者和用户,而不是设法利用漏洞。
在官方披露后,torchtriton 的所谓维护者在他们的网站上宣称,这个包不是恶意的。对此,Ax Sharma 首先在 Twitter 上做了报道。不过,在分析Bleeping Computer 的攻击时,Sharma 还透露,torchtriton 使用了反虚拟机技术以及混淆来逃避检测。
这也不是第一次有黑客声称他们的行为应算是伦理研究,就像他们被抓到窃取机密一样。
根据 Plate 的说法,依赖项混淆攻击可以使用私有存储库来托管内部包和镜像外部包来解决。Python 生态系统有一个这样的解决方案是devpi,但它并不简单。
通常,这样的解决方案允许对依赖项解析和包下载过程进行更多的控制。但是,它们的设置和操作需要付出不小的努力,并且只有在开发人员本地客户端配置正确时,它们才有效。
PyTorch 维护者立即采取行动,删除作为依赖项的 torchtriton,替换为pytorch-triton,并在 PyPi 上注册了一个假包,以确保这种情况不会再发生。
原文链接:
https://www.infoq.com/news/2023/01/pytorch-supply-chain-attack/
相关阅读:
评论