热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案

ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现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)

ShiftLeft:面向软件开发生命周期的持续性安全防护

图1 CPG代码逻辑图

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

ShiftLeft:面向软件开发生命周期的持续性安全防护

图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产品的截图:

ShiftLeft:面向软件开发生命周期的持续性安全防护

图3 Protect产品界面图

ShiftLeft Inspect

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

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

ShiftLeft:面向软件开发生命周期的持续性安全防护

图4 多维度进行代码检测

ShiftLeft:面向软件开发生命周期的持续性安全防护

图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的操作截图如下所示:

ShiftLeft:面向软件开发生命周期的持续性安全防护

图6 Ocular操作截图1

ShiftLeft:面向软件开发生命周期的持续性安全防护

图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管道的拓扑图:

ShiftLeft:面向软件开发生命周期的持续性安全防护

图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创新沙盒中可以崭露头角,获得靠前的名次,不过最终结果还是要看各位评审意见,让我们拭目以待吧。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文详细介绍了如何正确安装Java EE SDK,并解决在安装过程中可能遇到的问题,特别是关于servlet代码在Apache Tomcat 10中无法运行的情况。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文档提供了如何使用C#代码从客户订单中提取产品信息的方法,适用于需要处理和分析产品数据的应用场景。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • 本文探讨了Java中char数据类型的特点,包括其表示范围以及如何处理超出16位字符限制的情况。通过引入代码点和代码单元的概念,详细解释了Java处理增补字符的方法。 ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 本文详细介绍了装饰者(Decorator)模式,这是一种动态地为对象添加职责的方法。与传统的继承方式不同,装饰者模式通过组合而非继承来实现功能扩展,从而提供更大的灵活性和可维护性。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 设计模式在软件开发中被广泛应用,但如果不当使用,可能会导致系统复杂性增加。例如,过度添加类可能导致类图难以理解,代码跟踪变得复杂。本文探讨如何在使用设计模式时保持系统的简洁和高效。 ... [详细]
author-avatar
journeylis-1998_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有