前不久,RSA官方宣布了最终入选创新沙盒的十强初创公司:WABBI、Satori、Abnormal Security、Apiiro、Axis Security、Cape Privacy、Deduce、Open Raven、STARATA、WIZ。
绿盟君将通过背景介绍、产品特点、点评分析等,带大家了解入围的十强厂商。今天,我们要介绍的是厂商是:Apiiro。
一. 公司介绍
Apiiro是业内首先提出代码风险平台的企业,因其提供多维应用程序风险管理与可视化工作而入选RSA Conference 2021年创新沙盒10名决赛选手之一。Apiiro的总部位于以色列的特拉维夫和美国的纽约,该公司于2020年10月完成了3500万美元融资,由顶级风险投资公司Greylock Partners和Kleiner Perkins共同投资。
图1 Apiiro公司创世人
Apiiro的两位创始人分别是Idan Plotnik和Yonatan Eldar,这两位创始人均是以色列国防部的退伍军人。CEO是Idan,他曾经创办Aorato,其主要业务是云上以及本地与混合云环境中使用机器学习来检测可疑攻击行为,该公司于2014年被微软以2亿美元收购,Idan在Aorato被收购后出任微软的工程总监。Yonatan曾任微软工程团队的负责人,负责处理微软大型工程团队产品风险检测与评估,将风险划分优先级,提供修复计划并同其他高管沟通。
二. 相关背景
安全开发生命周期(Security Development Lifecycle,SDLC)是一个帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。安全应用从安全设计开始,软件的安全问题很大一部分是由于不安全的设计而引入的,安全设计对于软件安全的重要性尤为可见[1]。
SDLC是一个帮助开发人员构建更安全的软件和解决安全合规要求、同时降低开发成本的软件开发过程。自2004年起,微软将SDLC作为全公司的强制政策,SDLC的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。SDLC是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用。
简单来说,SDLC是微软提出的从安全角度指导软件开发过程的管理模式,在传统软件开发生命周期的各个阶段增加了一些必要的安全活动,软件开发的不同阶段所执行的安全活动也不同,每个活动就算单独执行也都能对软件安全起到一定作用。当然缺少特定的安全活动也会对软件的安全性带来影响。
图2 微软SDLC安全活动简图
SDLC流程是一种专注软件开发安全保障的流程。在SDLC流程中,在不同的阶段需要使用不同的测试工具(例如,CI/CD上的SAST工具)。SAST通过扫描代码,获取数据流、控制流和函数调用关系以检测代码漏洞。但SAST仅关注漏洞,忽略了代码组件,数据,安全控制,部署位置,开发人员经验和业务影响等风险。这也是SAST的高误报的原因,业界商业级的SAST工具误报率普遍在30%以上,误报会降低工具的实用性,可能需要花费更多的时间来清除误报而不是修复漏洞。SCA(Soft Composition Analysis)在发现,管理、监控OSS许可证以及相关的安全漏洞上也存在一些问题。这些工具本质是查看相关的软件包或代码,缺少多维度视角的分析。
Apiiro的代码风险平台源于这两名创始人在微软工作中所面临的挑战:现有的安全性和合规性工具和流程大多是手动和定期的,为了便于集成控制同时也要满足风险管理要求,这些安全性的要求很多时间成了开发流程中的阻碍。
Apiiro处于DevSecOps、应用程序安全、DevOps生产力和云安全市场的交叉点。Apiiro代码风险平台在可以帮助客户在SDLC过程的早期进行有效的风险管理、加强应用程序的治理与合规性检测,同时防止针对CI/CD的高级攻击。Apiiro会分析整个开发过程中的数据,以帮助组织识别,确定优先顺序并补救有风险的重大变更。Apiiro通过提供跨应用程序,基础架构,开发人员的知识和业务影响的风险可见性,帮助组织构建应用程序风险计划[2]。
三. 代码风险平台关键技术介绍
Apiiro产品起源于软件开发过程中技术与业务上的痛点。Apiiro希望构建一个解决方案,能够弥合开发、安全与合规团队之间的差距,从而加快交付速度与上市速度。Apiiro构建了业内首个代码风险平台,该平台实现了从设计到代码再到上云的整个流程中,对于任意更改的全面风险可见。同时,该平台可全方位查看应用程序、基础架构、开发人员的知识和业务影响方面的安全和合规风险。
Apiiro的方法可以与外部安全工具集成。该公司的技术在开发人员和代码行为之间创建了统一的风险概况,将重点放在业务风险上。例如,在银行应用程序开发过程中,Apiiro不是简单地扫描银行应用程序中的漏洞,而是研究与风险相关的问题,如给定的API是否可以转账,或者正在分析的服务是否暴露在互联网上,可以在该业务上下文中添加了对开发人员行为的深入分析。
3.1 代码风险的多维度
当今,可以说随处皆是代码,从应用程序开发、个人验证信息(PII)添加、网络策略的更改,IAM(身份识别与管理系统)角色的添加到在云API网关中发布新API并配置授权访问控制都会给代码带来风险。在考虑代码风险时,当前主要倾向于考虑使用诸如SAST(Static Application Security Testing), SCA(Soft Composition Analysis), DAST(Dynamic Application Security Testing)和ISAT(Interactive Application Security Testing )等安全漏洞检测工具。从根本上讲,这些些工具会遗漏大量上下文,从而导致大量噪音和误报,这不仅阻碍了开发进度,同时也会给开发过程造成误导。
而在软件开发过程中,如果存在多个SDLC流程门控,每个流程门控都独立于其他功能运行,不同应用的安全程序完全不一样。
图3 SDLC 过程门控
在大多数情况下,通常是检测每个门控而不是查看所有开发阶段的上下文。很多漏洞的产生都是各种代码与配置的变更导致的,因此需要设计到开发再到生产的各个阶段都需要考虑。因此,仅仅针对某一个阶段从单一维度无法提供完全的视角与上下文关系。与其关注漏洞的风险,不如关注业务的实际风险,这就需要对上下文有广泛的了解。可以对不同类型的风险维度进行如下分类:
图4 多种风险维度
在代码风险分析过程中考虑多维方法的话可以通过构建不同完整的上下文信息来将SDLC工具与分析过程集中到最需要关注的点上,从而可以优化代码风险分析过程。
例如,基于对历史代码更改的分析为每个开发人员构建相关的知识库可以帮助开发人员做出更好的决策。知识库的相关特征包括他们已提交了多少代码更改,这些更改是否与安全相关的更改以及是否有任何业务影响,还可以考虑数据处理,部署位置和互联网暴露情况等。结合以上内容,可以使用上下文模型进行多维风险分析,这将帮助安全架构师和开发人员专注于最重要的更改。这种方法的好处将帮助公司中的不同利益相关者:
1、CIO和CISO将在业务的实际风险中获得高级别的上下文风险;
2、安全架构师和App安全领导者将获得一项具有可行性的工作计划,该计划需要对业务造成重大影响(HBI)的重大的源代码变更。安全工具可以集中于仅扫描那些代码更改,从而以最少的FP来实现快速切换;
3、渗透测试人员将获得与恶意代码更改相关的上下文告警,从而使他们可以开始进行增量测试;
4、开发人员针对产品中发现的安全性问题进行解决;
5、法律或规范可以更轻松准确地识别代码的合规性问题,例如开源软件许可证,版权等以及通知文件。
3.2 检测恶意代码提交
Apiiro 代码风险平台的功能之一是能够使用UEBA和异常检测技术(正在申请专利)检测并阻止代码的恶意提交,此功能模块是基于机器学习和人工智能算法进行设计的,该算法分析组织中不同实体的行为(例如,代码组件,安全控制,数据类型,贡献者的知识,组织行为,存储库,项目等)。同时该模块提取了数十种面向领域的特征(包括逻辑,上下文和时间序列特征)用以构建每个实体属性,如对历史提交代码的元数据、内容、pull请求和票证进行分析,提取了相关的数值、时序以及内容特征。该模块的另一个数据源是平台产生的历史跨库代码特征。在完成特征提取和丰富后,Apiiro代码风险平台会基于历史代码实时构建和训练自适应行为模型。
除了针对每个实体的单独模型外,Apiiro的算法还训练了更高级别的模型,这些模型用于增强检测事件的置信度,实现了较高的恶意活动检测率,同时减少对不相关异常的错误检测。
Apiiro能够根据受感染用户的异常行为来检测恶意代码提交。异常检测算法将该提交标记为可疑,因为就用户的过去活动和存储库中其他贡献者的活动而言,它偏离了该用户的正常活动。触发了异常警报的一些指标包括:
1、提交代码与用户最近提交强度不符;
2、提交代码时间与用户的预期活动日期和时间有出入;
3、贡献者偏离了他的同行在提交的模式;
4、提交代码信息与分析代码之间存在较大差异;
5、提交的代码与该存储库的模型预测的代码明显不同。
Apiiro的检测是自动实时完成的,而与语言和托管无关。一旦检测到攻击,平台就可以自动对可疑提交代码的进行评论,甚至可以在Slack中为安全运营中心触发警报。
图5 恶意代码提交检测与处理流程
误报率是当前任何异常检测系统的关键挑战之一。Apiiro过去两年中对php-src存储库的分析中,触发了4个可疑事件,其中只有一个涉及除已标记的高风险指标之外还添加了主要代码,这就是上图中描述的恶意代码提交。平台的低误报率使操作员能够专注于众多可疑事件,而不会被无尽的异常行为所淹没。
Apiiro的异常检测算法能够通过分析不同类型实体的各种活动行为来成功检测恶意提交,同时保持极低的误报率。图5演示了Apiiro的一些异常检测功能。
3.3 SolarWinds构建时代码注入攻击检测
01
SolarWinds事件介绍
2020年末,针对SolarWinds的复杂供应链攻击成为全球头条新闻。在构建过程中,攻击者将实施后门的恶意代码注入到源代码中,从而使每个SolarWinds客户都受到了严重威胁。尽管供应链攻击是一个已知的概念,但是这是首次公开发现这种复杂性和大规模攻击。
微软对该攻击进行的内部和外部调查中发现,恶意软件正在SolarWinds Orion IT管理构建环境上运行,并等待C#编译器(msbuild.exe)运行。SolarWinds Orion 是 SolarWinds 网络和计算机管理工具套件的一部分,其功能包括监视关键计算机何时停机,并及时告知用户,还有自动重启服务的功能。该软件可能会被安装在企业最关键的系统上,会在系统故障时阻止工作进程。
调查发现,最早在2020年 3 月,有人设法在SolarWinds Orion软件构建过程中做了恶意修改,包括植入一个特洛伊木马程序。因而,当用户安装SolarWinds Orion最新版本时,该木马开始在受害者的计算机上运行,从而该计算机被远程控制。受害者直接或间接地因SolarWinds Orion 软件被污染,这被称为软件“供应链攻击”。
更具体地,Orion软件框架中含有一个SolarWinds.Orion.Core.BusinessLayer.dll文件,而该文件拥有 SolarWinds 的数字签名,但是在攻击中,该文件包含了一个后门,可通过 HTTP 与第三方服务器进行通信。
植入木马之后,会有长达两个星期的初始休眠期,然后它会检索并执行称为“Jobs”的命令,这些命令包括传输文件,执行文件,对系统进行文件配置,重新引导计算机以及禁用系统服务的功能。恶意软件伪装成 Orion 改进程序(OIP)协议的网络流量,并将侦察结果存储在合规的插件配置文件中,使其能隐藏于常规 SolarWinds 活动,不易识别,进而使攻击者可以远程操控计算机。
微软发现,即使删除了 SolarWinds 后门,攻击者也可能会继续拥有整个目标网络的访问权限。
02
应对SolarWinds安全事件的挑战
在这次SolarWinds安全事件中,被感染的二进制文件是.Net程序集,其中包含Orion框架的许多合法名称空间、类和方法。这样的话,攻击者就能将自己的代码与合法代码融合在一起。 如何对有效地检测相关DLL文件这成为该检测事件的关键。最直接的方法是利用二进制代码还原原始代码来进行分析,但采用二进制代码并将其还原为原始源代码实际上是不可能的任务,因为编译是一个复杂的,不可逆的动作。编译后的二进制文件中包含不断变化的信息,优化和元数据。即使对相同的源代码在不同时间对其进行编译,得到的二进制文件也不会完全相同。 除了二进制代码还原的挑战之外,CI/CD工具和方法的种类也非常广泛。每个团队对这些工具的使用方式不同(每种方法以独特的方式处理依赖关系,通用代码和其他资源)。此外,CI/CD管道被设计为对其用户不可见,并且几乎从未被检查过,因此这是DevSecOps的一大盲点。
03
解决方案
针对SolarWinds安全事件这种情况,需要对其中的源代码有深入的理解,利用相关技术来分析源代码与相关的二进制文件。Apiiro使用基于风险的AI引擎学习了源代码和开发人员的经验。在Apiiro平台了解了所有代码组件、安全控件、逻辑流、数据类型及其关系后,其可以其于这些知识实现对二进制文件的分析。以SolarWinds安全事件中被感染的.NET二进制文件为例,Apiiro平台将对可执行文件进行解析并执行以下操作:
1了解所有可能的逻辑流程和符号;
2 清除所有自动生成的编译器逻辑;
3调整运行时版本之间的预期差异;
基于此构建了二进制文件的标准化的实体关系, Apiiro使用图匹配算法对比分析了源代码与二进制文件生成的实体关系图,来实现对二进制文件的对比分析。Apiiro还设计了有效的算法来检测变异过程中所有可能的合规代码的更改(AOP框架,优化等),同时还能针对分析结果给出插入的恶意代码的功能说明(比如配置文件更新、后门等)。
四. 总结
SDL的核心理念是将安全集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。然而现有的代码安全性、合规性工具和流程大多是手动和定期的,为了以便进行集成控制并满足风险管理要求,产品交付过程中遇到安全的阻碍,开发流程严重减慢。针对这种需求,Apiiro提出了业内首个代码风险平台。Apiiro代码风险平台可以帮助客户在开发生命周期的早期进行有效的风险管理,实施应用程序治理和法规遵从性,并防止针对CI/CD的高级攻击。Apiiro会分析整个开发过程中的数据,以帮助组织检测恶意代码,确定优先顺序并补救有风险的重大变更。Apiiro通过提供跨应用程序,基础架构,开发人员的知识和业务影响的风险可见性,帮助组织构建应用程序风险计划,具有较高创新性。