“ 本篇文章为理论的应用案例,有实践之后资料包的打包归纳,也有SDL先关的一些建设思路,读者可以根据大纲择取所需:
”
在诸多的学习效率提升方法中,令我印象最深刻与最受益的就是:“拆书”式学习方法和“关联”实际情况的应用方法。本文内容延续上一篇理论深入,以学习SDL相关的文章为例,分为以下四个环节阐述如何实践。
聚焦主题是SDL,包括目标设置、测试工具、流程设计、实践经验、效果度量等诸多方面。在整合同类资源之前,要有不错的资料源。通常有以下渠道可以获取:
其次就是要确定搜索的关键字,越明确越容易搜,搜出来的内容也越符合期望,避免做大量的筛选工作。SDL(软件开发安全)本身涉及到的内容非常多,随着微服务、容器等技术的广泛应用,开发安全的定义已经扩张到基础设施安全、部署安全、开发安全技术运营,因此大家常将SDL与DevSecOps混为一谈(本质是取决于开发模式而生的安全活动)。关于SDL的搜索关键字,常见的有:
比较好的资料,应该是包括企业安全现状、项目背景及需要解决的问题、整体解决方案。无论是厂商还是大厂自研实践,单纯的谈效果、成绩,意义不大。尤其是在做整体方案设计上,需要知道动作之后的背景才比较有借鉴意义。
比如SDL建设的先后顺序及全流程:一般都是先“救火”,即:在业务上线前进行卡点及上线之后的安全运营,安全测试通过后才允许上线。先从安全测试和运营做起,不断找业务试点新安全活动(SCA、SAST等)- -> 试点跑通推向其他产线- -> 再找试点尝试新的安全活动进行试点- -> 再将新活动推广到其他产线,一步步地向左移动。
对于其他资料(非上述觉得好的情况),也是有所借鉴之处,可能会带来整体方案的细节与深度上的补充。除了经典思路摘抄外,还应该关注自己知识领域之外的内容、没想到的点、极大概率上会遇到的问题及解法等。
在线上运营阶段,针对线上漏洞的发现途径,可以从入侵检测的角度来看,如运营NTA、HIDS等安全产品的告警信息,捕捉攻击者对现有产品进行攻击时使用的漏洞。
关联当前公司的SDL建设情况,有哪些可以借鉴、有哪些差距、可以制定哪些计划?
借鉴常规的思路,先从“右“往“左”开始做起,即先完成产品上线前的安全测试、发布时的安全审核和上线后的运营。在实际业务场景中,这相对靠后的三个阶段的安全活动均已覆盖,尤其是线上运营的工作做得比较好:
但继续向“左“的话,在编码阶段与业界大厂存在较大差距。说直白,就是没有完整的静态代码扫描和开源组件检测能力,仅在部分产线上进行使用。安全也要谈ROI,通过分析诸多的实践案例发现:在编码阶段引入代码层面的安全检测是比较合理的,越早发现漏洞修复的成本越小,故应该在该阶段继续想办法,使安全活动嵌入开发流程,安全检查变为常态化。(2020年的现状)
在2021年的开发安全BP中,特意加入了静态代码和开源组件检测常态化检测两大指标。此外,还准备冲刺设计阶段,对基础组件、公共平台和部分产品的高危功能进行架构安全评审与威胁建模分析,同时也要不断完善现有阶段的安全活动并持续优化。故在去年的基本上,覆盖了安全编码和安全设计两个阶段,基本在做或做成了以下这些事儿:
安全有时候就是需要靠契机来推动,否则很难单独发起并出色达标。契机可以是不愿发生的安全事件,也可能是公司的重大保障项目。在去年,我们就是托后者的福,在公司主流产品中跑通静态代码扫描和开源组件检测,其中最难的就是:
然而在今年,继续将“左“移进行到底,准备重点翻过威胁建模大山,并提升安全编码、安全测试的自动化程度。把重心逐步从安全漏洞挖掘,转向安全漏洞预防。
前面部分主要是用SDL流程建设来举例,对于各环节使用到的技术并未涉及。但最吸引人的可能就是这些技术,究竟哪个好?最初接触的是DAST,到了编码阶段是SAST,后来又遇到不太懂的IAST。
(每个人都会有知识盲区,在每一篇文章中都可能遇到不懂的点,先记录下来,空闲了一定要翻资料弄清楚。一棵知识树,就会以此为枝干,不断扩张生长。)
看了一些厂商的方案介绍,知道了IAST更加适合SDL,柔和嵌入到研发流程中做漏洞检测。这时候就去找IAST的资料,了解到IAST的分类及优缺点如下:
当知识盲区变为熟悉的知识点,甚至会对此产生兴趣,就会产生要了解更多一些的想法,比如:IAST与其他的安全测试方法,有什么优缺点呢?
每阅读一篇文章都需要不少的时间和精力,还得去理解和吸收,花销成本较大,所以应该做到好记性不如烂笔头,适时的进行不同详细程度的记录,以便后续快速进行查阅。
一个有用的学习模板,至少要记录:摘抄和思考。摘抄是对已经看过的资料的提炼,讲得好的、遇到不清楚的、感兴趣的都记录下来,并标明出处以备不时之需;思考是当读到的文字产生思维火花碰撞时,与场景相结合的、十分宝贵的想法和思绪,对后续的行动计划会产生指导意义,对后续遇到问题的解决也能有所帮助。
除了以上两点之外,个人还在记录表中加入了原文地址、阅读状态、原文存储状态等列名,进一步丰富记录下来的内容。记得是在2019年进行的系统性收集和学习,取名:“软件安全开发生命周期-整合计划”。
为了方便同行学习及感谢长期以来对《我的安全视界观》的关注,现将收集到的一些SDL资料进行打包分享。请在公众号后台回复:SDL文章资料集锦,获取下载地址。
Excel中,比较好的有:
Word中,比较好的是:
更多格式的资料就不再逐一推荐,部分可参照以下截图,更多内容还是移步到分享链接。
从事开发安全方向已经五年有余,遇到并解决了很多问题,早期在空闲时间写过《SDL最初实践》。后来想促进同行交流,于是发起并主理“SDL专属交流群”三年有余。本着能为行业做出一点点贡献的心态,从去年开始着手整理后期的一些实践内容,并基于自己的理解将微信群中的内容梳理成章。在接下来,将计划逐步分享这部分内容,姑且给该专题取名叫:【SDL 100问】