供应链投毒后,我们的选择还剩下哪些?

前言

从早前的LNMP、OneinStack到XZ Utils,再到现在的Staticfile、BootCDN;供应链攻击总是让人猝不及防。纵观这些被攻击的项目,往往都是无处不在,经常被大家所使用,但是却并没有给提供者带来什么收入。
在突然有一天,提供者感到疲惫不堪,却又迫于用户们的压力无法关停服务的情况下,突然有新的组织/个人来帮助一起进行开发或提供服务,甚至是直接的现金收购/服务赞助;在这种情况下,接受帮助自然是首选的方案。
我认为建立有效的捐助途径不失为缓解这一问题的良方,正如AlmaLinux、RockyLinux或是cdnjs、jsdelivr一样,这些服务背后都有着可靠的企业长期提供捐助承诺,也帮助项目不断成长和有效地提供服务。

序幕

和WDCP、LNMP、OneinStack一样,这次的Staticfile、BootCDN、Polyfill事件也是背后指向同一个组织[[1]]。更进一步的研究表明这些组织似乎会恶意攻击其他提供类似服务的供应商,同时采取接触洽谈来并入攻击目标。
在这种做法下,曾经由七牛云提供服务的Staticfile.org被易手,而原先由个人提供服务、由又拍云提供接入服务的BootCSS也同样被易手。
但是这些背后的交易在事件发生前却没有人进行公开,也许是原来的提供者厌倦了日复一日付出却看不到回报的生活,也许是这些组织瞒天过海许下了虚假的承诺,让原本积累了大量用户的基础服务成为了这些组织用来攻击用户们的利刃。

探究

大多数关于这次攻击的报道集中于一个星期之前,然而事件的开始却远早于这个时间。一年以前,V2EX社区就有用户发文表示BootCSS的静态资源被投毒[2]。
通过查阅记录可以发现,BootCSS.com由王赛于2012年底批量注册,建站初期主要提供的是BootStrap介绍和交流[3,4,5]。于此同时进行批量注册的还有golaravel.com等一系列技术栈的中文网,猜测是想使用站群方式来进行项目文档的本地化,同时积累受众用户。


在2013年十一月初,BootStrap中文网上线了OpenCDN加速服务,由又拍云赞助,提供cdnjs的国内镜像[6]。

又拍云提供赞助
也许是由于用户的增长又拍云难以承担高额的成本,又或者是又拍觉得收益无法Cover成本,这段关系一直持续到了2017年年底[7]。自此之后的一段时间,提供服务的CDN便开始快速变更,从白山云到京东云,最终到了10月份由于账单压力或是其他原因出现了大面积的服务中断[8]。

在恢复后,原先的服务开始由猫云提供,自此开始BootCDN的服务出现了一些不连续的中断事件[9]。

2019年3月、10月、2020年1月陆续出现小规模的中断,尽管如此,但是在接下来的几年时间中,猫云一直为BootCDN提供加速服务,只是加速域名从cdn.bootcss.com更换为了cdn.bootcdn.net;而于此同时百度静态资源公共库则彻底停止了服务。

时间来到2022年,在1月份经历了中断后,2月份猫云或许是基于和又拍云同样的原因停止了赞助,服务商也从此开始变更为了极兔云[10]。

或许是由于极兔云本身是融合CDN服务,与上一家同样类型的赞助商服务相冲突的原因,BootCDN发布公告表示将下线cdn.bootcss.com域名。

在此期间,jsDelivr的备案被关停、解析被污染,从此基本断绝了在中国大陆的使用。

梦醒

2023年4月份,BootCDN的三个关联域名[bootcdn.net,bootcdn.cn,bootcss.com]ICP备案变更为郑州紫田网络科技有限公司,同时域名注册商也从阿里云转入腾讯云,由此揭幕了噩梦的来临[11]。


2023年6月份,开始有用户陆续发现部分静态资源内存在投毒行为[12]。

即便到现在,投毒行为仍在继续,大量用户反馈存在资源被投毒[13]。

自此BootCDN这个拥有十多年历史的国内静态资源加速服务彻底沦为了攻击者的工具,恶意代码随意被嵌入无数正在使用的网站中。而由于BootCDN历史久远,以至于许多生产环境甚至都不知道他们曾经引入了该服务。而这样的攻击相信还会继续持续下去,直到大家渐渐意识到…又或是仍旧…

巧合

无独有偶,原本由七牛云提供服务的Staticfile CDN于2023年10月进行了备案信息变更和注册局转移[14]。



两个关联域名staticfile.orgstaticfile.net被转入河南泉磐网络科技有限公司
而先前BootCDN所转入的公司名称为郑州紫田网络科技有限公司,两者同为河南省郑州市的相同类型公司。而先前Ze-Zheng Wu所发现的几个域名由统一组织控制高度符合[15]。
通过天眼查查询可知紫田科技旗下知名的一个产品为51.La站点统计平台。

通过Bing搜索不难发现在2023年集中出现大量使用该统计平台遇到劫持的案例。

通过天眼查对紫田科技股东徐征进行查询,发现其曾担任郑州帝恩爱斯网络科技有限公司法定代表人及高管,也曾担任河南云打包网络科技有限公司高管和股东。

而Staticfile域名持有公司河南图网信息技术有限公司的法人申石磊同时任职郑州帝恩爱斯网络科技有限公司法定代表人。

而Staticfile的域名注册商商中在线也与紫田科技关联的公司存在着说不清道不明的关系。

自此可以确定这两个原本由不同云厂商所赞助的静态资源加速服务已经被同一组织所控制,与上述Ze-Zheng Wu的调查一致。
看似似乎这只是一个名不见经传的小公司所为,然而这只不过是挡在云层前的迷雾。
通过查阅可以发现郑州紫田网络科技有限公司总经理李跃磊同时担任河南亿恩科技股份有限公司股东。


通过天眼查透视链可以查看到企业彼此之间的关联信息。

故事到这里似乎就结束了,然而还有收购polyfill服务的那家公司Funnull需要进行调查。通过查询域名注册和备案信息可以发现背后的公司为南京妙彩文化传播有限公司

这家公司的主营业务则是为博彩网站提供国内优化CDN服务,与上述的劫持行为不谋而合。

不过更为危险的是这家公司同时还提供诈骗、钓鱼、色站等令人发指的服务,将供应链攻击提升到了新的高度。

答案

这就像一张巨大的关系网,串联起了利益链中的彼此。每一家公司都看似运营者合规可靠的服务,背后进行的确实见不得人的勾当。

郑州紫田网络科技有限公司
商中在线科技股份有限公司
河南亿恩科技股份有限公司
南京妙彩文化传播有限公司
河南图网信息技术有限公司
河南云打包网络科技有限公司
北京新网互联软件服务有限公司
郑州帝恩爱斯网络科技有限公司

镇痛

从来没有什么疼痛能够有效缓解,更何况是这种绝症。
目前最为可靠的同类服务为字节跳动静态资源公共库
你可以将以下地址进行修改

cdn.bootcss.com
cdn.bootcdn.net/ajax/libs
cdn.staticfile.net
cdn.staticfile.org

替换为

//阿里云
lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M
//金山云
lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M
//白山云
lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M
//华为云
lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M

或者你可以尝试其他的提供商

//360奇舞团
https://lib.baomitu.com/
//zstatic.net 又拍云赞助
s4.zstatic.net/ajax/libs
//7ED
use.sevencdn.com/ajax/libs
//Web缓存网
cdnjs.webstatic.cn/ajax/libs
//晓白云
sf.akass.cn
//泽瑶网络 jsDelivr镜像
cdn.jsdmirror.com

[1]Polyfill.io, BootCDN, Bootcss, Staticfile attack traced to 1 operator
[2]Bootcss CDN 疑似被投毒 - V2EX
[3]https://web.archive.org/web/20121206014141/http://www.bootcss.com/
[4]https://ip.sb/whois/bootcss.com
[5]https://www.icpapi.com/京ICP备11008151号/
[6]https://web.archive.org/web/20131103022433/http://open.bootcss.com/
[7]https://web.archive.org/web/20171230183848/http://www.bootcdn.cn/
[8]BootCDN 应该是停止服务了 - V2EX
[9]https://web.archive.org/web/20190119210705/https://www.bootcdn.cn/
[10]https://web.archive.org/web/20220208201547/https://www.bootcdn.cn/
[11]Whois History Lookup bootcss.com
[12]Bootcss CDN 疑似被投毒 - V2EX
[13]第三方CDN被投毒 · Issue #683 · Tencent/vConsole · GitHub
[14]https://www.icpapi.com/staticfile.net/
[15]x.com

48 个赞

现在供应链投毒真的和每个人息息相关了

1 个赞

块引用
1、最高人民法院、最高人民检察院关于办理环境污染刑事案件适用法律若干问题的解释(2016)
第十条违反国家规定,针对环境质量监测系统实施下列行为,或者强令、指使、授意他人实施下列行为的,应当依照刑法第二百八十六条的规定,以破坏计算机信息系统罪论处:(一)修改参数或者监测数据的;(二)干扰采样,致使监测数据严重失真的;(三)其他破坏环境质量监测系统的行为。重点排污单位篡改、伪造自动监测数据或者干扰自动监测设施,排放化学需氧量、氨氮、二氧化硫、氮氧化物等污染物,同时构成污染环境罪和破坏计算机信息系统罪的,依照处罚较重的规定定罪处罚。从事环境监测设施维护、运营的人员实施或者参与实施篡改、伪造自动监测数据、干扰自动监测设施、破坏环境质量监测系统等行为的,应当从重处罚。
2、最高院、最高检《关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》
第4条破坏计算机信息系统功能、数据或者应用程序,具有下列情形之一的,应当认定为刑法第二百八十六条第一款和第二款规定的“后果严重”:(1)造成10台以上计算机信息系统的主要软件或者硬件不能正常运行的;(2)对20台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作的;(3)违法所得5000元以上或者造成经济损失1万元以上的;(4)造成为100台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为1万以上用户提供服务的计算机信息系统不能正常运行累计1小时以上的;(5)造成其他严重后果的。
实施前款规定行为,具有下列情形之一的,应当认定为破坏计算机信息系统“后果特别严重”:(1)数量或者数额达到前款第(1)项至第(3)项规定标准5倍以上的;(2)造成为500台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为5万以上用户提供服务的计算机信息系统不能正常运行累计1小时以上的;(3)破坏国家机关或者金融、电信、交通、教育、医疗、能源等领域提供公共服务的计算机信息系统的功能、数据或者应用程序,致使生产、生活受到严重影响或者造成恶劣社会影响的;(4)造成其他特别严重后果的。

为什么这些公司可以这么做?敢这么做?监管部门为什么不制止犯罪?

1 个赞

我们没有丝毫办法

你法我笑

1 个赞

好帖,顶。
我之前也在用 zstatic.net 加速,体验不错,速度很快,cdnjs 上一些包刚刚更新他们就能同步。美中不足的是不支持 unpkg,不过可以用 jsdmirror.com,但是个人可以随便发包大大增加滥用的风险,连 jsdelivr 都退出中国了,不知道个人维护的 jsdmirror 能维护多久。

如果需要用到 unpkg 类似的功能的,也可以用阿里云团队做的 npmmirror,大厂肯定比 jsdmirror 稳,但是需要提交白名单,不难,基本不会拒。

具体用法可以看下这两个链接:
https://zhuanlan.zhihu.com/p/633904268

作者现在还好吗

原来几天前就在L站发了

啊?:frowning_with_open_mouth:

v站被打了

1 个赞

当时没看见,现在支持一下。 :+1:

我们可以使用 SRI 来避免不良的前端公共 CDN 对我们进行投毒所造成的影响。

通俗来讲就是给你的静态资源添加一个哈希校验,如果文件被改动。就拒绝使用。(然后可以用js去替换成其他源的资源。

更多关于 SRI 的信息请参阅 MDN 的相关文章。

附:
一个在线计算 SRI 的小工具:https://www.srihash.org/

3 个赞

这些公司都注册在国内的也敢干这个事?没人管吗

可怕,前端页面被投毒太危险了

世界就是一个巨大的草台班子 :rofl:

因为这些企业就是“监管部门”的外包的外包的外包。

你以为抓人怎么抓的?就靠拿到cookie之后靠贴。

谁来举报,谁来认定?公检法不会主动去管理每一个事情。就像是《庆余年2》里的台词一样:案子需要一个苦主。

路过点个赞 :face_with_raised_eyebrow:

https://www.chinacourt.org/article/detail/2021/01/id/5712882.shtml

情节特别严重,检察机关介入,提起公诉。