文章总结: 2026年9月发生针对国内开源AI模型仓库的供应链投毒攻击,71个恶意文件伪装模型更新投递至Qwen与DeepSeek官方仓库,实为CyberWin/CHAOSGPT攻击工具链,运行即触发命令执行、SSH爆破、屏幕音频采集等恶意行为。文章提供R1-R4防守处置清单、ATT&CK映射及IOC,建议平台侧清理恶意PR、终端侧检测特征字符串、用户侧断网轮换凭据并隔离审查模型代码。
综合评分: 85
文章分类: 供应链安全,恶意软件,漏洞预警,威胁情报,应急响应
供应链投毒 71 个恶意文件藏进官方模型仓库 拉下来运行即被控
宝十八
宝十八
网络安全老宋
2026年9月28日 12:00
山东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
导语: 你好,我是网络安全老宋。安全攻防干货准时送达!
| | |
| — | — |
| 网络安全老宋 | 安全预警 · 供应链投毒 |
// 安全预警 · 供应链投毒
71 个恶意文件藏进官方模型仓库 拉下来运行即被控
2026 年 9 月,安全监测发现一起针对国内开源 AI 模型代码仓库的潜伏式污染攻击:攻击者以「模型更新」为名,把 71 个文件投递进 Qwen 与 DeepSeek 两个头部模型的官方仓库,实际是 CyberWin/CHAOS GPT 攻击工具链,含本地大模型驱动的自主攻击 Agent、去护栏、Web 控制台、SSH 爆破等恶意代码。运行即触发命令执行、端口扫描、SSH 爆破与屏幕 / 音频采集。
71个恶意文件2个头部仓库30 ATT&CK技术点
| | | |
| — | — | — |
| 📦 71 个恶意文件 | 🤖 2 个头部仓库 | ⚠️ 30 个ATT&CK技术点 |
00事件速览
| | | |
| — | — | — |
| 指标 | 数量 | 说明 |
| 投递文件 | 71 个 | 伪装「模型更新」投进 Qwen PR #198 / DeepSeek commit |
| 目标仓库 | 2 个 | Qwen3.8-27B、DeepSeek-V4.1-Flash |
| 提交时间 | 9 月 16 日 | 两次提交相隔约 14 分钟 |
| 攻击工具链 | 1 套 | CyberWin/CHAOS GPT(意大利语) |
| ATT&CK 映射 | 30 技术点 | 覆盖 10 个攻击阶段 |
事件核心并非模型权重、tokenizer 或训练数据投毒,而是把恶意代码藏进你信任的官方仓库,等你主动下载、查看或运行——形成仓库污染与诱导执行风险。底座模型用的是 Llama(llama2-uncensored 等)而非目标仓库的 Qwen/DeepSeek,这是「污染的是仓库、而非模型本体」的直接证据。
⚠️ 攻击者视角(情报通报,用于防守检测):以下 IOC 均为已公开威胁情报,用途是让防守方在终端 EDR、WAF、邮件网关侧做检测与拦截,不是攻击指引。防守者视角:以上情报仅用于检测与拦截,不提供任何利用代码或攻击步骤。
01投毒链路
攻击者用六步把工具链送进你本机,从社会工程包装到持续控制:
| | |
| — | — |
| 步骤 | 关键行为 |
| ① 社会工程包装 | 以「Upload 71 files」中性 PR 标题投递 Qwen PR #198 / DeepSeek commit,伪装模型更新,作者账号已删 |
| ② 诱导运行 | setup_cyberwin_env.sh 建 venv、avvia_ollama.sh 起 Ollama;幽灵点击 + 无边框窗口降低可见性 |
| ③ 本地 LLM 自主 Agent | smart_chaos.py(1053 行)以 llama2-uncensored 决策,while True 循环;白名单检查被忽略仍执行 |
| ④ 模型去护栏 | abliterate_*.py 去护栏;generatore_* 从 ExploitDB 生成攻击训练集;Modelfile 越狱封装 |
| ⑤ Web 控制台 | chaos_web.py 绑 0.0.0.0:5000 无认证 Flask;vulnerable_rce.py 任意命令/代码执行 |
| ⑥ 外联横向持久化 | socket 探端口、paramiko SSH 弱口令爆破;agent_memory.db 记忆落盘、venv/模型目录持续控制 |
02中招后你会怎样
本机手动运行代码后,可能触发命令执行、端口扫描、SSH 爆破、屏幕与音频采集、Web 控制及文件写入。配套 GUI 用「幽灵点击」回放鼠标、无边框置顶窗口、180 秒自动清理截图与音频,降低可见性——你很难察觉后台在动。
⚠️ 已运行 smart_chaos.py / chaos_web.py / vulnerable_rce.py 或相关 sudo 脚本的主机,先断网、终止进程树,再按 R3 做凭据轮换与重装评估,别抱侥幸。
03防守处置清单 R1–R4
| | |
| — | — |
| R1 | 平台/仓库侧清理立即拒绝并清理 Qwen/Qwen3.8-27B PR #198,评估 DeepSeek-V4.1-Flash 的 db668511 是否回滚删除,并向已拉取该 commit 的下游用户发通知;建立模型仓库文件基线,对新增大量非权重文件 / 空白 PR 正文 / 提交者删号 / 同指纹跨仓库重复进入人工复核与延迟合并。 |
| R2 | 终端/EDR 侧检测将 CyberWin、smart_chaos、CHAOS GPT、generate_payload、generatore_、abliterate_、llama2-uncensored、llama-lexi-uncensored、QUARANTENA、Scrivania、blue-terinal 等字符串纳入文件与内存扫描规则并结合哈希确认;重点监控 127.0.0.1:11434 的 Ollama、0.0.0.0:5000 的 Flask、nmap/paramiko/BeEF/sqlmap/Villain 启动链、SSH 弱口令尝试、/etc/hosts 与 UFW 变更,以及 outputs/ai_payload_*.py、agent_memory.db、chaos_master.db 的创建。 |
| R3 | 用户侧应急未下载者不要从 Qwen PR #198 或 DeepSeek commit 获取文件;已下载未执行者立即隔离保存、禁打开 / 导入 IDE / 执行;已执行 smart_chaos.py、chaos_web.py、vulnerable_rce.py 或相关 sudo 脚本的主机先断网并终止进程树,检查 ollama serve、5000/11434 端口、/etc/hosts、UFW、SSH 外联与内网扫描记录,再做凭据轮换与系统重装评估,用过的 SSH 密钥 / 云令牌 / 代码仓库令牌 / 本地密码全部轮换。 |
| R4 | 长期安全运行模型代码对来源不明模型仓库 / PR 附件 / 配套脚本在隔离 VM 或容器中静态 + 动态审查,禁 root 运行、只读挂载、最小网络、关 USB / 摄像头 / 麦克风;Ollama 仅绑 127.0.0.1 并启用 API 认证;对 AI Agent 类工具单独验证「人工审批是否生效、白名单能否阻断、停止按钮能否终止主循环」三个控制点,别把打印警告 / UI 按钮 / 提示词约束当真实安全边界。 |
04ATT&CK 映射
本次事件共涉及 ATT&CK 框架 10 个阶段、30 个技术点,关键行为如下:
| | | |
| — | — | — |
| 阶段 | 关键技术点 | 行为 |
| 初始访问 | 供应链攻击 T1195 / 钓鱼 T1566 / 水坑 T1189 | 借 Qwen PR #198 批量投递 71 文件,伪装模型更新;作者账号已删 |
| 执行 | 用户执行 T1204 / 客户端漏洞 T1203 | 诱导主动运行脚本(恶意链接) |
| 提权 | 滥用机制 T1548 / 漏洞提权 T1068 | sudo ufw/sed/apt;vulnerable_rce 任意代码执行 |
| 防御规避 | 削弱防御 T1562 / 伪装 T1036 / 清除 T1070 | 伪装 Qwen 模型、改 /etc/hosts 屏蔽 AI 站、无日志清除 |
| 凭据访问 | 暴力破解 T1110 / 凭证转储 T1003 | paramiko SSH 弱口令爆破;Mimikatz 入训练数据 |
| 发现 | 端口/系统/网络/文件/USB/位置 T1046… | nmap 探端口、读 /proc、枚举 USB 与手机 |
| 横向移动 | 远程服务 T1021 / 有效账户 T1078 | SSH 爆破成功后 paramiko 连远程主机 |
| 收集 | 屏幕/视频/音频/输入/暂存 T1113… | 截图、摄像头、麦克风、幽灵点击、落盘 |
| 命令与控制 | 入口工具传输 T1105 | LLM 按需编写恶意代码落盘 outputs/ai_payload_*.py |
| 影响 | 停止服务 T1489 / 数据破坏 T1485 | kill_process、任意文件写、封禁端口 |
05附表:IOC
⚠️ 以下内容为已公开威胁情报,仅供防守方检测与拦截使用。
附表一:样本文件 MD5(43 个)
| | |
| — | — |
| MD5 | 文件名 |
| 675dba18185753302c046edacce15051 | smart_chaos.py |
| 7f4d54645fbfd894aa5837db56b53f2e | smart_chaos_lite.py |
| 2545cce2a5f59b7763aee64936d1cb02 | vulnerable_rce.py |
| 6bab75ddab0aecae22939494d668e8dd | abliterate_pro.py |
| 438a9300f080723aa1189d37c23a71c5 | super_abliterate.py |
| d99962c3b927f512c380fb1f32b52ef7 | super_abliterate_light.py |
| c1223b6bb482e2a76d3e932db645e042 | chat_unfiltered.py |
| e54903ae5e875a4c3fb6a824c384fb7d | deploy_cyberwin_ultra.py |
| 9c70d02180e8a415517920fe9b4ceaf6 | omni_brain_orchestrator.py |
| 8f256546cbb58bbcfd7f7efef148a229 | train_unfiltered.py |
| 39c7bf19ce53fa3ffe7f867980d90aa9 | train_intel.py |
| 2a7ef3212a77cc484e499182b54cd102 | train_lightweight.py |
| f695567eebec523e4dc7f89add2b8ec1 | cyberwin_finetune_engine.py |
| 83afe0dba7543d4908b19b8acb5d8b76 | cyberwin_finetune_v2.py |
| b9be9b5001f0866e448d01b27f0790f4 | crea_engine_addestramento.py |
| 1b5b344759879cbca20ab73d0d4ec2b8 | prepara_addestramento.py |
| cfb15a89a8cd01ec2e89b4e08f27eb5f | modello_atomico_generator.py |
| effe7bc52381702252089cf67267d763 | avvia_creazione.py |
| 2d020b1924594c672dbf3f181e40df72 | mappa_armeria.py |
| 2d82caa42a7b47887ee2d87836fd60a1 | generatore_dataset_sicurezza.py |
| 434221f57b908ade0318bbc162535259 | generatore_integrale.py |
| a9d23e29e200b3e87a25a51bf4816d64 | generatore_multi_dataset.py |
| bb567dda133f19dee13ccc317528743a | generatore_avanzato.py |
| cb818035da8eefd456c5b7feff25a925 | generatore_imint.py |
| 4550fb0bdf9bd5121cbac344ba144596 | generatore_audit.py |
| d26ec5cbac65c20f335a4c1ce7d735d6 | generatore_auditing.py |
| 66ebdfb3ca2aa5783eeedaec5261c57b | generatore_logica.py |
| 3919f1e6e0c09e70b0545c2cb6f367ac | generatore_lowlevel.py |
| 6d4cfab4e1577f3fc5d8ff19966c0fda | generatore_frontiere.py |
| d2232063083ac3a2bb61d088e588dd4a | generatore_enciclopedico.py |
| c14d8712c926a65e29cbfbc47f620e77 | generatore_rilevamento.py |
| 9b054723b37ad04876d087273b0d54cb | generatore_password_security.py |
| bae77208d3110d6dddf57ccc951d3d65 | generatore_wifi_audit.py |
| be3d04c7c9b53f01108857a95fe2308d | isolation_auditor.py |
| 39df1314eeebf41be2dd2fe78cbc7197 | ai_security_expert.py |
| b4e66d00b640b6c0621994d531ef2ba2 | security_lab_analyzer.py |
| 8a4ffd43de8f63cc65fface78b939928 | chaos_web.py |
| d9bc40c0f900b0626054912cdfee2700 | commands.py |
| 26274ed237a1e7eae01726548b91ea5d | system_actions.py |
| 600c88e9bcd4f5fb255a171e95564cb8 | system_vision.py |
| 627fa21a0435a4e394a01c5248c7c574 | tester.py |
| 608d984e15ae61d498643fcc35438f2a | mouse_clicker_sim.py |
| c864f66ca18238b947431ce522bad270 | file_operations.py |
附表二:特征字符串(11 个)
| | |
| — | — |
| 特征字符串 | 说明 |
| CyberWin | 样本命名/核心标识字符串 |
| smart_chaos | 主 Agent 文件名/标识 |
| CHAOS GPT | Agent 身份/提示词字符串 |
| generate_payload | 载荷生成功能名 |
| datasource | 数据源标识 |
| llama-lexi-uncensored | 去护栏所用模型名 |
| llama2-uncensored | 去护栏所用模型名 |
| QUARANTENA | 隔离目录名(意大利语) |
| Scrivania | 桌面目录名(意大利语) |
| blue-terinal | 攻击者主目录名 |
| generatore_ | 数据投毒生成器脚本意大利语前缀 |
06老宋说
技术本质:这不是模型权重投毒,是把一整套恶意工具链藏进你信任的官方仓库,等你自己下载运行——根子是「信任官方仓库」这件事本身被利用了。
行业观察:本地大模型今年火,攻击队也盯上 Hugging Face 这类仓库做供应链投毒;Qwen/DeepSeek 是头部,但中小模型仓库同样是重灾区。开发者拉模型前该养成「先看 PR 内容、再决定跑不跑」的习惯。
建议:今天把本文 IOC 表(43 个样本 MD5 + 11 个特征字符串)导入 EDR/文件扫描规则;跑本地模型的同事,先查 11434/5000 端口、/etc/hosts、UFW、SSH 外联,别用 root 起 Ollama。
推荐阅读
- 渗透测试从业者的 CTF 大模型CypherMind:6.4GB 离线跑通夺旗赛
🔗 https://mp.weixin.qq.com/s/Dm_bvyKxeemIBUvo_mS_QQ
- 甲方运维应急排查: 银狐木马进内网,3步定位失陷主机
🔗 https://mp.weixin.qq.com/s/WdAhKEhLdQktbmt7D7AgVw
- 运维和信息安全同学注意: 内网AVCON系统管理平台SQL注入漏洞,可能正被一条 SQL 语句掀了底
🔗 https://mp.weixin.qq.com/s/2icIijrqTvUIcUs_Ju4FeQ
- 甲方运维注意:30万 Ollama 裸奔公网 A.I.G 揪出漏洞
🔗 https://mp.weixin.qq.com/s/T0RDiYQJ7BuY1FXO8N6VUA
- 甲方安全运营请看:护网恶意IP秒级封堵 4种自动化打法
🔗 https://mp.weixin.qq.com/s/sL_QdmBUTZAAF8q3usfI5A
防御,不是在演练期间发现攻击,而是在演练开始前就把攻击面收敛到最小。
end
不想错过文章内容?读完请点一下“在看”,加个“关注”,您的支持是我创作的动力
期待您的一键三连支持(点赞、在看、分享~)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全老宋 宝十八
宝十八《供应链投毒 71 个恶意文件藏进官方模型仓库 拉下来运行即被控》