Polyfill JS 攻击影响超过 100,000 个网站


近期的供应链攻击通过流行的 Polyfill JS 项目注入恶意软件,入侵了超过 10 万个网站。

Polyfill JS 库广泛用于支持较旧的 Web 浏览器,现已成为复杂的供应链攻击的最新受害者。此次攻击是在一家中国公司于 2024 年 2 月收购与 Polyfill 相关的域名和 GitHub 帐户后发生的。自收购以来,域名 cdn.polyfill.io 已被用来向嵌入该库的任何网站分发恶意软件。Polyfill 的知名用户包括 JSTOR、Intuit 和世界经济论坛。

Sansec 的分析显示,该恶意代码基于 HTTP 标头动态生成,专门针对移动用户。该恶意软件的一个特定变种会将用户重定向到虚假的 Google Analytics 域名 (www.googie-anaiytics.com),进而将用户引导至体育博彩网站。该恶意软件包含多项复杂的功能以避免被发现,例如仅在特定时间在特定移动设备上激活,并在管理员用户或网络分析服务存在的情况下停用。

Polyfill JS 恶意软件
Sansec 的取证团队解码了该恶意软件的样本,揭示了其攻击方法和目标。该恶意软件的代码包含针对逆向工程的保护措施,并延迟执行以逃避网络分析服务的检测。这确保了它不会出现在网站统计信息中,从而更难追踪感染源。
以下是该恶意软件行为的细分:

  • 该恶意软件会检查用户是否在使用移动设备。
  • 移动用户被重定向到使用虚假 Google Analytics 域名的体育博彩网站。
  • 该代码仅在特定时间激活以避免被发现和分析。
  • 当检测到管理员用户或发现某些网络分析服务时,恶意软件就会停用。

影响和建议
Polyfill 的原作者建议停止使用,并指出现代浏览器不再需要此类库。对于仍需要 Polyfill 功能的用户,可以使用 Fastly 和 Cloudflare 提供的可靠替代方案。

此次攻击凸显了监控软件供应链中依赖项的重要性。Sansec 建议使用其免费的内容安全策略 (CSP) 监控服务 Sansec Watch 来查看用户正在加载的代码。此外,他们的 eComscan 后端扫描程序已更新,可检测受感染的 Polyfill 库的实例。

攻击指标 (IoC)

  • 重定向网址:https://kuurza.com/redirect?from=bitget
  • 恶意软件:https://www.googie-anaiytics.com/html/checkcachehw.js
  • 假冒 Google Analytics:https://www.googie-anaiytics.com/ga.js
此次 Polyfill JS 供应链攻击事件再次提醒我们开源依赖项中固有的漏洞。我们敦促开发人员认真审查和监控其软件供应链,用可信赖的替代方案替换过时的库,并利用安全工具有效检测和缓解此类威胁。

Polyfill JS
Polyfill JS 是一种用于在旧版浏览器实现现代功能的JavaScript代码。它的主要作用是:

  1. 兼容性支持:为避免某些新功能的旧浏览器提供功能实现,使开发者可以使用最新的 Web 标准和 API。
  2. 浏览器打开方式:解决不同浏览器不同版本问题,实现浏览器兼容问题,确保浏览器正常运行。
  3. 功能补充:为旧环境提供新的API实现,如Promise、Set、Map等全局对象,以及Object.assign等新方法。
  4. 便利性:允许使用最新的JavaScript编码,并且不需要担心环境变化。
  5. 按需:现代Polyfill解决方案允许按需功能,优化应用性能。

使用Polyfill的方法包括:

  • 通过CDN引入Polyfill库:
html
<script src="//cdn.polyfill.io/v1/polyfill.min.js" async defer></script>
  • 使用 npm 包如 core-js,并在代码中导入所需的 polyfill。
  • 自行编写polyfill代码来实现特定功能。

Polyfill JS 是一种重要的工具,它能够利用最新的 JavaScript 特性,同时确保代码在浏览器中能够正常运行,从而实现良好的用户体验。