V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amber0317
V2EX  ›  分享发现

Bootcss CDN 疑似被投毒

  •  2
     
  •   amber0317 · 314 天前 · 3145 次点击
    这是一个创建于 314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现象

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

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

    domains

    分析过程

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

    stack

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

    evil_jquery

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

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

    evil_code_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 。

    11 条回复    2023-06-24 16:37:46 +08:00
    GPLer
        1
    GPLer  
       314 天前 via Android
    bootcdn 之前就出过问题,他家的各种中文网 /中文文档更是搜索引擎污染源,感觉出啥幺儿子都不奇怪。
    xiaoz
        2
    xiaoz  
       314 天前
    这家已经出过几次问题了,现在已经完全不信任。
    jucelin
        3
    jucelin  
       314 天前
    会不会就是官方所为,亦或者是他们的 CDN 供应商所为
    SmiteChow
        4
    SmiteChow  
       314 天前
    这网站第一次听,自从 jsdivr 被墙,前端公共 cdn 的灯就已经灭了
    Rache1
        5
    Rache1  
       314 天前
    上个月看到有人引用 BootCDN 的 jQuery 也遇到了类似的问题
    FakerLeung
        6
    FakerLeung  
       314 天前
    没想到都 2023 年还有人在用 bootcdn ,这家公司出了好几次事故了,目前是完全不信任的级别。
    weixiangzhe
        7
    weixiangzhe  
       314 天前
    一年崩 3 次的玩意咋还有人用,直接对象存储啊
    kkocdko
        8
    kkocdko  
       314 天前
    才发现 jQuery 都出版本 4 了
    LeviMarvin
        9
    LeviMarvin  
       313 天前
    这段代码是经过混淆的,难以阅读。它定义了几个函数: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
        10
    chenjia404  
       309 天前
    目前用 jsdelivr 的最多吧,还有就是 cdnjs 。
    我一般使用这些第三方静态资源 cdn ,都会加入一个 SRI 。
    chenjia404
        11
    chenjia404  
       309 天前
    Bootcss CDN 为什么在 2023 年了,还不加入 SRI 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5875 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:20 · PVG 14:20 · LAX 23:20 · JFK 02:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.