供应链攻击:缓解和保护

在软件开发中, 供应链攻击 通常是通过将恶意代码插入代码依赖项或第三方服务集成中来执行的。与典型的网络攻击不同,供应链攻击为攻击者提供了两个主要优势。

首先,单个供应链攻击可以一次针对多个公司(因为多个公司使用相同的代码依赖项和第三方脚本);因此,攻击的潜在投资回报率更高。其次,与普通的网络攻击不同,周边防御无法检测到供应链攻击,因为它们通常是由对默认受信任的系统组件的更改引发的。然后,经过批准的交付机制(例如软件更新)可以在不引起网络维护者任何怀疑的情况下进行供应链攻击。

在成功攻击知名企业之后,2018年,供应链攻击已成为头条新闻。

玛卡特

玛卡特 是广泛用于几组网络犯罪分子的称号,早在2015年,这些犯罪分子就已在电子商务网站上注入了数字信用卡窃听器。这些信用卡撇取者在2018年成功窃取了至少420,000张信用卡的详细信息 –这只是代表 票务主管英国航空 攻击。

麦格卡特对英国航空的攻击是一种高度选择性的攻击。该组织清楚地将公司确定为目标,以针对英国航空公司付款页面的方式设置了恶意代码。攻击是通过Modernizr JavaScript库的修改版进行的,该库已从行李领取信息页面作为脚本加载。

受感染的脚本包含恶意代码,该恶意代码主动侦听页面上发生的事件,并在提交信用卡详细信息时触发操作(事件劫持)。因此,Magecart能够拦截用户在结帐页面中输入的信用卡数据,并将其发送到攻击者的服务器。总共,至少38万英国航空公司的客户受到了这次袭击的影响。

尽管英国航空公司的攻击是迄今为止Magecart规模最大的攻击之一,但该组织的作案手法更频繁地发起了更广泛的攻击,能够感染尽可能多的网站。这种攻击依赖于利用直接加载到电子商务网站中的第三方。当第三方脚本遭到破坏时,恶意代码会立即开始提供给受影响的网站的最终用户。通过查看恶意代码本身,对过去的Magecart攻击进行的分析突出了这种广泛的性质:

if ((new RegExp('onepage|checkout|onestep',
'gi')).test(window.location)) {
skimmer.send();
}

通过使用正则表达式检查,撇取器将在URL路径与付款页面的常用关键字(一页,结帐,一步)匹配的网页中激活。除此之外,它还获取插入任何输入字段(而不是特定字段)中的信息。因此,该攻击更有可能针对许多处理信用卡付款的网站。

通过这种方法实现了2018年6月的Ticketmaster数据泄露。 玛卡特破坏了两个第三方脚本(SociaPlus和Inbenta),并且在它感染的众多网站中,这导致对Ticketmaster的大规模攻击,超过2个月未发现,影响了40,000位客户。根据RiskIQ的说法,这种特定的Magecart方法可能已经损害了100,000多个网站。

减轻

供应链攻击和弹性缓解 报告 由MITER Corporation确定的几种高级网络弹性技术可缓解网络攻击。首先,至关重要的是,安全专业人员和管理人员必须了解缓解供应链攻击需要采用深度安全方法。必须意识到,仅在外围防御方面投入资源是不合适的方法。

人们经常会误认为SAST(静态应用程序安全测试)是预防 供应链攻击。但是,这些攻击利用了弱点并将恶意逻辑引入到现有代码中。由于这不是漏洞,因此SAST仍未检测到它。考虑到供应链攻击经常通过客户端上显示的更改进行操作,因此对客户端安全进行投资已成为该过程的关键步骤。

JavaScript保护和网页监控

应用程序屏蔽解决方案提供了一种整体的客户端方法来满足MITRE概述的缓解措施。如果考虑网络攻击的生命周期,我们会注意到攻击过程始于“侦查”阶段,在此阶段,攻击者会收集尽可能多的有关可能利用的漏洞的信息。

通过使用混淆处理之类的JavaScript保护技术,逆向工程尝试的成本被提高到不经济的程度。这是一种常规做法,甚至是针对基于JavaScript的应用程序都应启用的OWASP建议,无论它们是在移动设备,Web浏览器上还是在服务器端上运行。除此之外,还应添加其他保护层,例如将应用程序的代码锁定到特定的环境(域,操作系统,浏览器和时间段),并为代码提供自防御功能,从而有效地阻止了攻击者在服务器中调试代码。侦察尝试。

此代码保护解决方案应以多态方式应用。这意味着受保护代码的每个新版本都将与以前的版本完全不同,这与MITRE关于欺骗性,多样性和不可预测性的建议是一致的。超越侦察阶段,还可以使用适当的解决方案来减轻运行时的供应链攻击。例如,一种客户端威胁监视解决方案,可独立于其交付机制来检测运行时发生的对DOM的任何篡改。

在当前的应用程序安全性全景图中,没有可靠的方法来确保不会将恶意代码或标记注入公司的应用程序中。接下来的最好的事情是获得有关注射的可见性并能够实时做出反应。过去的供应链攻击有一个共同的指标可衡量其严重程度:从攻击到发现的时间很长。如果您可以实时检测到供应链攻击,则可以使公司立即做出反应,并在严重损害发生之前缓解它们。

限制第三方脚本和代码依赖性

建议公司完全停止使用第三方代码的情况是可行的,即使这将意味着有效地防止供应链攻击。就目前而言,下一个最佳选择是限制这种使用。

软件开发团队必须在代码依赖性方面考虑“精益”方法:保留对应用程序至关重要且内部无法开发和维护的那些,并丢弃那些价值不高和/或可以保留的那些内部。应用程序上加载的第三方脚本也是如此。这些对于应用程序运行和代表访问分析工具或广告等工具和服务的附加组件不是必需的。公司必须确保自己的应用程序不会宽容地集成不必要,有风险或不建议使用的脚本。必须将每个额外的代码依赖性或外部脚本视为对应用程序攻击面的大幅增加。

评估第三方供应商’ security level

归根结底,即使采用了以前建议的“精益”方法,代码依存关系和第三方脚本也将继续盛行。就目前而言,组织仍然可以控制最小化这些风险。从使用第三方脚本的角度来看,公司应在采购阶段从以下几个方面评估第三方供应商的安全级别:

  • JavaScript代码安全性 —第三方供应商应有一套解决方案,该方案可以保护JavaScript代码,从而减少储备工程和伪造代码。这与MITRE关于欺骗和充分诚信的建议相一致。
  • JavaScript代码多态 —根据上述JavaScript代码保护,供应商还应该能够保证该代码是多态的,即,每个新版本采用不同的形式。这最终有助于增加脚本的冗余性,并确保其不可预测性,这是MITER的另外两项建议。
  • 子资源完整性 —供应商应提供SRI令牌,以使采购公司能够使用SRI来确保已加载脚本的完整性。
  • 内容安全政策 —通过安装CSP,供应商通过限制他们可以发送/接收内容的外部来源来提高其自身平台的安全性。

使用子资源完整性(SRI)

在加载外部脚本的脚本元素中添加子资源完整性(SRI)属性可以提供一定程度的保护,以防止供应链攻击。通过检查文件的完整性,应用程序不会加载完整性检查与原始的受信任脚本不同的脚本。因此,不会从第三方加载恶意脚本。如果我们将其归结为源自第三方脚本的供应链攻击,则会得出结论,即从第三方脚本受到损害的那一刻起,它们就不会加载。

但是,SRI有一个很大的陷阱:应用于动态代码特别复杂。而且,正如您可能期望的那样,大多数这些第三方脚本提供程序(例如Google Analytics(分析))都在不断改进其服务,从而导致脚本本身的频繁更改。调整SRI以适应这种动态特性可能会很麻烦,而且如果未正确设置SRI,则在收到急需的更新时,它可能会阻止非常安全的第三方脚本。

多层缓解方法

本文介绍的所有缓解策略都对缓解供应链攻击大有帮助。但是,有效的缓解措施需要一种方法,该方法可以将大多数战略与SRI,外部资源限制和适当的供应商评估相结合。

通过采用这种深度安全性方法,公司可以确保获得对应用程序客户端的全面可见性和控制权。这有效地转化为能够防止用户数据泄漏及其带来的责任。

分享这个