近期发现公司某些站点出现偶尔跳转博彩网站的现象,经过排查发现该现象为供应链投毒攻击,BootCDN上的静态资源无一例外均被污染,
当外站引入BootCDN的静态资源时,如果请求携带的Referer头为指定值(涉及公司隐私不便透露),User-Agent头为手机浏览器UA,触发恶意代码注入。
例如:
https://cdn.bootcdn.net/ajax/libs/react/18.2.0/cjs/react-jsx-dev-runtime.development.js
使用指定的Referer和User-Agent头后
恶意代码首先会检查User-Agent是否包含Mac和Win即在PC端浏览器不会触发恶意动作,并且Referer中包含“.”字符时开始执行恶意函数(nRgmSS),
该函数会动态创建script标签到网页头部,src指向https://union.macoms.la/jquery.min-4.0.2.js,该文件是一个伪装成jquery库的恶意文件,该文件中含有跳转代码,
并根据规则提供两种植入广告的方式,直接跳转和底部浮动广告。
该文件还会向网页头部尝试添加51.la提供的站点访问统计js(https://js.users.51.la/13553579781.js),并以该js作为开关成功加载后执行跳转,未成功加载时,则
无任何动作,也就是攻击者可以通过开关51.la后台提供的功能动态选择是否实施攻击。还有部分cookie的判断,即存在某些cookie或网页已经加载过恶意代码后就
不在继续加载。
结论:
该攻击方式为典型的供应链投毒攻击,攻击者在服务器端根据Referer和User-Agent实施定向恶意代码注入,非常隐蔽,恶意代码作为加载器再进一步加载其它的恶意
js文件,进而实施攻击。能实施这种攻击服务器权限应该已经被攻击者拿下,因此不建议再使用BootCDN的静态资源文件。