洞见RSA 2021|备受热捧的“供应链攻击”如何防御?

一、什么是供应链攻击

供应链攻击是一种面向软件开发人员和供应商的新兴威胁。目标是通过感染合法应用分发恶意软件来访问源代码、构建过程或更新机制[1]。软件供应链可划分为开发、交付、运行三个大的环节,每个环节都可能会引入供应链安全风险从而遭受攻击,上游环节的安全问题会传递到下游环节并被放大。值得注意的是在供应链攻击中受到攻击的是上游厂商,受到威胁的则是上下游厂商。上游的代码风险问题,其实就是下游厂商需要注意的供应链问题。上游管理好软件开发过程中的风险有助于减少下游厂商面临的供应链攻击。代码风险平台能够解决的就是软件开发过程中发生的供应链攻击。

在Imperva 的博客中提及了五种典型的攻击方法[2]:

1. 利用供应商的产品进行注入(典型的如SolarWinds事件)

2. 利用第三方应用程序(如邮件/浏览器漏洞)

3. 利用开放源代码库中包含的漏洞

4. 依赖关系混淆

5. 恶意接管(担任社区项目维护者,注入恶意代码)

在以上五种攻击方法中,依赖关系混淆可以通过正确配置制品库进行阻止。利用第三方应用程序和利用开放源代码库中包含的漏洞,可以通过及时升级或者利用安全公司提供的补丁进行缓解,但是针对供应商产品注入和恶意接管方面并没有比较有效的通用方案。 

Apiiro针对供应商产品注入和恶意接管提出了使用识别编译过程注入和利用算法识别恶意接管的方式来应对这两种攻击方式。针对软件开发过程中产生的漏洞则给出基于变更的风险视图来实现安全左移,在变更发生时评判变更中包含的风险等解决方案。

二、Apiiro的解决方案

Apiiro是业内首先提出代码风险平台的企业。Apiiro代码风险平台可以帮助客户在SDLC过程的早期进行有效的风险管理,加强应用程序的治理与合规性检测,同时防止针对CI/CD的高级攻击。Apiiro会分析整个开发过程中的数据,以帮助组织识别,确定优先顺序并补救有风险的重大变更。Apiiro通过提供跨应用程序、基础架构、开发人员的知识和业务影响的风险可见性,帮助组织构建应用程序风险计划[3]。

  • 安全左移:识别变更中蕴含的风险并适时介入安全审查

针对软件设计和开发过程中的风险管理,Apiiro 使用基于时间点和风险维度的风险视图,根据提交的变化,开发人员的知识和行为,业务影响等提示用户变更中蕴含的风险[4]。

1. 建立所有产品的业务影响、是否为网络应用、代码组件、安全控制、数据模型、许可证、依赖项以及开发人员的知识、位置和行为的清单。例如:哪些产品和哪些组件(API、UI、后端、移动等)正在使用特定的库+谁对其进行了升级+何时+哪个开发人员更改了代码+他/她的知识+它在哪里部署等。

2. 确定所有代码组件的所有重大更改的历史审核跟踪。例如:在特定库中跨所有危险物料更改的历史记录进行实时过滤,以了解时间点和变更背景。

3. 仅针对关键代码组件(例如,关键业务逻辑汇款)中的风险重大变化自动触发上下文安全流程(例如,安全设计审查、安全代码审查、SAST和DAST)。

4. 针对每个提交、PR或发布,在图中的所有节点上创建统一的风险视图。这将帮助您做出明智的基于风险的决策。

5. 仅基于统一风险视图批准有风险的重大变更。

基于这种方式可以对项目种蕴含的风险有一个全局的风险视图,基于这个风险视图可以看到某个开发人员针对某个代码库的变更造成了哪些影响。并基于变更风险来批准有风险的重大变更。

同时仅针对关键代码组件中的风险重大变化自动触发上下文安全流程,有助于将安全审查力量集中在重要组件中,加快DevSecOps速度。

  • 供应链安全:利用算法识别恶意接管

针对开发人员账户被窃取或者开源软件被恶意接管,Apiiro 使用UEBA和异常检测技术,根据用户的提交内容、提交时间和频率等来检测用户的提交是否偏离了正常用户的行为。并自动对可疑提交的PR进行评论。算法触发异常警报的一些指标包括[3]:

1. 提交与提交强度有关的近期活动不符

2. 提交时间与用户的预期活动日期和时间有出入

3. 贡献者偏离了他的同行在存储库中常见的模式

4. 提交信息与分析代码之间的重大差异

5. 添加的代码与该存储库的模型预测的代码明显不同

Apiiro基于以上指标,利用机器学习和人工智能算法训练出用于检测恶意行为的模型。该检测模型基于行为和字符内容,与语言和平台无关。这是一种可用于开源软件监测或者内部开发检测的通用方式,可以用于公司内部监测开源软件的恶意托管,也可用于监测内部开发账户是否被窃取并用于提交恶意代码。

  • 供应链安全:识别编译过程注入
SolarWinds供应链攻击示意图

针对SolarWinds事件,Apiiro 给出了一种可以检测源码和二进制文件是否匹配的方法。利用来自二进制文件的标实体关系图和从源代码中学到的相同数据图执行比较算法。当存在多个不匹配的风险因素时,表明该代码已被篡改。

以.NET二进制文件为例。Apiiro平台将对可执行文件进行解析并执行以下操作[3]:

· 了解所有可能的逻辑流程和符号

· 清除所有自动生成的编译器逻辑

· 调整运行时版本之间的预期差异等

当检测到编译的结果分析到的数据图和源码中分析到的数据图存在较多不一致的时候,就可以认为在编译过程中发生了编译过程的恶意代码注入。

这种解决方案针对的是在编译时注入代码的攻击方式。在恶意代码的注入前后对文件进行分析,并检测出是否包含编译时注入的风险。对于上游厂商来说,保证自己编译过程不被注入这是一种有效的方案。

对于下游受影响的厂商来说,由于编译过程注入是发生在上游厂商,在不能获得源码的情况下如果要检查上游产品中是否包含恶意代码,只能通过二进制检查来分析其中包含的风险,虽然二进制分析针对恶意代码的漏报误报显然不如从源码和二进制同时进行分析,但二进制分析的覆盖面更广。如果是在能获取到源码的情况下,使用SCA+SAST 配合上编译过程注入的检测方案,是能够确认上游提供的产品的安全性的。所以这种方式需要上下游厂商的合作才能确认自己的上游不被这种攻击方式影响。

  • 代码风险平台如何应对供应链攻击

对于供应链安全来说,一方面是保证上游产品没有安全问题,另一方面是要保证自身产品全周期的安全问题。这就需要代码风险平台有对上游产品的检测和持续监测能力,并对自身产品Devsecops流程进行风险管控。

对于上游产品来说我们可以提供安全监测服务,针对可以获取代码或二进制文件的情况下提供安全扫描能力。同时对于恶意接管和软件/组件的公开漏洞提供安全监测服务。

对于自身产品开发周期的安全问题则需要对Devsecops 流程进行风险控制。需要我们协助软件开发组织排查Devsecops过程中每一个可能受到攻击的点,并对其进行持续的功能验证和配置核查。可以利用安全方面的知识协助软件开发组织排查Devsecops整个流程中潜藏的风险并提供一套整体上的Devsecops解决方案。这包含代码安全(SCA,SAST等)、代码库安全(恶意接管)、主机安全(SolarWinds事件是由于编译机被控制导致的)、制品库安全等。这需要代码风险平台结合Devsecops安全能力、传统安全能力结合自身安全能力来覆盖这些容易受到攻击的点。

最重要的是代码风险平台需要通过对项目中建立的全局风险视图的监测,来排查开发过程中包含的风险,实现安全左移。这需要代码风险平台将安全能力集中在一个平台且具有对数据进行综合分析的能力,对大量安全工具的不同种类的告警信息和开发过程中产生的数据进行分析,给出基于风险的统一视图。从而有效地帮助软件开发组织控制开发过程中的风险,应对供应链攻击。

  • 绿盟科技供应链安全实践

自Gartner 2017年第一次提到Devsecops概念到今年,Devsecops一直在探索落地实践之路。2021年供应链安全类产品第一次获得RSA的沙盒冠军,说明Devsecops已经从概念转化为实践,找到了发展的方向。绿盟科技经过多年积累,即将推出绿盟代码安全审计系统( SDA ),贯彻Devsecops理念思路,采用更加落地的方式来实现供应链安全中的一环。通过静态分析、成分组成分析和固件分析,在开发、测试、移交和发布阶段,全方位保证应用交付的安全。

独创性的固件分析模块,在没有源码的情况下,依然能够基于系统级别的扫描,完成漏洞与组件的分析。在成分组成分析方面除了物料清单梳理外,还能根据项目的安全生命周期进行跟踪;对于新发现的漏洞,能够快速排查受影响的项目。无论是上游供应商出现漏洞,还是影响了下游使用者,都能及时评估风险范围。

国内企业目前已逐步往Devops的开发模式进行迁移,CI/CD流程越来越完善。为了适应敏捷式的开发模式,绿盟代码安全审计系统( SDA )提供灵活的接口,采用非入侵的方式,轻松接入到企业已有的Pipeline中,不增加原有安全管理流程。

类似Apiiro的上下文风险分析,绿盟代码安全审计系统( SDA )采用针对全生命周期统一的缺陷风险评估标准,结合历史提交记录、漏洞修复方式和人工审核结果,自动评估出漏洞修复优先级,以风险最小化为前提,加速应用版本的发布。 

参考文献

[1]https://baike.baidu.com/item/供应链攻击

[2]https://www.imperva.com/blog/5-ways-your-software-supply-chain-is-out-to-get-you-part-5-hostile-takeover/

[3]blog.nsfocus.net/rsa创新沙盒盘点-apiiro-代码风险平台/

[4]https://blog.apiiro.com/top-5-tips-to-prevent-the-solarwinds-solorigate-attack

 

版权声明

本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author

Leave Comment