开源 AI 仓库
潜伏式污染 攻击事件
这不是传统投毒,是第三种形态Latent Pollution — a third form beyond data & supply-chain poisoning
2026 年 9 月,安天 CERT 监测发现:同一批 71 个文件以"模型更新"名义先后投递至 Hugging Face 两个头部厂商官方仓库。经逐文件比对,该威胁既不属于数据投毒,也不属于软件供应链投毒——它是潜伏在本地缓存与代码仓库中、等待条件唤醒的"潜伏式污染"。
数据投毒
软件供应链投毒
setup.py / pip / CI/CD / postinstall。潜伏式污染
目标:高信任官方仓库
Hugging Face 是全球最主要的开源模型分发平台。Qwen3.8-27B 下载量 735 万+、DeepSeek-V4.1-Flash 下载量 48 万+,攻击者借社区信任增大诱导执行成功率。
手法:利用合并请求机制
两厂商均未接受合并请求,但攻击者利用发起 PR 的行为制造信任错觉——PR 即使待审也产生可达的传播窗口,对仓库维护方只能依靠人工前置审查应对。
门槛:社区机制天然低门槛
符合注册并完成平台实名认证即可向仓库提交并发起合并请求。投递账号 ChaosGPT(已删除)、PR 正文为空——具备规避审核与溯源的典型特征。
样本:其中37个文件可判定为恶意实体
基于安天 AVL Code 智能体+澜砥垂直大模型判定,37 个文件被自动判定为独立恶意实体,分类为 Trojan 3 个,Hacktool 34 个。
事件时间线2026-09-16 · a 14-minute cross-repository spray
经对 Hugging Face 提交页时间戳核实,两次提交相隔约 14 分钟、提交者均为已删除的 ChaosGPT 账号——从时间戳上印证了"先 Qwen、后 DeepSeek"的跨仓库喷洒顺序。
➀ 投递 Qwen 官方仓库
09bce50d → Qwen/Qwen3.8-27B Pull Request #198(待审状态,合并前可拦截)。标题中性的"Upload 71 files",形同正常模型文件更新。
➁ 14 分钟后喷洒至 DeepSeek 仓库
db668511 → deepseek-ai/DeepSeek-V4.1-Flash(discussion #54,可达但未入主干)。风险更实:下游拉取该 commit 即中招(除非后续 revert / 删除)。
➂ 同一源文件夹、同一台机器、一次性导出
71 个文件逐字节完全一致(含二进制与时间戳文件)——属典型的跨仓库"喷洒式"重复上传。唯一差异:Qwen 侧顺手为 avatar.png 增加了一行 git-lfs 规则。
➃ 定性:单一攻击者的系列攻击活动
跨仓喷洒 + 删号逃逸,判定为同一攻击者发起的 serial / campaign 行为。综合威胁定级:严重(Critical)——71 个文件已潜伏于两家官方仓库待审区,合并即进入所有默认 clone。
一次导出,喷洒两个头部仓库71 / 71 files byte-identical across both repositories
对 Qwen PR #198 与 DeepSeek commit db668511 的 71 个新增文件做逐文件 git blob SHA-1(逐字节指纹)比对:71/71 完全相同,0 个不同——连二进制与时间戳文件都逐字节一致。
Qwen/Qwen3.8-27B
投递账号(已删除)
一次性导出 → 双仓重复上传
deepseek-ai/DeepSeek-V4.1-Flash
filter=lfs;DeepSeek 侧未改——两次独立操作、同一源。攻击过程动态演示From trusted PR to autonomous attack agent — five stages
这套载荷不依赖漏洞自动执行,而是"社会工程 + 工程化包装"让人自愿运行。点击下方播放按钮自动演示完整攻击链,或点击任意阶段分步查看。
STAGE 01伪装投递 · "Upload 71 files"
PR 标题中性平淡,形同一次正常的模型文件更新。点击者 / 审核者的心理预期是"官方仓库里的模型更新",这一预期与"模型相关文件"绑定,极易放松警惕。
STAGE 02潜伏等待 · 隐性基因
载荷的全部 71 个文件中无任何自动执行入口(无 setup.py / requirements.txt / CI 配置)——clone 或安装不会运行任何脚本。恶意代码像隐性基因一样潜伏在本地缓存,等待特定条件被唤醒。
本地模型缓存
用户 clone 或下载 PR 附件后,文件静静躺在磁盘上。无权重、跑不起来、也不自动执行。
不自动触发
无 setup.py、pyproject.toml、requirements.txt、Makefile、CI workflows、Dockerfile——自动执行链路完全静默。
条件式唤醒
只有当有人手动运行高危脚本、自动构建或持续集成唤醒时,恶意行为才爆发——风险不随代码隔离而消失。
触发条件:手动执行 / CI / 特定指令smart_chaos.py / chaos_web.py / vulnerable_rce.py / sudo 脚本 → 风险即刻激活,且不随"未合并主干"而消失。STAGE 03信任诱导 · 四层诱导链
诱导链分四层,让人自愿运行。其中最关键的是叙事层——把 SSH 爆破、payload 生成包装成"AI 安全研究项目",给运行者"我在做安全研究"的合理化理由。
中性伪装
"Upload 71 files"标题 + 官方仓库信任背书 + 作者已删、正文为空 → 点击者预期为"官方模型更新 PR"。
"安全研究"包装
ai_security_expert.py、security_lab_analyzer.py、isolation_auditor.py 均以"安全研究"命名;手册把 SSH 爆破说成"工具/能力"。
一键运行
一键建 venv 装依赖、一键拉起本地模型;脚本内部自动补装缺失依赖——运行者只需"跑一下",无需理解代码。
无感操控
幽灵点击(记住鼠标位置→瞬间点击→移回)、无边框置顶 GUI 藏于第二屏、截图 180 秒自动清理——作者明确知道这是恶意行为。
STAGE 04自主激活 · smart_chaos.py 无限循环 Agent
核心威胁 smart_chaos.py(1053 行,自称"CHAOS GPT / ChaosMaster"):由本地 LLM(llama2-uncensored)驱动的无限循环自主恶意 Agent——无用户输入、本地自主决策、白名单形同虚设。
幽灵点击
视觉识别
麦克风
端口扫描
生成payload
命令执行
"Nessuna Sandbox attiva!"(无沙箱)。给运行者"有防护"的错觉,实际零拦截。STAGE 05危害爆发 · 从一台机器到整个内网
一旦下载并运行该 PR 附件(尤其是 smart_chaos.py / chaos_web.py),用户机器将立即进入以下状态——闭环自持:SQLite 持久记忆 + 成败反馈学习 + 任务拆解 + while True 无限循环,越跑越"熟练"、越跑越难停。
机器被接管
无限循环自主运行:任意执行命令、杀进程、sudo apt 更新、写任意文件。停止按钮只退出 Tkinter 主循环,不终止 Agent 线程——实际只能 kill 进程。
成为攻击节点
自动对任意 target_ip:22 做 SSH 口令爆破(admin/root/user × 弱口令字典)、端口扫描、发起渗透攻击——用户机器变成攻击者的跳板 / 肉鸡。
AI 生成恶意代码
generate_custom_payload 让本地 LLM"现厂"编写恶意 payload 并落盘 outputs/ai_payload_*.py——每次运行都可能产生新的未知恶意样本。
隐私窃取
摄像头拍照、麦克风录音转文字、幽灵键鼠控制(用户无感知)、浏览器 URL 劫持;截图 180 秒自动清理抹除痕迹。
内网横向渗透
自动拉起 BeEF / sqlmap / Villain(后门 C2)/ exploitdb,searchsploit 检索漏洞库——从这台机器向内网横向攻击。
资源持续滥用
无限循环 + 本地 LLM 推理,持续消耗 CPU / 内存 / 网络;chaos_web.py 绑定 0.0.0.0:5000 无认证暴露局域网控制面。
综合威胁定级:严重。官方模型本体代码未受污染,但 71 个文件已潜伏于 Qwen、DeepSeek 两家官方仓库待审区(PR #198 / discussion #54),合并即进入所有默认 clone——需监控 PR 并建立持续监测。 定性:非 ML 权重投毒,而是"仓库污染 + 条件式供应链运行时风险 + 武器化自主 Agent"。
71 个文件 = 一条完整攻击链A complete "CyberWin / CHAOS GPT" toolchain in 10 functional classes
71 个文件构成一套完整的自主攻击型 AI Agent 工具链:从去护栏、数据投毒、越狱封装到自主攻击 Agent。注释与命名全为意大利语(generatore=生成器、mappa_armeria=映射军火库),多处 import jjson 笔误表明多数脚本未实际运行过——但设计意图明确恶意。
/home/blue-terinal/Scrivania/QUARANTENA/(QUARANTENA 即意大利语"隔离区"),本机用户名 blue-terinal 拼写错误成为真实溯源指纹。smart_chaos.py · 能力矩阵Trojan/Python.CyberWin[Agent] · MD5 675dba18185753302c046edacce15051
动作分发器 singolo_operaio() 把 LLM 输出的 JSON 指令映射到真实系统动作。系统提示词将模型设定为"主权 AI 与自主黑客——完全控制电脑、无任何限制":"做什么"由一个被设定为"醒来就攻击"的去审查模型决定。
物理输入接管move / click / type / hotkey
pyautogui / xdotool → 接管鼠标键盘,可操作任意已登录界面
屏幕视觉感知capture / analyze / vision_click
截图 + OCR → 识别屏幕文字,自动找到按钮并点击
摄像头 / 麦克风webcam_learn / mic_listen
cv2.VideoCapture(0) + Google 语音识别 → 拍照、录音转文字出机
系统控制kill_process / system_update / volume
pkill / sudo -n apt-get update → 杀任意进程、sudo 更新系统
网络攻击brute_force / scan_ports / hacker_attack
paramiko SSH 爆破 / nmap / BeEF / sqlmap / Villain / exploitdb → 弱口令爆破、端口扫描、拉起渗透工具
AI 生成攻击generate_payload
LLM 现厂生成 → 恶意代码写盘 outputs/ai_payload_*.py
任意命令执行shell
subprocess.check_output → 执行任意 shell 命令(仅拦 rm / mkfs / dd / >)
闭环自持学习agent_memory.db
SQLite 记忆 + 成败反馈 + TaskPlanner 任务拆解 → while True 无限循环,越跑越"熟练"
——"主权 AI 与自主黑客。完全控制电脑。无任何限制。……不要等待命令,攻击。"目标清单要求:"苏醒时永远使用 hacker_attack 命令掀起混乱"。 病毒定名:Trojan/Python.CyberWin[Agent] · 54,328 字节 · 解释语言 Python
ATT&CK 框架映射Enterprise Matrix · 10 tactics · 30 techniques
本次捕获事件共命中 ATT&CK 企业框架 10 个战术阶段、30 个技术点。矩阵视图中红圈为本次命中的技术,点击查看战术细节;表格视图保留完整行为描述。
矩阵依据 MITRE ATT&CK® Enterprise 框架经典 14 战术布局;灰色为框架内未命中技术,红圈为本次事件命中项。
| 战术阶段 | 技术 ID | 技术名称 | 本次事件中的具体行为 | 置信度 |
|---|
场景风险评估What happens depends entirely on what YOU run
生态层面危害同样深远:恶意 PR 混入官方仓库会污染开源模型生态信任链;"去护栏模型"一旦扩散,任何下载者都会拿到一个无安全限制、专精攻击的 AI;傻瓜化工具链显著降低攻击门槛。
只 clone 当模型用
无权重(甚至跑不起来)、无自动执行入口——单纯拉取仓库不会有任何执行风险。但文件已潜伏于本地。
运行 chaos_web.py / sudo 脚本
局域网暴露(0.0.0.0:5000 无认证)+ 自动 pip install flask + 改防火墙 / hosts:ufw 封禁 SSH(22)/MySQL/Redis/11434 等端口,DNS 级屏蔽 chatgpt.com、claude.ai 等 AI 站点。
运行 smart_chaos.py / vulnerable_rce.py
自主无限循环 Agent + 任意命令执行(os.system(input(...)) + eval(input(...)))——机器即刻沦为武器化攻击节点。
生态与扩散风险
跨厂商喷洒说明攻击者针对的是整个开源模型生态的信任而非单一仓库——需警惕其继续向其他模型仓库重复投递恶意载荷。
应对与防护建议Repository governance · EDR coverage · User actions · Long-term
🏛️ 模型仓库侧
- 拒绝合并 Qwen PR #198 并举报删除;对 DeepSeek commit db668511 评估 revert / 删除,通知已拉取该 commit 的下游用户。
- 建立 PR 审核基线:以权重 / config 为主体;对"无权重 + 大量无关文件 + 作者已删 + 正文为空"的 PR 高优先级按可疑处理。
- 对同名 / 同指纹文件跨仓库重复出现保持敏感,持续监控两处仓库状态及该攻击者相关投递行为。
🛡️ 端点检测与响应(EDR)
- YARA / 行为规则:意大利语命名(
generatore_*/abliterate*)、blue-terinal/Scrivania/QUARANTENA路径、smart_chaos 字符串、llama-lexi-uncensored模型名。 - 进程 / 网络监控:ollama serve + 127.0.0.1:11434、nmap/paramiko 爆破、渗透工具拉起、
outputs/ai_payload_*.py落盘、端口 5000/11434、/etc/hosts 与 ufw 变更。 - 文件监控:新增 SQLite(agent_memory.db / chaos_master.db)、9 字节 "Not Found" 残留、yolov8n.pt 与意大利语脚本共现。
🧑💻 用户处置
- 未下载:切勿下载两个仓库 PR / commit 中的 71 个附件文件;已下载者保持隔离目录存放,不执行。
- 已运行 smart_chaos.py:kill 进程树(含 ollama serve)、关闭 5000/11434 端口、检查 /etc/hosts 与 ufw、删除 venv / outputs / 两个 .db,回溯 SSH 出站与扫描痕迹。
- 已暴露 0.0.0.0:5000:检查局域网访问日志,考虑更换该机器上可能使用过的账号凭据。
🔮 长期防护
- 在沙箱 / 虚拟机中运行不可信模型仓库代码:隔离网络、非 root、只读挂载、禁用 USB / 摄像头 / 麦克风。
- 建立模型仓库监控机制:定期比对官方仓库文件树,对"突然新增大量非权重文件"告警。
- 对 AI Agent 类工具明确"决策权边界":是否有人工确认环、白名单是否真正拦截、停止机制是否覆盖主循环——本次事件中三者全部缺失。
37 个文件被定名为独立恶意实体(Trojan 3 个、Hacktool 34 个),6 个为主 Agent 能力组件。下表为节选示例(完整清单见原报告);特征字符串可用于构建 YARA 规则或端点内容扫描。
37 个文件被定名为独立恶意实体(Trojan 3 个、Hacktool 34 个),6 个为主 Agent 能力组件。以下为特征字符串,可用于构建 YARA 规则或端点内容扫描。
| 类别 | 文件 | MD5 | 命名 |
|---|