需要云计算吗? 即刻开始体验

从 Akamai 的视角审视 Polyfill 攻击

Gal Meiri

寫於

Gal Meiri

July 02, 2024

Gal Meiri

寫於

Gal Meiri

Gal Meiri 是一名高级安全研究员,在客户端威胁与浏览器功能领域拥有丰富的研究经验。Gal 领导着 Akamai 的 Page Integrity Manager 威胁研究团队。作为研究员,Gal 研究 Web 数据窃取工具与 Magecart 攻击中涉及到的各种客户端威胁。过去,Gal 专门研究客户端用户和设备指纹识别及爬虫程序检测。

polyfill.io 供应链攻击暴露出现代 Web 应用程序开发中固有的严重安全漏洞。
polyfill.io 供应链攻击暴露出现代 Web 应用程序开发中固有的严重安全漏洞。

编辑和评论补充:Tricia Howard

polyfill.io 供应链攻击:概述

最近,安全社区对涉及 polyfill.io 的重大 供应链攻击 发出了警告。polyfill.io 是一个为 Web 应用程序提供 polyfills(一段 JavaScript 代码,允许在原生不支持现代功能的旧式浏览器中实现这些功能)的服务。根据详细报告,此次攻击影响了超过 10 万个网站,它通过滥用备受信任且被广泛使用的 polyfill.io 服务来传播恶意代码。

在此次攻击中,一名位于中国的恶意攻击者在数月前获取了一个热门 polyfill 开源项目,并通过将恶意脚本注入分布式 polyfill 感染了 polyfill JavaScript 代码。 该攻击主要以移动设备为目标,对会话进行选择性采样,以保持隐匿并加大了检测难度。攻击者随后使用该恶意代码进行重定向攻击,将用户导向诈骗网站。

开发者将这些遭入侵的 polyfill 集成到其网站时,就无意中将恶意代码引入了其应用程序。在这篇博文中,我们将具体讨论这次攻击(以及供应链攻击),以及我们从 Akamai Client-Side Protection & Compliance 的视角观察到的独家数据。

什么是供应链攻击?

供应链攻击以企业供应链中的漏洞为目标。就在线 Web 应用程序而言,现在网站会加载数十项第三方资源,用以实现一些常规网站功能。这些资源受到网站所有者信任,通常拥有页面的完整访问权限,包括文档对象模型 (DOM)、Cookie 和最终用户输入的敏感信息。

监控和跟踪这些资源极具挑战性,因为它们数量庞大、频繁更改,并且缺乏客户端监测能力。攻击者可能利用这种信任,使用这些第三方服务来入侵 Web 应用程序。这类攻击通常涉及将恶意代码注入合法的第三方库或服务,然后被开发者无意中分发给最终用户。

Akamai 安全情报组进行的研究表明电商网站中使用的 JavaScript 有 50% 来自第三方来源。我们观察到,客户的支付页面上平均包含来自数十个第三方供应商的代码,而这些页面现在需要遵循 最新 PCI DSS v4.0 要求 6.4.3 和 11.6.1

Akamai 视角下的 polyfill 攻击

polyfill 攻击以源自 cdn.polyfill.io的 JavaScript 代码的形式通过目标网站交付。该攻击同时使用服务器端和客户端采样。在服务器端,它检查请求标头(例如 user-agent),以便仅针对具有特定条件的移动设备。对于其他设备,polyfill 服务器会为现代浏览器提供原始 polyfill 代码或空响应。

该采样过程不限于服务器端。在执行过程中,该代码还会在客户端使用其自己的 JavaScript 验证设备类型。此外,它还会根据页面推荐者和本地设备时间选择目标。当恶意 JavaScript 执行其攻击时,它会与网址为 googie-anaiytics[.]com 的服务器交流。

我们成功监控了恶意 JavaScript 在网页上的执行,包括其与服务器的沟通。 检测到可疑活动时,将为受影响的客户触发提醒。处理任何威胁的关键都在于敏捷性:快速响应能力对于限制攻击影响范围至关重要。

我们定义了 Client-Side Protection & Compliance 脚本行为策略来阻止这种通信,使得攻击无法通过这一途径继续进行。图 1 是这方面的真实示例:激活策略后,立即实时阻止了这一攻击途径。

脚本行为策略 图 1:Akamai Client-Side Protection & Compliance 脚本行为策略

攻击前后的 polyfill.io 使用趋势

我们观察到超过 40 家客户拥有从 polyfill.io 加载的资源。其中一些客户每天受影响的页面都会高达数万个(图 2)。这一数字包括直接使用来自 polyfill.io 的 JavaScript 资源的客户、将此代码加入其执行的第三方,以及源自最终用户浏览器扩展程序的资源。

我们观察到超过 40 家客户拥有从 polyfill.io 加载的资源。其中一些客户每天受影响的页面都会高达数万个(图 2)。 图 2:从 polyfill.io 加载的资源的信标趋势

我们的数据来自 Akamai Client-Side Protection & Compliance,该产品会主动实时监控和分析 JavaScript 执行,从而缩短补救时间,无论是第一方还是第三方皆是如此。

Akamai 正与其客户密切合作,有效应对和减轻该攻击的影响,包括通过有关该攻击的安全公告通知相关客户。这种主动式方法已使源自受影响域名的资源大幅减少,从而减少 Akamai 客户暴露在风险下的情况。

需要有关抵御供应链攻击方面的帮助?

Akamai Client-Side Protection & Compliance 旨在保护客户免受源自第一方和第三方来源的客户端攻击,包括供应链攻击。

该解决方案会监控 Web 应用程序中的 JavaScript 资源,实时分析其执行情况,并确定其行为是否可疑。它还会检测脚本行为异常,为 Web 应用程序中加载和执行的每项 JavaScript 资源提供详细分析。

另外,Client-Side Protection & Compliance 还提供实时抵御功能,只需数秒,即可阻止恶意脚本执行。由于无需更改 Web 应用程序的代码来阻止可疑行为,因而安全团队可以显著改善攻击响应时间。该解决方案能够检测 polyfill.io 攻击和受影响的用户会话,然后阻止攻击执行。

在浏览器内检测和抵御威胁的优势

此次攻击的目标只有少量会话,特别是通过不常见的 user-agent 浏览器筛选的会话,因此只对网站进行综合扫描的解决方案可能无法检测到该攻击流。Akamai Client-Side Protection & Compliance 的主要优势之一在于, 它在浏览器内运行并可检测每个用户会话;即使在这些目标会话启动后,它也检测到了恶意 JavaScript 执行。更重要的是,一旦激活保护策略,它便在页面上阻止了攻击的执行(图 3)。

Akamai Client-Side Protection & Compliance 图 3:Akamai Client-Side Protection & Compliance 为客户网站中检测到的每项 JavaScript 资源提供详细分析

结论

polyfill.io 供应链攻击暴露出现代 Web 应用程序开发中固有的严重安全漏洞。即使配备了所有适当的保护措施,依赖第三方资源仍可能在无意间引入安全风险。此次事件涉及超过 10 万个网站,这充分反映了受信任的服务是多么容易遭到入侵并分发恶意代码,进而降低用户安全性和信任感。

监控这类威胁,为我们的客户乃至整个安全界作出贡献,是 Akamai Security Intelligence Group 的宗旨。我们将继续观察威胁生态系统,并对观察结果进行后续报道。如需获取实时更新, 请关注我们的微信公众号,或查看我们的 安全研究 页面。



Gal Meiri

寫於

Gal Meiri

July 02, 2024

Gal Meiri

寫於

Gal Meiri

Gal Meiri 是一名高级安全研究员,在客户端威胁与浏览器功能领域拥有丰富的研究经验。Gal 领导着 Akamai 的 Page Integrity Manager 威胁研究团队。作为研究员,Gal 研究 Web 数据窃取工具与 Magecart 攻击中涉及到的各种客户端威胁。过去,Gal 专门研究客户端用户和设备指纹识别及爬虫程序检测。