RSA2019 创新沙盒 | ShiftLeft:面向软件开发生命周期的持续性安全防护

随着技术不断更新换代,软件开发生命周期逐渐缩短,在这个特殊阶段,DevOps应运而生成为了开发和运营的新组合模式。一方面通过自动化流程可使得软件构建、测试、发布变得更加快捷可靠,另一方面也减去了很多重复性的工作,降低了时间成本。与此同时,软件安全问题也同时得到了重视,那么如何将安全有效融入DevOps环境中成为了目前很多厂商难以解决的问题。 ShiftLeft将SAST、IAST、RASP融入其产品中,利用CPG技术让漏洞检测的检出率和误报率均得到了有效提升并且从漏洞检测、静态防护、运行时防护、自定制查询漏洞等多方面对软件开发生命周期进行安全防护从而实现了DevSecOps的落地,给大部分用户带来了收益。

公司介绍

ShiftLeft公司,成立于2016年,总部位于美国加利福尼亚州圣克拉拉市。该公司致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性。公司创始人Manish Gupta曾在FireEye、Cisco、McAfee等公司任重要职位。ShiftLeft在2019年2月获得了2000万美元的新一轮融资,总资金达到2930万美元。

背景介绍

在软件开发生命周期中,传统的安全防护都是人工在代码版本发布后通过执行相应脚本检测漏洞信息,之后再将漏洞信息提交至公司的漏洞管理平台或人工去做处理的。这样做有几个缺点,首先执行脚本通常误报率高,处理误报的漏洞无疑增加了人工成本,也非常耗时;其次检测漏洞的脚本非常多样化缺乏统一标准,也增加了人工维护的成本;最后检测和处理漏洞通常花费时间长达数小时或数天且准确率难以保障。随着技术和开发模式的不断更新换代,敏捷开发如DevOps、CI/CD等的出现解决了软件开发生命周期自动化的问题,很多企业在研究如何在整个过程保证安全性,即近年来很热的DevSecOps。但要实现DevSecOps的安全(Sec)部分还需要有公司提供相应的安全能力,Shiftleft将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具(SAST、IAST、RASP)相结合,以提供应用在运行时的防护能力,相比于传统防护方式可能带来的漏洞误报率高、人工介入周期长等缺点,以上这种结合方式提供了更为准确,自动化和全面的应用安全解决方案。

ShiftLeft产品

Code Property Graph(CPG)

图1 CPG代码逻辑图

传统的SAST(static application security testing)类工具在处理大量代码分析时具有误报率高、耗时长、资源占用比高、复杂度高等缺点,究其主要原因,是因为在审计代码的编译阶段需要针对不同的语言实现不同的语法树从而增加了复杂度和时间成本。CPG是一款可视化的代码分析产品,其为每个应用唯一的代码版本提供可扩展的和多层的逻辑表示,包括控制流图、调用图、程序依赖图、目录结构等。CPG创建了代码的多层三维表示,具有很强的洞察力,这使得开发人员可充分了解应用程序每个版本执行的内容及可能带来的风险。

图2 CPG多层语义图

上图为CPG的多层语义图,从中可看出版本代码中的组件和流信息,CPG将这些代码元素(自定义代码,开源库,商业SDK)映射为各种抽象级别,包括抽象语法树,控制流图,调用图,程序依赖图和目录结构,通过这种方式可以快速连接至漏洞点,使漏洞变得更容易识别,并且对于复杂漏洞(传统工具无法发现)的识别非常有效。

早在2014年,CPG就能够在Linux内核源代码中发现18个先前未知的漏洞。最近,以CPG驱动的代码分析准确性在OWASP(Open Web Application Security Project)基准测试中得到了验证,具体可参考官方文档

 

ShiftLeft Protect

ShiftLeft Protect是一款RASP(Runtime application self-protection)类产品,它提供了一种在应用运行时自动执行漏洞防护的方法。在生产环境中,Protect利用“code-informed”特性发现每个应用版本开发周期中的漏洞,并建立指定的安全策略对运行时环境中存在的漏洞进行防护。Protect产品可集成CI/CD管道,从漏洞发现,pull request, commit, build到执行策略的过程是完全自动化的,只需要几分钟。以下为Protect产品的截图:

图3 Protect产品界面图

ShiftLeft Inspect

ShiftLeft Inspect是将SAST和IAST(interactive application security testing)结合的一款漏洞检测产品。Inspect产品的设计理念是为了实现DevSecOps环境的高效性、准确性、扩展需求以及保护应用程序安全。

SAST类的产品在OWASP基准测试中最高可以达到检出率为85%,但同时误报率也高达52%,误报意味着会带来大量的人工成本,面对这种局面,Inspect将源代码进行多种类型的分析,从自定义代码到开源库以及商业SDK都有涉及(如图4所示),并且Inspect的效率极高,只需几分钟,就能准确识别复杂漏洞和敏感的数据泄露。

图4 多维度进行代码检测

图5 OWASP-SAS基准测试白皮书

从ShiftLeft 自己发布的Inspect产品在OWASP基准测试中的结果(图5所示)可看出检出率(TPR)为100%,误报率(FPR)为25%,最终得分为75%,这虽然是一个很高的分数,但也许是新兴创业型公司为了在业界增加曝光率在某种程度上的夸张说法,数据的可靠性还有待进一步观察,不过从图中结果至少可以得出ShiftLeft Inspect产品是非常具有竞争力的。

IAST相比于SAST有着明显的优势,比如误报率极低、检测速度快、漏洞详细度高、人工成本低等。ShiftLeft也将IAST融入到Inspect产品中,只不过在ShiftLeft中称为MicroAgent。 MicroAgent是IAST的关键模块,其与Security DNA(安全DNA指的是代码中容易出现攻击位置,像第三方开源库、敏感数据等)相互合作从而在一些细微处加强了漏洞检测能力。

 

Ocular

Ocular是一种类似于Google Maps的代码搜索方法,其利用CPG的强大特性,将应用版本代码的详细信息导入至Ocular中。类似于Google Maps提供地理位置,各种路线和可能的目的地供用户去查询。Ocular为代码审计人员提供了一个交互式平台,支持用户在他们的代码库和环境中进行自定义查询,从而识别更为复杂的漏洞信息。在CI/CD管道中,Ocular的自定义查询也可以自动化,以用作安全配置文件的“策略”,当查询出漏洞信息后,Ocular可以将漏洞的反馈信息提为issue上传至用户的Github仓库,Ocular的操作截图如下所示:

图6 Ocular操作截图1

图7 Ocular操作截图2

ShiftLeft解决方案

For 应用安全(AppSec)

随着技术日新月异的发展,软件开发生命周期(SDLC)变得更快,更自动化,与此同时,应用安全团队也必须紧跟其步伐,做好及时的应用安全检查与防护。ShiftLeft Inspect是业界较快,较全面的一款静态应用安全检查(SAST)产品,它将pull request, commit, build直接集成至DevOps管道中,官方提出可以在10分钟内分析50万行代码。ShiftLeft Inspect使应用安全团队能够在DevSecOps中实现Sec部分,理论上不会降低整个CI/CD管道的速度,下图展示了ShiftLeft和CI/CD管道的拓扑图:

图8 ShiftLeft CI/CD管道拓扑图

For开发者(Developers)

对于开发者来说,传统的应用安全工具主要存在以下问题:

  • 速度太慢,无法适应现代CI/CD管道
  • 要求开发者在快速发布应用版本和安全的发布应用版本之间做出选择
  • 误报率高
  • 缺乏对数据的合规性管理

针对于以上问题,ShiftLeft Inspect首先将DevOps与安全结合,形成整个DevSecOps管道闭环,从而避免了安全人员与开发人员在处理误报上带来的时间浪费;其次通过ShiftLeft CPG的功能使得开发人员在开发过程中可以识别复杂漏洞和数据合规性等问题,从而可快速修复问题避免了后续可能带来的损失;最后从效率上来讲,相比于传统安全工具需要几小时或几天来分析及解决漏洞,ShiftLeft官网提出全过程只需要几分钟,并且误报率低。

 

For代码审计人员(Code Auditors)

大部分的代码审计和漏洞研究人员擅长手动使用“grep”来处理大量的版本代码,究其原因是因为传统代码分析工具不灵活并且已逐渐退出大众视野。ShiftLeft Ocular可以对版本代码的CPG进行详细的挖掘,其中Ocular还支持在多编程语言环境下执行相同的查询,目前Ocular已被多家组织用于在大型复杂代码库中查找0 day漏洞。

代码审计人员在ShiftLeft Ocular中编写的自定义查询可以提交至DevOps管道中集成,以便于在pull request, commit, build时运行Ocular查询,与此同时也扩展了代码审计员和漏洞研究人员的专业知识。

总结

随着技术不断更新换代,软件开发生命周期逐渐缩短,在这个特殊阶段,DevOps应运而生成为了开发和运营的新组合模式。一方面通过自动化流程可使得软件构建、测试、发布变得更加快捷可靠,另一方面也减去了很多重复性的工作,降低了时间成本。与此同时,软件安全问题也同时得到了重视,那么如何将安全有效融入DevOps环境中成为了目前很多厂商难以解决的问题。早期的软件开发生命周期中,安全厂商使用安全工具对源代码进行检测,这些安全工具可大致分为SAST、IAST、DAST(dynamic application security testing)、RASP这四类,在DevSecOps中,许多国外的白盒厂商都将这几种安全工具集成至Jenkins和Gitlab,但效果普遍都达不到预期,主要原因还是安全工具在遇到大量代码时的效率慢问题,并且一直得不到解决,这与DevSecOps提倡的高效率理念背道而驰。 ShiftLeft将SAST、IAST、RASP融入其产品中,利用CPG技术让漏洞检测的检出率和误报率均得到了有效提升并且从漏洞检测、静态防护、运行时防护、自定制查询漏洞等多方面对软件开发生命周期进行安全防护从而实现了DevSecOps的落地,给大部分用户带来了收益。

从技术角度而言, ShiftLeft产品的创新度高,完成度也相对较高,

且与DevOps、CI/CD的有力结合可以很大程度上提升其产品的竞争力。

从市场角度而言,ShiftLeft凭借实力在近期又获得了新一轮融资,其又可以招纳各路专家扩展其业务和专业知识,从而加快公司业务发展。

笔者认为ShiftLeft在今年入围的RSA创新沙盒中可以崭露头角,获得靠前的名次,不过最终结果还是要看各位评审意见,让我们拭目以待吧。

 

Spread the word. Share this post!

Meet The Author

Leave Comment