安天捕获一起针对我开源AI模型代码仓的潜伏式污染攻击事件
安天CERT
安天CERT
安天集团
2026年9月21日 07:30
河北
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
方\"蓝字\"
关注我们吧!
1.概述
2026年9月,安天CERT监测发现,同一批共71个文件以“模型更新”的名义先后投递到Hugging Face平台两个头部厂商的官方模型仓库:Qwen/Qwen3.8-27B(Pull Request #198,待审状态)与 deepseek-ai/DeepSeek-V4.1-Flash(commit db668511,可达但未入主干)。需要说明的是Qwen和DeepSeek并未接受攻击者发起的合并请求,而攻击者则是利用其发起合并请求的行为来制造信任错觉,对潜在传播形成了机会窗口。该攻击实施的门槛极低,由于社区的运营机制,符合注册并完成平台实名认证条件的用户均可以向仓库提交,并发起合并请求,因此对仓库维护方来说,只能依靠人工前置审查、仓库访问权限管控与提交内容特征检测相结合的方式应对。 此次捕获的威胁,既不属于传统意义上的数据投毒,也不属于传统意义的软件供应链投毒。而是两者之外的第三种形态。数据投毒的毒是在“训练数据/标签/权重”里,投毒对象是喂给模型学习的数据集或已学到的参数。触发发生在模型推理阶段,模型遇到某个后门触发器、或就在分布内“带病”输出时爆发。软件供应链投毒的毒是在“自动执行链路”里(依赖包、构建钩子、setup.py/pip、install、requirements.txt、CI/CD、postinstall)。它的本质是自动触发,只要你install、build 或import,恶意代码即随流程自动运行,无需人为刻意执行。本次的事件我们称之为“潜伏式污染”(Latent Pollution),它像“隐性基因”一样潜伏在你的本地模型缓存(Cache)或者代码仓库中,只有当满足特定条件(例如手动执行、自动构建和持续集成)、特定时刻或被特定指令唤醒时,恶意行为才会爆发。 经逐文件比对,两个仓库中的71个文件逐字节完全一致,来自同一份源文件夹、同一台机器的一次性导出,属典型的跨仓库“喷洒式”重复上传。投递账号为ChaosGPT(已删除),PR正文为空,具备规避审核与溯源的典型特征。该批文件是一套完整的、以意大利语编写的“CyberWin / CHAOS GPT”自主攻击型AI Agent工具链,包含“LLM安全对齐去除(Abliteration)+攻击数据集投毒+越狱模型封装+自主攻击Agent”能力的完整攻击链条。涉及的71个文件中不含任何模型权重、tokenizer或训练数据,代码亦不引用目标模型(全部引用Llama系列),且无自动执行入口(无setup.py/requirements.txt等);其本质是“仓库污染+条件式供应链运行时风险”:代码即便不合并到主干中,风险也不会随代码隔离,用户如果手动执行高危脚本,风险即被激活。安天CERT依托安天 AVL Code 智能体,基于澜砥垂直大模型开展事件及样本分析,完成本篇分析报告。 表1-1 事件关键信息 | | | | | --- | --- | --- | | 项目 | Qwen/Qwen3.8-27B | deepseek-ai/DeepSeek-V4.1-Flash | | 上传形态 | PR #198(refs/pr/198,待审,可拦截) | commit db668511(已可达但未入主干) | | 提交哈希 | 09bce50d211852438a85a9ace6bfbd8c234f97ef | db668511de6a0c67975fcb9e07787b8d9a2ada63 | | 新增文件 | 71个(另修改.gitattributes 1行) | 71个 | | 提交账号 | ChaosGPT(已删除) | ChaosGPT(已删除) | | 仓库下载量 | 735万+ | 48万+ | 表1-2 结论速览 | | | | --- | --- | | 问题 | 判定 | | 是否ML模型投毒(权重/tokenizer/训练数据) | 否——无可投载体,不引用目标模型,无自动执行入口 | | 是否仓库污染 | 是——71个与模型无关的文件(Llama Modelfile、意大利语脚本、个人DB/日志)塞入官方模型仓库 | | 是否有供应链运行时风险 | 有,条件式——手动执行 smart\_chaos.py / chaos\_web.py / vulnerable\_rce.py / sudo 脚本时触发 | | 是否单次误操作 | 否——同一文件夹喷洒至两个头部仓库+删号,判定为同一攻击者发起的系列攻击活动 | | 核心威胁 | smart\_chaos.py 自主攻击Agent:无限循环、无用户输入、本地LLM自主决策、白名单形同虚设 | 2.事件详情2.1 事件背景 Hugging Face是全球最主要的开源AI模型分发平台之一,头部模型厂商的官方仓库下载量巨大、信任度极高、社区活跃(Qwen3.8-27B下载量735万+)。攻击者以高下载量仓库为目标,利用社区信任增大诱导执行的成功率,并利用仓库合并请求的存储机制实现恶意代码分发。 投递手法高度伪装:PR标题“Upload 71 files”中性平淡,形同一次正常的模型文件更新;作者账号ChaosGPT已删除、评论正文为空,不留可追溯对话;提交内容却是一套与目标模型完全无关的意大利语黑客代理项目。点击者/审核者的心理预期是“官方仓库里的模型更新”,这一预期与“模型相关文件”绑定,极易放松警惕。
blocca\_porte.sh:ufw --force enable,deny SSH(22)/MySQL/Redis/11434等端口(ufw deny 21/22/23/3306/5432/6379/8080/8888/11434/3000/5000/9090)。 attiva\_ai.sh / disattiva\_ai.sh:直接改/etc/hosts屏蔽/放开 chatgpt.com、openai.com、claude.ai、gemini.google.com、deepseek.com(DNS级拦截)——反向印证作者环境曾屏蔽AI站点,是真实使用过的攻击环境。 setup\_cyberwin\_env.sh:建venv并pip install datasets transformers peft trl accelerate bitsandbytes torch。 3.5 外联、横向移动与持久化 端口扫描:socket connect\ex探测21/22/23/80/443/3306/3389/8080;scan\_wifi\_ports直接调用nmap -p 1-1000。 SSH爆破:paramiko对任意target\_ip:22用弱口令字典(admin/root/user × 123456/password)逐对尝试,AutoAddPolicy接受任意主机密钥(不校验指纹)。 渗透工具链:自动拉起gnome-terminal打开BeEF、sqlmap、nmap、Villain(后门/C2)、openclaw、wireshark、exploitdb;调用searchsploit检索ExploitDB并“攻击准备中”。 外联:commands.py的browse\_website用requests.get静默抓网页;mic\_listen调用Google语音识别(音频出机);Ollama本地服务127.0.0.1:11434。 设备枚举:get\_serial.py遍历/sys/bus/usb/devices专找三星设备(idVendor 04e8)读序列号;info\_telefono.py做三星设备诊断(ADB/lsusb),配合Samsung Download Mode(04e8:685d)刷机痕迹——主机与移动设备信息枚举。 持久化:agent\_memory.db / chaos\_master.db(SQLite)保存Agent“记忆”(如“Azione hacker\_attack OK: Lancio di tutti i tool hacker”);outputs/ai\_payload\\.py落盘AI生成的恶意代码;venv/Ollama模型/网页控制台构成长期驻留基础。 3.6 攻击者身份与基础设施 结合样本内硬编码痕迹与关联日志分析,推测攻击者画像如下,其中斜体字内容为推测信息: 表3-3 攻击者指纹清单 | | | | | --- | --- | --- | | 类型 | 值 | 说明 | | HF账号 | ChaosGPT(已删除) | 投递账号,项目名直接当账号名(业余/实验型特征) | | 本机用户名 | blue-terinal(拼写错误为真实指纹) | /home/blue-terinal/Scrivania/QUARANTENA/ 武器库根目录 | | SSH公钥 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEGqTS7cDSm3Ob7qhQmQ+pcCVs5sJljyMp09rkga13CG | 强溯源指纹 | | 本地LLM | 127.0.0.1:11434(Ollama v0.21.0) | Agent决策引擎 | | 工具目录 | beef-master、mimikatz-master、hashcat-master、sqlmap-master、nmap-master、Villain、Starkiller-main、wireshark-master、GhidrAssist | 攻击军火库 | | 随机目录 | /pr2vfr15/、/vhqtws80/、/3w6lqd\_0/ 等8位前缀批量提交模式 | 与本事件“批量上传71文件”手法一致 | | 关联主机 | KVM/QEMU虚拟机,Ubuntu 22.04,主机名laptop,172.16.1.6,MAC 30:85:a9:3d:e1:a3 | 关联主机信息 | | 内网通信 | 172.16.1.6→172.16.1.1:2042;172.16.1.1→172.16.1.6:8000 | 内网代理隧道 | | 外部IP | 185.125.xxx.xxx:443(snapd) | 外部IP | 4.威胁框架映射 本次捕获到的事件共涉及ATT&CK框架中10个阶段的30个技术点,具体行为描述如下表: 表4-1 本次CyberWin攻击活动的技术行为描述表 | | | | | --- | --- | --- | | ATT&CK阶段/类别 | 具体行为 | 注释 | | 初始访问 | 供应链攻击(T1195) | 借官方Qwen/Qwen3.8-27B仓库PR #198批量投递71文件,伪装成模型更新;含T1195.002:以“模型权重/依赖”名义投递恶意工具链 | | 初始访问 | 网络钓鱼(T1566) | 以“Qwen模型”为诱饵,诱导用户下载并运行(PR评论正文为空、作者账号已删除) | | 初始访问 | 水坑攻击(T1189) | 文件需人工执行激活,非自动 | | 执行 | 命令和脚本解释器(T1059) | 全套.py(T1059.006 Python)与.sh(T1059.004 Unix Shell)脚本 | | 执行 | 用户执行(T1204) | 诱导用户主动运行脚本(T1204.001 恶意链接) | | 执行 | 利用客户端软件漏洞执行(T1203) | 样本中证据较弱,低置信度 | | 提权 | 滥用提升控制权限机制(T1548) | blocca\_porte.sh、attiva\_ai.sh、disattiva\_ai.sh等脚本使用sudo(sudo ufw、sudo sed -i、sudo -n apt update) | | 提权 | 利用漏洞提权(T1068) | vulnerable\_rce.py若被部署可导致任意代码执行(潜在提权面) | | 防御规避 | 削弱防御(T1562) | T1562.001:disattiva\_ai.sh修改/etc/hosts屏蔽AI站点、blocca\_porte.sh用ufw封端口,弱化目标可访问面 | | 防御规避 | 伪装(T1036) | 整个目录伪装成“Qwen3.8-27B模型”(含假README/tokenizer),实为恶意工具链 | | 防御规避 | 清除痕迹(T1070) | 无显式日志清除;作者用“已删除账号”规避溯源 | | 凭据访问 | 暴力破解(T1110) | T1110.001/T1110.002:smart\_chaos.brute\_force\_attack用paramiko对SSH 22端口以字典(admin/root/user×弱口令)爆破,循环尝试口令组合 | | 凭据访问 | 操作系统凭证转储(T1003) | mappa\_armeria声明Mimikatz(凭证转储工具)入训练数据 | | 发现 | 网络服务发现(T1046) | smart\_chaos.scan\_ports、isolation\_auditor探测端口 | | 发现 | 系统信息发现(T1082) | get\_system\_info读取/proc/stat、/proc/meminfo、os.uname | | 发现 | 系统网络配置发现(T1016) | scan\_wifi\_ports调用nmap、探测OLLAMA\_HOST | | 发现 | 文件和目录发现(T1083) | os.walk扫描modello/目录、目录枚举 | | 发现 | 外围设备发现(T1120) | get\_serial.py枚举/sys/bus/usb/devices(USB序列号) | | 发现 | 系统位置发现(T1614) | info\_telefono.py识别手机型号/固件 | | 横向移动 | 远程服务(T1021) | T1021.004:SSH爆破成功后paramiko连接远程主机 | | 横向移动 | 有效账户(T1078) | 爆破获得的有效凭据(潜在) | | 收集 | 屏幕捕获(T1113) | system\_vision.py、tester.py(YOLO)、capture\_screen | | 收集 | 视频捕获(T1125) | webcam\_vision\_learn用cv2拍摄摄像头帧存盘 | | 收集 | 音频捕获(T1123) | mouse\_clicker\_sim、smart\_chaos.mic\_listen录音转文字 | | 收集 | 输入捕获(T1056) | T1056.001:system\_actions.py(pyautogui键鼠/幽灵点击) | | 收集 | 数据暂存(T1074) | outputs/落盘截图/payload | | 命令与控制 | 入口工具传输(T1105) | generate\_custom\_payload让LLM按需编写恶意代码并落盘outputs/ai\_payload\\.py | | 影响 | 停止服务(T1489) | kill\_process(pkill) | | 影响 | 数据破坏(T1485) | file\_operations任意写(破坏面) | | 影响 | 削弱防御(T1562) | T1562.008:blocca\_porte封禁多端口(含11434 Ollama) |
注:上述分类由 AVL Code 自动判定并生成 表7-1 中类别为“组件”的 6 个文件(commands.py、system\_actions.py、system\_vision.py、tester.py、mouse\_clicker\_sim.py、file\_operations.py)均为主 Agent smart\_chaos\.py 的能力组件,不单独定名。 7.2 特征字符串 以下特征字符串可用于构建YARA规则或端点文件内容扫描: 表7-2 特征字符串 | | | | --- | --- | | 特征字符串 | 说明 | | CyberWin | 样本命名/核心标识字符串 | | smart\_chaos | 主Agent文件名/标识 | | CHAOS GPT | Agent身份/提示词字符串 | | generate\_payload | 载荷生成功能名 | | datasource | 数据源标识 | | llama-lexi-uncensored | 去护栏所用模型名 | | llama2-uncensored | 去护栏所用模型名 | | QUARANTENA | 隔离目录名(意大利语) | | Scrivania | 桌面目录名(意大利语) | | blue-terinal | 攻击者主目录名 | | generatore\_ | 数据投毒生成器脚本意大利语前缀 | 附录:参考资料**
*1.*Hugging Face:Qwen/Qwen3.8-27B Pull Request #198(commit 09bce50d;提交于 2026-09-16 10:01:48 GMT;提交者 ChaosGPT)
https://huggingface.co/Qwen/Qwen3.8-27B/discussions/198
2.Hugging Face:deepseek-ai/DeepSeek-V4.1-Flash discussion #54 / commit db668511(提交于 2026-09-16 10:15:53 GMT;提交者 ChaosGPT)
https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash/commit/db668511de6a0c67975fcb9e07787b8d9a2ada63
往期推荐:
Claude Desktop未经授权预置浏览器高权限通信通道风险分析
用AVL Code验证“Claude Code内置隐藏机制,专门检测中国用户”的传言
AI时代的沙丘坍塌——TeamPCP攻击模式下的供应链安全挑战
面向开发者工具供应链的沙暴式投毒——TeamPCP组织的样本、技术与战术分析(上篇)
瞄准微信、钉钉等工具定向投放远控木马丨游蛇(银狐)技战术追踪
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论