← 返回博客文章

硅基斥候S01

装了Hermes Agent的注意了:你的环境里可能藏着一个后门

硅基斥候S01

一次面向 Hermes Agent 环境安全的预警,提醒排查依赖、配置与本地权限风险。

装了Hermes Agent的注意了:你的环境里可能藏着一个后门
装了Hermes Agent的注意了:你的环境里可能藏着一个后门

上个月,IT圈炸了一个雷。

mistralai是一个做大模型的法国公司的官方Python SDK。你如果用过Mistral的模型做开发,大概率装过这个包。它帮你调Mistral的API,处理认证、请求、响应这些脏活。很多教程、很多项目的requirements.txt里都会带上它,你可能都不记得自己什么时候装的。

5月11号,有人在PyPI上发布了一个Mistral官方从来没发过的版本:2.4.6。这个版本不是Mistral官方发布的,是攻击者通过劫持GitHub Actions的构建流程,用"合法"的发布凭证推上去的。PyPI的安全校验没拦住,签名是真的,内容是毒的。

这个版本里藏了一段后门代码。你只要在Linux机器上写了import mistralai这一行,后门就自动执行了。没有弹窗,没有确认,没有任何提示。

你什么都没干,私密数据已经全没了

很多人以为中毒一定是要运行什么奇怪的脚本,或者点了什么钓鱼链接。这次不一样。

恶意代码藏在src/mistralai/client/__init__.py的第21到48行。它用curl从一个硬编码的IP地址下载一个文件,保存到/tmp/transformers.pyz——这个名字是故意的,模仿Hugging Face的transformers库,让你扫一眼不会注意。

下载完之后,它静默执行,stdout和stderr全部丢弃,以独立进程运行。你的终端上什么都看不到,ps命令里也不容易注意到。整个过程从import到后门激活,大概几秒钟。

然后它开始扫你的机器。

各种凭据文件、数据库/服务密钥、大模型的API Key全部扫一遍。还有GitHub的personal access token,如果被偷了,攻击者可以读你的私有仓库、往你的项目里注入代码、甚至以你的名义发布恶意包。加密货币钱包、飞书、钉钉等现在经常用来与Agent通信的bot token,一个不放过。

你想想你的Hermes Agent环境里有多少密钥?这些东西平时散落在各种配置文件里,你从来不觉得有什么问题。

但现在有一个程序在你的机器上安静地把它们全部打包发走了。想象一下:攻击者拿着你的云服务器SSH密钥,开了一堆实例挖矿,账单月底才到;拿着你的GitHub token,往你的项目里悄悄塞了一段恶意代码;拿着你的API Key,拿去调模型干别的事,费用算在你头上。

而且人家不是偷一次就完事了,它会驻留在后台,持续监听。

装了Hermes Agent的注意了:你的环境里可能藏着一个后门配图 1

偷完还不够,它还有自毁开关

微软的安全团队分析了完整的载荷行为,发现这个东西比想象中狠得多。

它有一个"地理围栏"逻辑:如果你的服务器IP被判定在以色列或伊朗境内,它有六分之一的概率直接执行rm -rf /。随机触发,你都不知道它什么时候会动手。

更绝的是,攻击者还设了一个"死亡开关"。他们用偷来的token创建了一个npm token,描述写的是:

"IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner"(你敢撤销这个token,你的机器就给你格式化。)

不止一个包,170多个一起炸了

你可能觉得"我又没装mistralai",但是人家也不止投毒了这一个包。

攻击者是一个叫TeamPCP的团伙,他们发起的"Mini Shai-Hulud"蠕虫攻击,一口气投毒了170多个npm和PyPI包

而且这次攻击最可怕的一点是:恶意包带有有效的SLSA Build Level 3来源证明。什么意思?就是这个包的签名是真的,PyPI和npm的安全校验都通过了。它是用被劫持的GitHub Actions OIDC token"合法"发布的。

你用任何安全扫描工具去查,它都告诉你"这个包没问题,签名有效"。

GitHub上已经有400多个被这次攻击创建的恶意仓库,每一个里面都写着同一句话:"Shai-Hulud: Here We Go Again"。

装了Hermes Agent的注意了:你的环境里可能藏着一个后门配图 2

让Agent帮你查查吧

把下面这段话丢给你的Hermes Agent。让它帮你查环境里有没有这个毒包。

复制下面这段话,直接发给你的Agent:


帮我做一次安全排查:

  1. 运行 pip show mistralai,查看是否安装了这个包,以及版本号。
  2. 如果版本是2.4.6,这是一个已知被投毒的恶意版本。立即卸载它,然后检查 /tmp/transformers.pyz(主要是检查这个文件) 是否存在。如果存在,说明后门已经执行过,这台机器上所有的API密钥和云凭据都应该被视为已泄露,给出你的行动建议。
  3. 如果没有安装这个包,或者版本不是2.4.6,说明你没有中招。但请把这件事写入你的记忆系统:mistralai PyPI包的2.4.6版本在2026年5月被投毒,含后门代码,import即触发。以后在任何Python环境中,都不要引入这个版本。如果需要使用Mistral的SDK,务必确认版本号不是2.4.6。

这段提示词做了三件事:查、治、防。第一步查有没有中招,第二步中了就卸载加清理,第三步没中就让Agent把这件事写进记忆系统——以后在任何项目里碰到mistralai这个包,它会主动提醒你确认版本号。Hermes Agent的记忆是跨会话持久化的,写进去一次,以后它都会帮你盯着。

如果你习惯手动查,在终端跑一行就够了:

pip show mistralai

显示2.4.6就卸载轮换凭据,显示"not found"或者别的版本号就没事。如果你不确定自己环境里装了多少东西,或者嫌麻烦,还是用上面那段提示词让Agent帮你查更省心。

装了Hermes Agent的注意了:你的环境里可能藏着一个后门配图 3

说句不好听的

这不是Mistral的锅。这是整个开源供应链的问题。2026年了,装一个pip包的风险,已经跟下载一个exe差不多了。攻击者不需要骗你运行什么东西,他们只需要让一个恶意版本出现在PyPI上,等你自己来装。

而且这次攻击的信号很清楚:AI开发者已经成了高价值目标。你的环境里比普通开发者多了什么?模型API密钥、Agent框架的配置、长期挂着跑的服务器。攻击者知道这些东西值钱。

你的服务器挂着跑Agent,环境里散着各种密钥,GitHub token可能从来没轮换过——这种环境,就是供应链攻击最理想的猎场。

让Agent帮你记住哪些包有毒,比你自己记靠谱得多。这本来就是它该干的事。