斯科特 停止!表明身份 ·菲塞尔
2020 年 8 月 12 日
dreamstime_s_190250414
Source Defense 安全平台部署在多个网站上,可实时阻止 Formjacking 攻击并收集数据,供我们的团队识别风险趋势。最近,我们发现一些第三方供应商使用了一种危险的捷径,它造成了不必要的安全风险,而且这种风险每天都在增加。事实上,我们发现它已经被用来入侵至少17,000 个网站!
在本文中,我将解释该快捷方式的细节,为什么它会产生这样的安全风险,以及如何通过几个简单的步骤以最小的成本来防止它。
但首先,让我们从头开始。
什么是 Formjacking?
表单劫 台湾数据 持(又称 Magecart 攻击)是指网络犯罪分子注入恶意 JavaScript 代码来入侵网站,接管网站表单页面的功能并收集敏感用户信息。这些 JavaScript 窃取器旨在窃取可在网站结帐页面上捕获的表单中的 PCI 和 PII 信息。
这些浏览器通常通过外部 JavaScript 服务(例如营销、分析、优化和网站用来增强用户体验、增加用户互动和网站货币化的其他外部工具)引入用户的网络会话。
这种(不太新的)攻击媒介给安全团队带来了新的挑战,因为它不受目前使用的任何现有对策的保护,因为这种攻击发生在每个用户的浏览器上,并没有试图破坏网站的网络服务器。
由于所有传统的安全对策都集中在保护网站的服务器上,因此这成为网站上最受欢迎的媒介之一。黑客组织越来越流行的 Formjacking 的第二个原因是,一旦你设法用 JavaScript skimmer 感染一个外部服务提供商,你就有效地感染了他们的所有客户和用户。
这意味着一次成功的黑客攻击可以危及数百甚至数千个网站。
打击“表单劫持”
随着 Formjacking 越 个性化的内容和体验 来越流行,安全公司开始更加重视它,如今解决这个问题的方法不止一种,最常用的三种方法是:
内容安全策略 (CSP) – 是现代浏览器用来增强文档(或网页)安全性的 HTTP 响应标头的名称。Content-Security-Policy 标头允许您使用白名单方法控制资源的来源,例如 – JavaScript、CSS 或浏览器上的几乎所有内容
JavaScript 代理——是一种可以在浏览器中使用的方法,允许覆盖某些 JS 原型;例如,您可以覆盖input.get.value原型,并根据字段中的实际值决定是否允许它
实时 JavaScript 沙盒——是一种将外部资源与虚拟页面中的页面隔离开来的方法,以实时元素反映服务正常运行所必需的元素,并删除任何可能被视为 PII 或 PCI 的内容
了解你的伙伴(和敌人)
无论您决定采用哪种方法或如何实现它,他们所依赖的一件事就是需要识别页面上的脚本供应商和操作。
从缓解选项的名称和描述中可以看出,它们都是(在一定程度上)基于策略的。从设置将页面上的资源来源列入白名单的策略到尽可能精细地控制操作,了解谁做了什么至关重要;事实上,这是通过阻止合法操作来避免破坏页面的唯一方法。
在 Web 会话中,识别服务的最佳(也可能是唯一)方法是通过它从中加载的域,这就是为什么几乎任何供应商都会有一个或多个可识别的域来加载资源。
以谷歌为例,任何谷歌服务都会通过以下两种方法之一加载:
包含服务名称 中國新聞 的域名(如 Google Analytics 或 Google Tag Manager)
用于称为 Google API 的资源(如 Google 地图)的通用 Google 域名
从技术上讲,这很容易做到;Google 已经购买了这些域名并将它们映射到他们使用的 CDN 服务,这个过程只需几分钟,您不需要成为 Google 就可以做到这一点,而且毫不奇怪,今天大多数供应商都在使用它。
现在,考虑一下 CSP。如果您使用任何这些 Google 服务,则需要将这些域列入白名单,以便加载脚本、加载 CSS、创建 iframe 等。如果您未能将其中一个域列入白名单,则可能会面临各种风险,从破坏特定服务到破坏页面(取决于服务);在任何基于政策的平台上都是如此。
回到起点
现在我们对 FormJacking 有了更多的了解,也知道了我们今天如何应对它,让我们回到最初的故事情节。在审查一家大型商业网站上发现的日志和新脚本时,我们发现一项服务使用通用托管服务将其资源拉到页面上。