polyfill.js攻击事件,感觉挺敏感的

polyfill.js攻击事件,感觉挺敏感的
最新回答
っ麦↘兜兜

2020-07-30 06:09:13

polyfill.js攻击事件是一起因CDN服务被恶意篡改引发的供应链安全事件,攻击者通过修改cdn.polyfill.io上的JS文件,对引用该文件的网站实施了浏览器重定向、数据窃取和恶意代码执行等攻击。 以下是详细分析:

事件背景与核心问题
  • polyfill.js的作用:该库是一个开源前端工具,通过CDN(cdn.polyfill.io)提供服务,帮助旧版浏览器兼容现代Web功能。开发者只需引入一个JS文件即可使用,但现代浏览器更新频繁,实际需求已大幅降低。
  • 攻击触发点:CDN上的JS文件被恶意修改,导致所有引用该文件的网站成为攻击跳板。攻击行为包括:

    浏览器重定向:用户访问受影响网站时,浏览器会被强制跳转至诈骗网站。

    敏感数据窃取:攻击者通过恶意代码窃取用户登录凭证、个人信息等。

    本地恶意代码执行:在用户设备上运行恶意脚本,可能进一步控制设备或传播病毒。

事件根源:供应链污染
  • 域名与项目收购:2024年2月,cdn.polyfill.io域名及其GitHub仓库被国内公司Funnull收购。此次收购后,服务代码或配置被篡改,成为攻击入口。
  • 安全机构指控:全球知名网络安全公司Qualys公开指出,Funnull公司直接修改了polyfill.js代码,导致此次攻击事件,暗示其存在主观恶意。
  • GitHub的响应:GitHub已将该仓库标记为恶意,禁止用户继续使用或下载,以防止攻击扩散。
行业与平台的应对措施
  • Cloudflare的强制过滤:作为全球性CDN和安全服务提供商,Cloudflare对通过其代理的网站直接拦截cdn.polyfill.io的内容,默认阻止加载该恶意脚本。尽管用户可通过开关关闭此功能,但此举引发了对过度干预的争议。
  • 开发者社区的警示:事件暴露了前端供应链的脆弱性,尤其是对第三方CDN资源的过度依赖。开发者需重新评估引入外部资源的必要性。
深层问题与反思
  • 浏览器安全风险:浏览器作为终端设备与Web交互的入口,其安全机制易被绕过。此次攻击利用了用户对受信任网站的信任,通过篡改第三方脚本实施中间人攻击。
  • 供应链安全漏洞

    缺乏本地化部署:受害网站直接引用外部CDN文件,而非下载后部署到自有CDN。若采用本地化方案,即使原始CDN被攻击,网站也可通过自有CDN提供未被篡改的版本。

    依赖单一来源:过度集中依赖某个CDN服务(如polyfill.io)会增加风险。建议采用多CDN备份或开源替代方案(如core-js)。

  • 收购方的背景审查:Funnull公司的收购行为未引发足够安全审查,导致恶意代码被注入关键基础设施。未来类似交易需加强技术审计和背景调查。
开发者建议
  • 减少对外部CDN的依赖

    下载polyfill.js等库的源码,部署到自有CDN或服务器,避免直接引用第三方链接。

    使用subresource integrity(SRI)技术,通过哈希值验证CDN文件的完整性,防止篡改。

  • 升级浏览器与库版本:现代浏览器已原生支持多数Web标准,减少polyfill需求。若必须使用,优先选择维护活跃、社区信任的库。
  • 监控与应急响应:定期检查第三方库的更新日志和安全公告,建立快速响应机制,一旦发现异常立即切换资源或回滚版本。

此次事件再次敲响供应链安全的警钟,开发者需从代码引入、部署到运维的全链条加强防护,避免因第三方漏洞成为攻击目标。