PyTorch 披露恶意依赖链攻陷事件
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
PyTorch 发现了与该框架 “torchtriton” 库名称一样的恶意依赖,导致通过依赖混淆攻击向量造成攻陷活动。
PyTorch 管理员提醒在假期期间安装了PyTorch-nightly的用户,应卸载该框架和假冒的 “torchtriton”依赖。PyTorch 是一款开源的机器学习框架,在计算机视觉和自然语言处理等方面均获得了商业和数学成功。
PyTorch 团队提醒称,在2022年12月25日至12月30日期间,安装了PyTorch-nightly的用户应确保其系统未遭攻陷。发出此次警告是因为在假期期间于Python的官方第三方软件包PyPI注册表上出现了“torchtriton”依赖。PyTorch 团队指出,“请立即卸载它和torchtriton,并使用2022年12月30日之后发布的最新nightly二进制。”
PyPI 上的该恶意 “torchtriton”依赖和在PyTorch-nightly仓库上发布的官方库名称一样。但,当提取Python生态系统中的依赖时,PyPI一般会按照优先顺序导致恶意包而非PyTorch的合法包被拉取。
PyTorch 团队披露称,“由于PyPI 索引会采取优先级,该恶意包而非官方仓库中的包被安装。这种设计使得有人可以注册与第三方索引中名称一样的包,而pip会默认安装恶意版本。”
在本文成稿时,该恶意 “torchtriton”依赖在上周的下载量超过2300次。这种供应链攻击被称为“依赖混淆”。PyTorch 称,PyTorch稳定版程序包并不受该问题影响。
恶意 “torchtriton” 不仅调查用户系统中的基本指纹信息(如IP地址、用户名和当前工作目录),它还会窃取敏感数据:
获取系统信息
从 /etc/resolv.conf 中获取名称服务器
从gethostname() 中获取主机名
从getlogin()中获取当前用户名
从getcwd()中获取当前工作目录名称
环境变量
读取如下文件
/etc/hosts
/etc/passwd
$HOME/*中的前1000份文件
$HOME/.gitconfig
$HOME/.ssh/*
随后,它使用 wheezy.io DNS服务器通过加密的DNS查询将所有数据,包括文件内容等,上传到h4ck.cfd应。
PyTorch 解释称,在伪造的 “torchtriton” 中包含的恶意 “triton”二进制仅在用户在build中导入 “triton” 包时才会执行。这就要求具有直接的代码,而并非PyTorch的默认行为。
H4ck.cfd域名上的通知表示,整个操作是道德研究,但分析却得出相反结论。通知提到,该二进制不仅收集“元数据”,而且还窃取之前提到的机密信息如SSH密钥、gitconfig、hosts和passwd文件,以及HOME目录中的前1000个文件内容。
VirusTotal 检测该恶意二进制时并无任何收获,然而,和意图和行为可疑的多份研究程序包和PoC不同,“torchtriton”使用已知的反VM技术逃逸检测。更重要的是,该恶意payload是混淆的而且以二进制格式完全包含。另外,该样本读取.bash_history或命令列表和用户输入,而这又是恶意软件的另外一个特征。
该事件将不会是黑客被抓住提取机密数据时声称是合法研究一部分的首个案例。2022年年中,非常热门的Python和PHP库 “ctx” 和“PHPass”就被劫持且被修改,用户窃取AWS密钥。研究人员事后声称是道德研究。
H4ck.cfd的公开记录显示,该域名是在12月21日在Namecheap上注册的,仅仅几天后就发生了该攻陷事件。该域名所有人声称,PyPI上的torchtriton包是他自己发布的,且并非恶意行为。他指出,之所以发送更多的元数据是因为在调查类型混淆问题时,在很多情况下无法通过主机名、用户名和CWD来识别受害者,不过他表示事后看这是一个错误的决定,自己应当更加谨慎。他对自己的行为致歉,并表示在12月29日将该漏洞告知Facebook,并通过HackerOne平台告知其它企业。
PyTorch 团队已将 “torchtriton”依赖更名为 “pytorch-triton” 并在PyPI上保留相关虚假页面以阻止类似攻击。该组织还寻求获得PyPI上现有 “torchtriton”的所有权,以化解当前的攻击活动。
要卸载恶意依赖链,用户应运行如下命令:
$ pip3 uninstall -y torch torchvision torchaudio torchtriton
$ pip3 cache purge
运行如下命令将查看是否存在恶意二进制并告知用户是否受影响:
python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton');
affected=any(x.name == 'triton' for x in (pathlib.Path(s.submodule_search_locations[0]
if s is not None else '/' ) / 'runtime').glob('*'));
print('You are {}affected'.format('' if affected else 'not '))"
该 “triton” ELF二进制的SHA256哈希是:
2385b29489cd9e35f92c072780f903ae2e517ed422eae67246ae50a5cc738a0e
速修复!这个严重的 Apache Struts RCE 漏洞补丁不完整
Apache Cassandra 开源数据库软件修复高危RCE漏洞
Apache Log4j任意代码执行漏洞安全风险通告第三次更新
PHP包管理器Composer组件 Packagist中存在漏洞,可导致软件供应链攻击
美国政府发布关于“通过软件安全开发实践增强软件供应链安全”的备忘录(全文)
OpenSSF发布4份开源软件安全指南,涉及使用、开发、漏洞报告和包管理等环节
美国政府发布联邦机构软件安全法规要求,进一步提振IT供应链安全
Apache开源项目 Xalan-J 整数截断可导致任意代码执行
Linux和谷歌联合推出安全开源奖励计划,最高奖励1万美元或更多
开源软件 LibreOffice 修复多个与宏、密码等相关的漏洞
Juniper Networks修复200多个第三方组件漏洞
PyPI 仓库中的恶意Python包将被盗AWS密钥发送至不安全的站点
开源项目 Parse Server 出现严重漏洞,影响苹果 Game Center
奇安信开源软件供应链安全技术应用方案获2022数博会“新技术”奖
热门PyPI 包 “ctx” 和 PHP库 “phpass” 长时间未更新遭劫持,用于窃取AWS密钥
趁机买走热门包唯一维护人员的邮件域名,我差点发动npm 软件供应链攻击
和GitHub 打官司?热门包 SheetJS出走npmjs.com转向自有CDN
不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环
NPM流行包再起波澜:维护人员对俄罗斯用户发特定消息,谁来保证开源可信?
200多个恶意NPM程序包针对Azure 开发人员,发动供应链攻击
NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击
热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Pwn2Own大赛回顾:利用开源服务中的严重漏洞,攻陷西部数据My Cloud PR4100
热门开源后端软件Parse Server中存在严重的 RCE ,CVSS评分10分
原文链接:
https://www.bleepingcomputer.com/news/security/pytorch-discloses-malicious-dependency-chain-compromise-over-holidays/
题图:Pixels License
转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。