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


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


推荐阅读
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 洞态IAST Java Agent 实现AOP技术详解
    本文深入探讨了洞态IAST Java Agent如何通过AOP技术实现方法调用链和污点值传播等功能,为读者提供了详细的源码分析。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ... [详细]
  • 本指南详细介绍了金仓数据库KingbaseES的安全威胁及应对措施,旨在帮助用户更好地理解和实施数据库安全保护。 ... [详细]
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社区 版权所有