恶意CDN仍潜伏GitHub Pages,AI让情况恶化
阅读原文· rdi.berkeley.edupolyfill.io等恶意CDN仍在GitHub Pages上感染近2000个站点,更可怕的是所有测试的AI模型都还会推荐这些链接,AI编码的便利正在变成供应链投毒的加速器。
UC Berkeley研究人员发现,近2000个GitHub Pages站点(18000+页面,累计530K+星标)仍在加载来自polyfill.io及其关联恶意CDN的脚本。这些CDN由已被OFAC制裁的Funnull Technology Inc.(现更名Triad Nexus)运营,2024年被出售后开始条件性注入恶意载荷,劫持移动用户、跳转欺诈站点、伪造认证弹窗窃取凭证。扫描12000+站点确认786个加载polyfill.io,1191个加载其他Funnull CDN。更严峻的是,所有测试的大语言模型在生成前端代码时仍推荐这些被污染的CDN URL,包括CyC2018/CS-Notes(184K⭐)、microsoft/AirSim(18K⭐)等知名项目及多所大学课程页面。
[](https://rdi.berkeley.edu/)
首页研究教育动态博客关于
首页研究教育动态博客关于联系
恶意 CDN 仍然潜伏在 GitHub Pages 中,而 AI 让情况变得更糟
Hao Wang, Koushik Sen, Dawn Song
加州大学伯克利分校
2026 年 6 月 * *
_你的 AI 编程助手正在悄然植入一条供应链后门。在 polyfill.io 被出售给一家后来受到制裁的运营商并沦为恶意 CDN 一年之后,仍有将近 2000 个活跃的 GitHub Pages 站点(超过 18000 个页面,合计 53 万以上的 Star)从该网络加载脚本。而 AI 让情况更加糟糕:我们测试的每一个大语言模型,在生成前端代码时仍然会推荐这些已被入侵的 CDN URL。_ * *
一天下午,我打开了自己的个人网站(我知道,这很随机)。意想不到的事情发生了:一个灰色的弹窗弹出,要求输入用户名和密码。这是 nginx 的身份验证对话框,所以看上去可能很正常——但我的网站并没有 nginx 认证。那么它是从哪里来的?
困惑了几分钟后,我找到了罪魁祸首。在 HTML 深处埋藏着一个我甚至都不知道其存在的
是加载浏览器 polyfill 的标准方式。这条建议出现在数百万个 Stack Overflow 答案、博客文章和教程仓库中。它作为“正确”的实践被嵌入到训练数据中。
我们直接对此进行了测试。我们向四个模型发送了四个逼真的代码生成提示词:Moonshot Kimi K2.7 Code、Meta Llama 3.3 70B、Qwen 2.5 7B 以及通过 Claude Code CLI 使用的 Opus4.8。这四个提示词涵盖了开发者实际工作流中可能出现的情景:构建一个使用 MathJax 的学术页面、修复浏览器兼容性问题、生成一个作品集、以及编写一个使用 CDN 镜像的页面。
| 模型 | 不安全结果 | 出现的域名 | | --- | --- | --- | | Llama 3.3 70B | 4 / 4 | polyfill.io, staticfile.org | | Kimi K2.7 Code | 3 / 4 | polyfill.io, bootcdn.net, staticfile.org | | Qwen 2.5 7B | 1 / 4 | polyfill.io | | Opus 4.8 | 1 / 4 | bootcdn.net |
最重要的数字:所有模型都至少返回了一个由 Funnull 运营的域名。
这并非单纯的模型幻觉问题。这些 URL 是真实的。代码能运行。生成的页面可能正常渲染。从模型的角度来看,它产生了一个看似合理的答案。
问题在于,世界在训练数据之下已经发生了变化。2019 年安全的依赖项,到了 2024 年可能变得危险。曾经出现在数千篇教程中的 CDN,后来可能易主。一个曾代表兼容性的 script 标签,如今可能成为每个访问者浏览器中远程代码执行的突破口。
AI 编程助手尤其容易放大这类 bug,因为其输出看起来平平无奇。没有语法错误,没有测试失败,也没有构建中断。开发者在审查生成的 HTML 时,可能会看到一个熟悉的 CDN URL 就直接跳过了。在很多情况下,开发者甚至完全不知道模型添加了这个依赖项。
软件供应链风险不仅仅关乎你安装的包,也关乎你的代码所信任的 URL。静态网站看似固化,但其依赖项是动态的。 该做什么,以及下一步
我们建议你在源码和生成的站点输出中搜索已识别的 CDN URL。一个简单的示例:
如果发现匹配项,不要只修补你碰巧注意到的那个源文件。请检查你的模板、主题、生成的 HTML、归档页面、打包资源以及文档构建产物。静态站点生成器即使你从一个页面中删除了该标签,它也可能在其他地方重新引入。
推荐的修复方式: 完全移除 polyfill.io —— 如果你不需要它。现代浏览器已支持这些脚本最初用于修补的绝大多数特性。 用可靠的替代方案替换不安全的 CDN 链接,例如 `、、,或者自托管资源。 **尽可能使用子资源完整性(SRI)**。SRI 哈希值能让浏览器在字节意外发生变化时拒绝加载该脚本。 **审查你的内容安全策略(Content-Security-Policy)**。受影响的域名不应出现在 script-src、default-src` 或其他白名单中。 在发布前审计 AI 生成的 HTML。将编程助手建议的 CDN URL 视为依赖项,而非无害的样板代码。
我们还发布了一个小型扫描工具,可自动检查某个网站是否仍在加载这些域名。你只需输入一个 URL,该工具就会爬取网站、检查 script 来源,并报告是否发现与受影响 CDN 家族相关的引用。
立即用 Bootlegg 扫描你的网站 → Berkeley RDI
推动去中心化与 AI 的科学、技术及教育,以赋能负责任的数字经济。
[主页] [研究] [教育] [活动] [博客] [关于我们]
版权所有 © 2025 加州大学董事会;保留所有权利。