3类企业的SDL建设roadmap | 收官课回顾

2020-04-15

     转眼5周结束,默安科技发起的“安全开发大讲堂”主题直播将告一段落。本文是最后一讲的直播回顾,主讲老师是业内低调的安全开发“全栈”大佬。



本次分享分为3部分


01 如何评估SDL做的好坏


02 三类企业的SDL建设路线图


03 简单探讨SDL与DevSecOps的区别


01

如何评估SDL做的好坏?


BSIMM-10


BSIMM与SDL匹配度较高,能够帮助目标企业客观地看到自身与行业整体软件安全的成熟度差异。第10版共包含119项活动和4个区域:治理、情报、SSDL触点、部署。以下所列出的4个区域的活动是根据SDL具体实践经验做过删减的版本。这个简化版本基本能对SDL实践情况给出一个较客观的参考。


1.png

2.png

3.png

4.png


如果单独针对SDL进行评估, BSIMM适用性不强,但很多企业在某些角度上也在使用,因此简单提及。

 

SAMM-2.0


OWASP在2020年2月发布了一个最新的SAMM2.0版本。2.0版本不但适用于传统的瀑布和迭代开发模式,还纳入了敏捷开发和DevOps,涵盖的范围较全面。该模型分为概览、入门、工具箱、基准4部分(详细介绍参见原PPT中的超链接)。这里重点介绍“概览”和“工具箱”部分。


(1)概览


5.png


SAMM成熟度模型包含5个大方向(治理、设计、实施、验证、运营)和15个域(战略、政策合规、教育指导、威胁评估、安全需求……)


每个域分为两条线StreamA、StreamB进行评分,AB关注点不同,举个栗子:


“安全测试”分为streamA、streamB两条线,A线属于基准要求(1级:使用自动化安全测试工具;2级:使用特定应用的安全测试自动化;3级:将自动化安全测试集成至构建和部署流程),B线属于深入的需求(1级:对于高风险组件执行人工安全测试;2级:执行人工渗透测试;3级:将安全测试集成到开发过程中)。


(2)工具箱


官方给出Excel和Web两个版本的工具箱,个人认为Excel更为实用。我根据个人过去几年的经验,对于常见企业的SDL建设状态,做了一次SDL实践评估,得出以下分析结果。


6.png 

7.png

 


SAMM excel评估表默安科技已有汉化版本。


获取方式:“默安科技”公众号后台回复“直播”获取汉化版的SAMM excel评估表和全套直播PPT。

 

02

3类企业的SDL建设路线图


“3类企业”如何划分?

 9.png


如上图,我将企业类型简单分为A、B、C三类(涵盖不了全部情况,这里粗略划分),划分维度有两个:一是“安全角色在哪里?”(安全部门权限);二是“安全团队的规模”(我有多少兵去做这些事)。


A类:没有独立安全部门,少量安全岗位一般嵌入运维、测试部门,很多安全工作需要外部供应商支持;

B类:与开发团队合作密切,或者相对独立的安全团队;

C类:完全独立的安全团队,与产品、开发、运维等兄弟部门平级,有高层角色。


A类企业SDL Roadmap


 8.png


不要被图吓到,就像技能树一样,中间主线是SDL开展的标准环节。上下方的方框代表建设SDL中绝大部分主要的内容和安全活动,分为文档、工具、人工工作和一些度量指标,如果达到一定的程度,方框和连接线也会变成彩色。

 

浅黄色表示A类企业初步执行的安全工作,主要覆盖的是实施、验证、发布3个环节,如渗透测试、SAST、DAST和安全防护设备WAF等;深黄色表示A类企业下一步的安全工作,还是集中在这三个环节中,包括安全编码规范、代码审计、IAST、资产安全检查等;灰色部分对A来说则很难有资源实现。

 

🔼 A类企业在SDL实践中可能遇到的坑


想做更多,又没有支持/预算/人员怎么办?

  • 日常工作尽可能的自动化(包括产品工具、知识库的嵌入);

  • 定制入门的安全指南,让兄弟部门协作执行;

  • 制定关键流程,设置卡点,例如上线前让测试小伙伴测试高危风险等。

 

每年都做很多测试工作,还是有很多漏洞怎么办?

  • SDL的思想就是左移,应将漏洞整改办法总结到需求环节中,从源头减少漏洞出现的可能性;

  • 定制一些初步的基线/红线。


B类企业SDL Roadmap


 10.png


B类企业用蓝色表示安全开发活动。不论成熟度如何,B类企业能够覆盖到70%-80%的SDL阶段。同样的,浅蓝色代表B类企业初步实施的安全工作,深蓝色表示下一步应该做的工作。在初步执行的安全工作中,除了实施、验证、发布三个阶段,B类企业还可以覆盖到培训、需求和响应环节,包括代码审计、安全编码规范、IAST、渗透测试、SAST、DAST、漏洞管理、资产安全检查等。下一步应执行的工作还覆盖了“设计”阶段。


B类企业的安全活动已经相对全面,但安全培训、需求评审、威胁建模、安全组件库、安全功能验证的程度无法达到一定成熟度,并且无法去做攻击树分析的工作。

 

🔼 威胁建模实践中的常见问题Q&A


到底用什么工具?

不用纠结,了解系统模块的运行机制、数据流向、业务操作即可,熟练可以自己脑图。


威胁库怎么积累?

整合测试部门的工作积累和广泛的行业积累,用于自身环境的威胁分析。


采用什么评估方法?

评估方法包括STREAD、DREAD、CIA、OWASP、CVSS等,同样不用纠结,以实际效果为导向,能够与落地部门达成一致即可。


威胁建模谁来做?

威胁建模拆分开来有两块工作,一是系统建模,安全主导与开发同学协作来做;而是威胁分析,须由具备攻防经验的安全人员完成。


项目太紧,来不及做怎么办?

敏捷开发、DevOps的普及导致威胁建模时间趋于紧张。必须对需要更新的目标系统提前建模,扒一扒以往的设计图、文档、代码等。


得到大量潜在威胁怎么办?

进行评级和简化,尽可能收敛,最好能在1个开发周期之内完成。


来自领导的灵魂拷问:

你们这样做能保证完整性吗?测试范围全面吗?

没有客观的绝对完整,只能依靠经验&方法论尽量做好;做好做全也是安全的本职工作。但一方面要考虑完整度,一方面还是要以落地为主,很多安全问题实际在开发侧很难解决。我们有积累、有方法,但也要考虑整体落地的效果。

 

🔼 安全需求评审实践中的常见问题Q&A


谁去参加安全需求评审会?

有威胁建模经验的人员。


积累了大量安全需求怎么处理?

根据特点和场景进行简化,并给出相关的设计落地方法。


听会后没有发现问题,比较尴尬怎么办?

没关系,关注和解决主要风险即可。


安全需求的跟踪有必要吗?

有必要。安全人员应该有一个自己的跟踪表,例如可以包含以下这些元素:业务流程、细节场景、风险等级、面临的安全威胁、安全需求、安全设计、研发负责人、测试验证结果。能形成一个完整的闭环。


C类企业SDL Roadmap


 11.png

C类企业基本上所有安全开发活动都已覆盖,深绿色表示C类企业能够做得更好保证效果的工作,主要包括需求评审、安全培训、威胁建模、攻击树分析、安全组件库、安全功能验证、应急响应。


 🔼 C类企业安全团队的困扰


干的事太多了怎么办?

不管什么样的企业,安全人员总是不够的,更多的成果需要更多的人。因此需要先定流程,做试点系统;并且与开发流程的深度集成,实施DevSecOps,对于复杂工作尽可能实现平台化。

 

平台化、统一管理怎么做?

这里所说的“统一管理”不是对技术能力的管理,对工具和技术的统一管理很难做到,这也是默安未来的产品方向;安全部门能做的是从项目角度出发做业务流程的管理。

 

人员变动大怎么办?

建立需求知识库、测试验证知识库、设计库、入门培训,避免出现信息断截,并以保证主营业务及支撑业务的安全性为重心。

 

03

探讨SDL和DevSecOps的区别

有些企业可能会存在这样的疑惑:“我SDL建设效果还不够理想,可以直接实践DevSecOps么?”


答案是肯定的。SDL重在整体流程治理,DevSecOps重在工具链落地和实际效果;SDL重在安全开发和安全设计,而DevSecOps包含了SDL不具备的Ops(运营)部分。两者并不冲突,反而是很好的互补,都是安全治理的方法。


12.png

DevSecOps与SDL安全活动对比


上图元素和之前的图类似。DevSecOps(上半部分)和SDL流程(下半部分)中有70%的内容都是重复的。主要区别有两点:


  • 需要人工参与的工作,例如攻击树分析、代码审计、渗透测试、安全威胁验证等工作只能在SDL流程中完成,而在DevSecOps中则比较难进行;

  • SDL在系统上线后考虑的内容就很少了,但DevSecOps还包括运营阶段一系列的安全工作。

END


小默想说更多的精华都在这些图里面了。有兴趣了解的小伙伴可以在“默安科技”公众号后台回复“直播”下载PPT和SAMM评估表汉化版。

 

到这里,小默就要暂时和大家说再见啦。安全开发主题告一段落,但是可以期待一下我们接下来新一季的主题直播,还有更多你要的干货和精彩!