作者:奇安信 章磊
近年来,由于网络边界愈发模糊、新型攻击手段层出不穷,应用安全的重要性也愈加突显,越来越不容忽视。
在今年的RSAC上,应用安全无疑是最热门的方向之一:《RSAC 2020趋势报告》中指出的十大趋势中,有两项和应用安全直接相关:“实现产品的设计、开发和运营安全”、“聚焦软件工程安全”;而今年创新沙盒比赛的十强名单中,竟然有五家都在做应用安全的相关方向。
但是,当我们翻开这些报告和公司简介,映入眼帘的都是“Product Security”、“DevSecOps”、“Code Security”、“WAF”、“Fuzzing”这些老生常谈的词汇。那么,有关应用安全的真正趋势、真正热点是什么呢?
笔者在仔细拜读了趋势报告、创新沙盒产品的简介和部分会议报告之后,结合自己在应用安全领域的认知,为大家总结了如下几个主要的应用安全技术新风向:
一、开源安全
在《RSAC 2020趋势报告》的第二个趋势“实现产品的设计、开发和运营安全”中提到:因为在今年收到的申请中,关于安全产品开发的议题远超以往,因此RSAC针对产品安全、开源安全进行了特别的关注。有许多议题在开源代码的使用、维护、测试、认证等方面,描述机构面临的挑战,并提出了最佳安全实践。
要知道,“实现产品的设计、开发和运营安全”是除了会议主题“Human Element”之外的最主要趋势,也就是真正的“民心所向”。开源安全,又作为其中尤为重要的一个细分领域,在该趋势报告中被多次提及。
早在2017年,Forrester Research的一份研究就表明,为了加速应用的开发,开发人员常使用开源组件作为应用基础,这导致80%-90%的代码来自于开源组件。奇安信代码安全实验室的研究发现,88%的软件开发项目因使用开源软件引入了安全漏洞,平均每个软件开发项目中存在44个已知开源软件安全漏洞。由此可见,随着开源组件在现代软件中使用比率的持续增长,以及日益严峻的组件安全问题,开源(或第三方)组件的发现和管理已经成为AST解决方案中关键性甚至强制性的功能之一。
关于如何应对,Garter则在其应用安全测试领域的报告中一再指出,虽然SCA技术跟传统的应用安全测试技术不太一样,但应当是应用安全计划中应对开源安全的、必不可少的一环。
什么是SCA技术呢?
软件成分分析(SCA)技术是指通过对软件的组成进行分析,识别出软件中使用的开源和第三方组件(如底层库、框架等等),从而进一步发现开源安全风险和第三方组件的漏洞。通常,SCA的检测目标可以是源代码、字节码、二进制文件、可执行文件等的一种或几种。除了在安全测试阶段采用SCA技术对软件进行分析以外,SCA技术还可以集成到MSVC、Eclipse等IDE或SVN、Git等版本控制系统,从而实现对开发者使用开源组件的控制。
二、应用安全编排与关联
在《RSAC 2020趋势报告》的第五个趋势“聚焦软件工程安全”中指出:以DevSecOps为中心的议题在持续增长和成熟,议题围绕着风险管理、治理、合规性、流程、框架等各个方面展开了讨论。
一方面,由于敏捷开发和DevOps的开发技术趋势,对于应用安全产品的自动化、工具化、时间控制的要求越来越高;另一方面,在DevSecOps 的流程中,如何有效地使用各种应用安全产品,并将其结果进行关联。
今年创新沙盒十强中的BluBracket、ForAllSecure,以及去年创新沙盒十强中的ShiftLeft,都宣称能够更好地帮助企业落地DevSecOps。
我们看一下这些产品的共性:
1. 和研发工具链进行集成
与研发工具链的集成是DevSecOps趋势下,应用安全产品必须具备的基本属性之一。譬如ForAllSecure的主打产品Mayhem,做为一款Fuzzing工具竟然可以和Travis、Jenkins以及Gitlab、Github等进行集成。
2. 追求低误报率
误报意味着需要人工介入进行审核,这样必然会打破整个自动化的构建流程。因此,为了顺应DevSecOps的需求,应用安全产品必须不断降低其误报率。以BluBracket为例,宣称其检测无误报。
3. 关注检测速度
更快的检测,意味着更快的产品发布节奏。在ShiftLeft的宣传中,50万行的代码检测仅需10分钟。
对于此,Gartner将这种技术从各种产品中抽取出来,称之为应用安全编排与关联(Application Security Orchestration and Correlation,简称ASOC):ASOC工具通过自动化工作流来简化软件漏洞的测试和修复。首先是安全测试自动化,其次将来自多个源(SAST、DAST、IAST、SCA、漏洞评估等)的数据提取到数据库中,再通过关联和分析检测结果,以实现修补措施的统一和优先级排序。
随着DevSecOps越来越被广大企业所接受,ASOC在两个关键领域所提供的便利将越来越明显:一是对应用程序安全测试计划的简化,以带来在管理工作流方面的效率提升;二是为最关键的安全风险进行优先级排序,进而解决资源稀缺的问题。
三、应用内保护
在今年的创新沙盒十强中,同时有两家从事WAF产品研发的公司入选,一家是美国的Tala Security,另一家是源自法国的初创公司Sqreen。
如果只是传统的WAF,肯定无法能够进入创新沙盒十强。那我们来看下,这两家产品,都有什么新颖的技术特色?
Tala Security的主打产品是“Client-side Web Application Firewall”,通过自动化部署和动态调整浏览器的本地控件(例如CSP、SRI、HSTS等安全策略)来防御跨站脚本、点击劫持等攻击。使用Tala WAF,并不需要更改应用程序代码,从而将对性能的影响降到最低。
Sqreen产品平台主要包括RASP以及In-App WAF两个核心模块。Sqreen宣称其可以防御OWASP Top10攻击(例如注入攻击,XSS攻击等),0-day攻击,数据泄漏等攻击。可以创建应对高级业务逻辑威胁的安全自动化处置策略。
不难看出,这两款产品实际上都使用应用内保护(In-APP Protection)这一种与传统WAF不同的技术。那什么是应用内保护呢?
In-APP Protection是指在应用程序内(不同于网络侧或操作系统侧)实施的解决方案,以使应用程序更能抵抗恶意数据泄露,入侵,篡改等攻击。企业使用In-APP Protection可以保护其基于软件的资产,并保护自己和客户免受欺诈性攻击。
In-APP Protection目前主要用于保护面向消费者的移动应用,尤其是对于那些运行于不受信任环境的应用程序。
当然,由于具体技术路线的不同,In-APP Protection技术可能还是需要开发人员的介入。因此,In-APP Protection技术的真正推广,也需要开发者对于这类防护技术的认知不断提升。
四、泛代码安全
代码作为构建各种应用、系统的基础组件,其安全问题是软件安全的根源性问题。因此,AST领域中有多类技术都可以应用在代码安全保障中,例如静态应用安全测试技术(SAST)技术、动态应用安全测试技术(DAST)技术、软件成分分析(SCA)技术等。
而在今年的RSAC中,代码安全的概念得到了进一步的延伸。正如RSAC创新沙盒公司BluBracket的网站上所述:一方面,代码是公司最重要的资产和核心竞争力,必须给予保护;另一方面,鲜为人知的是,代码也已成为企业的一个大攻击面,尤其是考虑到现在软件开发方式的开放性和协作性。
源代码的安全管理往往是企业容易忽略的点,譬如近两年频发的由于GitHub代码泄露而导致的一系列安全事件。跟传统的SAST相比,BluBracket的创新之处就在于将代码泄露和管控不当纳入其产品的解决方案之中。其产品CodeInsight,主要对代码进行发现、分类、持续跟踪以及开源库的检测。
而在传统的SAST领域,BluBracket的CodeSecure则采取相对较为轻量级的解决方案,重点只是寻找一些敏感信息如令牌、密码、用户隐私信息的泄露。因此其检测速度较快、误报率较低,也顺应了DevSecOps的要求。
相对于前两年在SAST领域火爆的基于人工智能的误报、噪音筛除,我们可以看到,代码安全并没有继续沿着技术深度去发展,而是往广义的“泛代码安全”去发展。
相关阅读