Bootcss CDN 疑似被投毒

2023-06-20 07:37:44 +08:00
 amber0317

现象

使用手机 Chrome 访问某数码论坛时会自动跳转到奇怪的网站,而且是在帖子加载完成后才动态跳转。不稳定复现,仅在 Chrome 上偶现,Edge 无法复现,桌面浏览器无法复现。

主要涉及的两个恶意域名均注册于 5 月底:

分析过程

检查跳转网络请求的调用堆栈,发现一个名为jquery.min-4.0.2.js的可疑文件。

检查此文件,发现它并不是 jQuery ,而是一段混淆过的恶意代码,推测是用来跳转到恶意网站。可以从原链接或者Internet Archive获取:

这个 evil jQuery 是由托管在 cdn.bootcss.com 上的highlight.js引入的。当对此 highlight.js 的请求具有特定的 Referer移动端 UA时,服务器才会返回带有恶意代码的 highlight.js ,否则返回正常代码,伪装性极强。而且,这段代码执行时是否引入恶意 jQuery 的操作也具有特定条件,目前我测试时使用的链接已经无法复现。

恶意的 highlight.js 可以从这里获取到,恶意代码位于文件尾部,粗略看了一下,大概是如果浏览器不是桌面端,就在 head 部分放置一个 script 标签,应该就是引入恶意 jQuery 的方法了。下图是恶意 highlight.js 与同版本正常 highlight.js 的 diff 。

发出如下网络请求,可以获取到带有恶意代码的 highlight.js ,截至写作时依然有效:

curl 'https://cdn.bootcss.com/highlight.js/9.7.0/highlight.min.js' \
  -H 'sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"' \
  -H 'Referer: https://bbs.letitfly.me/' \
  -H 'sec-ch-ua-mobile: ?1' \
  -H 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36' \
  -H 'sec-ch-ua-platform: "Android"' \
  --compressed

总结

由于连接是 https 连接且证书正确,可以推测 Bootcss 服务器大概率已经被攻击者掌控。建议在项目中尽快换掉 Bootcss/Bootcdn 。

4909 次点击
所在节点    分享发现
12 条回复
GPLer
2023-06-20 08:15:17 +08:00
bootcdn 之前就出过问题,他家的各种中文网 /中文文档更是搜索引擎污染源,感觉出啥幺儿子都不奇怪。
xiaoz
2023-06-20 08:17:36 +08:00
这家已经出过几次问题了,现在已经完全不信任。
jucelin
2023-06-20 08:21:17 +08:00
会不会就是官方所为,亦或者是他们的 CDN 供应商所为
SmiteChow
2023-06-20 09:32:32 +08:00
这网站第一次听,自从 jsdivr 被墙,前端公共 cdn 的灯就已经灭了
Rache1
2023-06-20 09:40:37 +08:00
上个月看到有人引用 BootCDN 的 jQuery 也遇到了类似的问题
FakerLeung
2023-06-20 09:48:14 +08:00
没想到都 2023 年还有人在用 bootcdn ,这家公司出了好几次事故了,目前是完全不信任的级别。
weixiangzhe
2023-06-20 09:50:27 +08:00
一年崩 3 次的玩意咋还有人用,直接对象存储啊
kkocdko
2023-06-20 11:57:07 +08:00
才发现 jQuery 都出版本 4 了
LeviMarvin
2023-06-20 17:55:38 +08:00
这段代码是经过混淆的,难以阅读。它定义了几个函数:a0_0x55ea 、loadJS 、a0_0x1588 、isPc 、vfed_update 和 check_tiaozhuan 。它还声明并为三个变量 tsastr 、bdtjfg 和 cnzfg 设置了值。

check_tiaozhuan()函数似乎检查用户是否使用移动设备,通过检查 navigator 对象来判断。如果他们正在使用移动设备,它将根据各种条件设置_0x34f873 的值,然后使用该值调用 vfed_update(_0x5e3fa1)函数。vfed_update(_0x5e3fa1)函数从_0x5e3fa1 指定的 URL 加载 JavaScript 文件,这可能会将用户的浏览器重定向到另一个页面。
chenjia404
2023-06-24 16:25:24 +08:00
目前用 jsdelivr 的最多吧,还有就是 cdnjs 。
我一般使用这些第三方静态资源 cdn ,都会加入一个 SRI 。
chenjia404
2023-06-24 16:37:46 +08:00
Bootcss CDN 为什么在 2023 年了,还不加入 SRI 。
Francklin
146 天前
推荐使用 webcache.cn 替代 , 支持 SRI

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX