老规矩,先点开音乐(这是Iris展演的时候,趁机蹭看的一个舞蹈表演,当时听着感觉回到了童年,很有意思),再看看文章的大纲,若感兴趣再继续往下看吧~

这可能是《深耕研发安全》系列的最后一篇文章了,主要原因是AI能力的发展及应用,若仍执着于该方向继续写下去,难免与当下技术发展趋势有所脱节。不过好在经过了近一年的学习、研究和实践,在AI时代下的SDL也有了一些进展,后续将持续在软件安全领域输出AI SDL系列文章。在此之前,还是快速地回顾一下本系列:
01 回顾混沌模式
————————
前序内容提到研发混沌模式,即:在同一家公司中,因业务形态或成熟度的差异,可能共存多种研发模式,比如当前被60%-80%的软件开发团队作为首选的敏捷模式,以及传统的瀑布模式,还有DevOps、当下的AI Native开发,同时也存在支撑这些模式运行的不同研发基础设施,如GitLab、SVN、Jenkins、AF等。
面对这种复杂的情况,安全团队通常应该采取“抓大放小”的策略,针对主流开发模式及基础设施进行研发安全自动化检测设计、实施、运营。但如果这些研发模式在产品线上分布相对均衡,又该怎么办?
所以需要探索出一种新的建设方案,引入“自助式”的理念,安全团队专注提供各类安全检测能力和制定全链路闭环流程,让各产品线自主接入安全检测能力或使用同一个系统来开展安全研发相关活动。这个方法,其实也符合常规的安全建设或治理思路,理由如下:
由此,便诞生了:自助式研发安全平台,类似于ASPM一样的系统。
02 自助式的诞生
————————
所谓“自助”,即产线可根据自身研发流程,自主集成、调用或直接登录平台使用这些安全检测工具,旨在复杂的企业研发环境中顺利推行统一的研发安全标准。
为了实现更好的“自助”效果,让各产品线在安全提测时更加便捷,平台除了安全能力供给外,还需要提前打通一些系统,比如:

(自助式研发安全平台架构图)
自助式研发安全平台是贯穿软件全生命周期的一体化安全管控中枢,它以项目与代码资产为基础,通过自动化与自助式的 SAST/SCA/IAST/DAST/CAST 及合规检测工具矩阵,实现对代码、依赖、运行态及应用合规的多维度安全测试覆盖;同时串联提测任务、特批工单、流程审核等标准化管理流程,联动漏洞预警与 SRC 响应机制,形成从发现到闭环的漏洞管理体系,并通过数据分析、风险排名与指标大屏实现研发安全运营的可视化与量化管理。
03 安全工具集成
————————
安全工具是研发安全平台的核心设计模块之一,下文将重点介绍其对接设计理念。从对接研发安全平台的成熟度来说,主要分为三类:

当所有的安全工具都被引入后,最重要的问题就是对于检测结果的要求,即涉及每一个安全工具检测结果的阈值设计 - - 安全测试通过的条件。这关乎着整体的研发安全效果,比较适宜的做法是对每个工具做深入分析,结合业务需求实战对抗、合规等维度,设置不同的门禁,并且持续动态地调整。以下是一些经验分享:

对于通过单项检测的要求,太紧了行不通,因为漏洞多危害不一定有、误报可能也会有很多,如果一开始就直接把低危、中危全纳入修复范围,产品线肯定都改不完,还会怨声载道;管得太松也不行,漏洞漏出去的就会变多,就会影响整个研发安全体系的效果。
所以对每个工具都需要深入做分析,比如SAST工具的检测结果,前期只需要关注一些高危漏洞(检测规则也是通过优化的);对于开源组件的话,可能会关注一些超危或者高危的漏洞类型。不过这只是从漏洞带来的危害角度出发,如果客户对扫描器检测结果有明确且严格的要求,那可能连DAST扫出的低危漏洞都需要处理,对应的通过要求也要随之改变。
04 安全提测工单
————————
在研发安全平台上,我认为第二重要的是业务流程,比如贯穿整个研发安全工作的安全提测流程。
首先由“发起安全提测”启动整个流程,接着产品线需要完成 DAST/CAST(动态/静态应用安全测试)自检并提交检测链接;随后研发安全平台会获取 SAST/SCA(静态/软件成分分析)的检测结果,并提交安全测试工单对测试结果进行自动校验;校验完成后,平台会发出校验结果通知;若检测未通过,则进入渗透测试、漏洞修复及漏洞创建环节,处理完成后由判断节点检查是否结果达标,若达标则流程结束完成安全提测,若未达标则需返回继续渗透测试和漏洞修复,直至达标为止。

具象化后,可以看一个安全提测工单的生命周期来阐述。通常安全测试工单会有6个状态,从‘未提交’到‘已完成’,中间会经历不同的阶段、融入了安全团队和产品线各角色的所有交互过程。

其间还会涉及一些其他的“意外”,比如产品线着急做安全提测上线(全量测试需要人工),平台提供了由产品线BU总确认的插队流程;产品线做完安全测试后着急上线(带着要求修复的漏洞上线),平台提供了由产品线总裁确认的绿色通道流程……与此类似的流程还会有不少,不过随着安全提测工作的开展也都逐一沉淀到平台上来。
05 安全赋能培训
————————
当平台做好之后,就可以联动其他部门做推广、应用了。出于部门绩效和在公司内部产生效果考虑,当时研发安全团队与研发学院联动,在公司内部组织了12场、连续6周的专题分享活动。

培训内容大致分为三类:第一类是平台及相关工具的操作使用;第二种是一些方案的实现,比如联合JAVA专家组一起做的开源组件安全管控方案及实现;第三种从攻击视角来做分享,旨在普及针对产品的攻防知识、提升产品线对安全的兴趣。本次培训主要由团队成员担任主讲人,从选题、制作PPT到最终上台宣讲,对平时只做技术的同学来讲也是不小的挑战,顺带达到了练兵(锻炼大家独当一面的能力)的效果。
06 研发安全运营
————————
研发安全体系搭建完成后,研发安全运营工作就显得尤为重要。在建设前期,我们会以正向指标为导向开展工作,比如安全测试工具的覆盖率、漏洞检出率,通过持续制定目标、对齐目标,能够有效提升研发安全水准。

但是当指标都是95+%,这些指标对我们的帮助就不大了。应当换个角度思考,关注因漏洞引发的安全事件,重视每一个安全事件,然后对安全事件做复盘分析,去优化体系、流程和工具。
更多体系化内容,可以查看:首发!“研发安全运营”架构研究与实践
除了日常运营之外,近年来我还有一个深切感触:CI/CD等研发基础设施,已悄然成为攻击队重点盯防的目标。过去我们常说,域控、K8s 这类基础设施是攻击者的“心头好”,但实际上,GitLab、Factory 等研发侧基础设施同样身处攻击队的瞄准镜之下 - - 它们承载着代码资产与构建链路,一旦失守,影响面远超想象。因此,在日常安全建设中,需将这类研发基础设施纳入重点关注范畴。