海云安谢朝海博士:安全赋能 研发自治 以敏捷白盒带来组织协同方式变

首页 / 业界 / 企业 /  正文
作者:藏青
来源:安全419
发布于:2023-08-01
随着云计算、微服务和容器技术的快速普及,IT基础架构和政企组织的业务交付模式迎来了巨大变迁,传统SDLC开发模式正在向DevOps敏捷开发和持续交付模式迁移。在这样的背景下,传统AST工具已经难以跟上敏捷开发的步伐,在代码安全缺陷检测效率和准确性方面形成了制约,大幅度拖慢了迭代周期。
 
SAST静态应用安全测试(以下简称“白盒测试”)由于不需要运行被测程序,具有覆盖率高、自动化程度高、可以在开发生命周期早期使用等特点,是目前被业界广泛采用的应用安全测试技术之一。
 
但作为一种针对应用安全缺陷的自动化检测方法,传统白盒测试在检出安全缺陷的同时也不可避免地发生大量的误报和漏报,居高不下的误报率为研发人员带来的新的工作量压力和困扰。因此,如何进一步优化白盒测试技术,去根据分析目标和应用场景在误报、漏报、效率、准确性之间达到一个合理的平衡,成为了业界关注的重要焦点和共同目标。
 
日前,安全419采访到了业内软件供应链安全领域代表性企业海云安的创始人谢朝海博士,围绕白盒测试技术当前面临的问题现状,以及海云安在“敏捷白盒”相关的探索实践带来了深度分享。



敏捷开发场景下 传统白盒测试技术已经无法持续
 
谢朝海博士表示,随着各种应用安全漏洞事件的爆发,近两年来关于源代码安全审计的相关要求越来越多地被提及,代码安全审计的受重视程度水涨船高。但事实上海云安发现,拿金融行业举例来看,除了少数头部的用户外,大部分单位和企业在代码安全审计方面的在代码安全审计方面的落地效果仍不理想。在监管力度稍弱于金融的行业中,这一现象更为普遍。
 
这些单位和企业大致处于以下三种状态中:
 
第一种,浅尝辄止型,即曾经有计划也有预算采购白盒测试产品,大致调研过或测试过市面上几款传统白盒测试产品后,由于产品本身的不成熟,或是在组织内部难以推动落地,便搁置了引入白盒测试的计划;
 
第二种,疲于奔命型,即已经引入了白盒测试工具,跟研发的发版流程做了一定的结合,但整体的落地效果不好,研发团队感觉到处处掣肘,降低了工作效率;安全人员也觉得研发团队不配合工作,检测结果总被挑战,导致研发团队和安全团队之间的摩擦不断,大家都很心累;
 
第三种,束之高阁型,处于这一状态下的机构几乎都在内部力推了一段时间白盒测试,但最后仍然层层阻碍,将已经采购的白盒测试工具束之高阁,谁要测就测一下,不做强制要求,没有真正融入开发流程中去。
 
“根本问题出在哪呢?一方面随着监管层的要求逐步趋于严格,给代码安全审计工作的质量提出了更高的要求,另一方面敏捷开发场景下的应用版本迭代加速,导致代码安全审计的频次也相应增加,这就意味着无论是工作量还是难度,相比以前都有了明显提升,但从人员配置的角度来说,无论是人员数量还是人员能力的建设,其实在短期内都很难跟得上。”
 
尽管代码安全审计工作落地面临困难重重,但无论是从监管合规要求来说,还是机构自身安全要求来说,代码安全审计工作可能不可避免地还是推进下去,要从根本上解决这些问题,最终还是要回归到技术创新以及应用方式的创新上。
 
谢朝海博士谈到,过去20年中,开发模式已经发生了翻天覆地的变化,敏捷开发、DevOps、云原生等等新的开发范式层出不穷,但代码安全审计技术却并没有迎来关键的变革,新的开发范式和场景,对技术提出了更高的要求,传统的代码安全审计技术无法匹配现有的开发模式已成为事实。
 
传统的代码安全审计技术当前在DevOps体系中落地时主要遭到两大方面的诟病:
 
首先是误报率居高不下,在敏捷开发模式下,由于发版频率大幅增加,需要进行代码安全审核的次数也会大幅增加,如果扫描工具本身的误报率很高,就需要投入大量的人力在很短的时间窗口期内去排除误报,对人力资源的消耗非常大,而且对人员的技能要求也很高,既要懂开发又要懂安全,这种情况下,安全人员很容易成为整个开发流程中的瓶颈,面临极大的工作量压力。
 
其次是检测效率低下,敏捷开发的最大特点就是高效,如果整个开发流水线上所有环节都很快,但是在代码安全审计环节却很慢,必定会影响到整体的发版效率,几乎无法容忍。
 
因此可以看到,传统代码安全审计技术跟敏捷开发模式的“高度自动化”“减少人工参与”等理念上存在冲突,如果难以调和矛盾,可能就会对现有敏捷开发模式的价值产生破坏。因此谢朝海提出,只有通过技术创新,用新的代码安全审计技术革新产品,用符合敏捷思想的治理方式去适配新敏捷开发场景才是最好的解法。
 
变革白盒测试技术和治理模式 破解误报难题
 
正如前文所言,针对当前白盒测试落地面临的诸多挑战,包括海云安在内的一系列主流应用安全厂商都在围绕敏捷开发模式的适配,在研发更敏捷的白盒测试技术方面进行了大量的实践和探索。
 
谢朝海博士解释到,敏捷白盒具有双重内涵,其一是技术本身如何更加敏捷,另一个则是技术如何更加敏捷的应用,让各个团队在协作模式上更加敏捷。他介绍,从技术角度看,白盒技术最核心的底层技术路线,主要是语法语义分析、污点追踪、符号执行,每一种技术如果要做深做细的话,其实存在多项可优化的技术点。
 
拿污点传播分析技术为例,污点传播路径主要有两大类,一类是基于变量数据依赖关系传播的数据流分析技术,也叫显性污点传播追踪;另一类是基于变量之间控制依赖关系传播的控制流分析技术,也叫隐性污点传播追踪。而目前主流白盒厂商应用的都是显性污点追踪,因为其研发的技术难度相对较低,摒弃了技术难度较大的隐性追踪技术,这就导致在做代码安全审计的时候会出现漏报现象,最终直接影响到检测工具的检出率。
 
再比如无害处理技术,一些比较有经验的程序员在编写程序的时候往往会编写无害处理模块,当污点数据在传播的过程中,如果经过了这些无害处理模块,那对这些数据的操作就不会再产生危害了。但在做污点传播追踪的时候如果不能够准确地识别到这些无害处理操作,就会导致误报,最终直接影响到检测结果的误报率。



谢朝海博士介绍,面向这些可以持续调优的技术点上,海云安创新研究院投入了大量的研究,并做出多项关键性的成果。首先,在准确率提升方面,海云安对基础的检测引擎就做了很多优化,在识别技术层面,海云安从技术层面,对语法语义分析、污点追踪、符号执行等方面针对变量类型的指向分析技术进行了优化,极大地提升了函数调用情况识别的精确度,大幅降低了安全漏洞的误报率。
 
在用户场景适配层面,海云安发现,往往同样一种技术在不同机构的应用方式也存在细节上的差异,无论是主观偏好还是客户场景都不尽相同。因此,考虑到用户需求的差异性,海云安敏捷白盒能够支持客户自定义的修改我们内置的检测规则,基于内置的机器学习引擎,海云安敏捷白盒还能够通过学习用户的审计记录,实时计算检测规则的有效性的置信区间和置信度,当置信度过低,便自动冻结该规则,更高效地降低误报率。
 
在检测速度方面,通常一款优秀的白盒工具做检测的时候需要分析代码的依赖性关系,通过依赖关系来发现应用缺陷。海云安敏捷白盒中便预置了常见的依赖信息,将不同依赖的父类子类层级关系、依赖关系是否会传播某个污点等信息进行提前的分析并预置到平台中,进而大幅的提升了检测效率。
 
谢朝海博士表示,在白盒测试快、准、全这三大核心指标中,海云安敏捷白盒并未牺牲检出率或是召回率,而是通过技术点的细节优化来实现三大指标的相互平衡。但确实在某些情况下,快、全、准这三者不可避免也需要相互做些取舍和平衡,在需要取舍的场景中,海云安的做法是将取舍的权力开放给用户,让用户自己做出关键决断。
 
据此前采访了解,业内传统白盒测试的误报率基本在30%—50%左右,而经过一系列技术创新和优化,海云安敏捷白盒已将误报率控制在10%以下,目前已在多家客户现场的大规模应用中得到了验证,极大地降低了人力的消耗。在检测速度方面,传统白盒每分钟的检测代码行数都在1万行以下,而敏捷白盒可以做到每分钟5万行甚至10万行,有效地提升了短期内高密度测试场景的响应能力。
 
安全赋能研发自治 敏捷白盒为用户带来组织协同方式的变革
 
谢朝海博士表示,通过敏捷白盒技术的创新,海云安实际上为客户带来的是组织协同方式的变革。“以前研发与安全的协作模式,是研发团队负责编写代码,安全团队负责安全检测,一旦发现问题就打回去让研发人员修改,在这种无法调和的矛盾下,最终不欢而散结果可想而知。而如果研发团队规模比较大,安全团队就会成为应用发版流程中的瓶颈,为此背负很大的工作压力和心理压力。”
 
而在应用敏捷白盒技术后,研发团队与安全团队的协作模式会发生一次重构,安全团队不再需要扮演一个需要短期内高质量完成大量代码安全审计工作的角色,而是回归到了一个安全能力的提供者以及安全规则的制定者身份;而研发团队也将由原来单纯的被监督者,转向更具主动性的自主检测者,形成高效的安全赋能-研发自治的闭环,实现源代码安全审计及整改工作在高频发版场景下顺畅落地。
 
他介绍,这一模式事实上形成了一种分布式的代码安全审计的机制,整体的开发测试效率会大幅提升。在海云安多家头部客户中,这一安全赋能研发自治的模式已经得到了安全团队和研发团队的双重拥抱。



对于安全人员来说,这一模式从机制上实现了职能的重构,很大程度上将安全人员从原本繁杂的代码安全审计工作中解放了出来,从而可以将精力放到更有价值的数据运营工作上,也降低了安全人员的工作压力。在开发自治的模式下,一些本身不具备代码安全审计能力的安全团队,同样能够将整个代码安全审计工作落地并运行下去。
 
对于开发人员来说,这一模式能够在不改变开发流程和习惯的前提下,无感的嵌入安全能力,将检测和修复过程柔和的融入开发流水线中,让安全融入流程的友好度极大提升。
 
谢朝海博士最后谈到,通过敏捷白盒产品,海云安真正实现了在不破坏用户原有DevOps体系本身价值的前提下,有力保障研发流程的高效运转,同时有效促进了各团队之间的协作,真正驱动了用户自身安全能力的提升。“一项新技术想要在敏捷开发体系内的落地,不仅仅要考虑技术层面,同时还涉及组织流程,制度规范,团队协作等方方面面,技术好是一方面,最终要落地得好才是目的。”