如何学习这么多的安全文章(实践篇)

2022-05-11 11:29:02 浏览数 (1)

本篇文章为理论的应用案例,有实践之后资料包的打包归纳,也有SDL先关的一些建设思路,读者可以根据大纲择取所需:

1

关于SDL实践案例

在诸多的学习效率提升方法中,令我印象最深刻与最受益的就是:“拆书”式学习方法和“关联”实际情况的应用方法。本文内容延续上一篇理论深入,以学习SDL相关的文章为例,分为以下四个环节阐述如何实践。

1.1 整合SDL资源

聚焦主题是SDL,包括目标设置、测试工具、流程设计、实践经验、效果度量等诸多方面。在整合同类资源之前,要有不错的资料源。通常有以下渠道可以获取:

  • 大众做法:直接在浏览器上根据关键词进行搜索,但是比较花时间,或者被引导向需要付费的平台。投入较多的成本,不过也能有所收获。
  • 官方文档:先考虑原厂商,SDL最早是微软提出来的,所以要先找微软相关的资料(虽然投入巨大,内容繁杂难落地,但用于借鉴和学习是没问题的)。国内做的比较好的有华为和腾讯等巨头公司,前者是效仿微软模式,资源投入巨大,实际也做得比较好,另外也通过对供应商进行可信认证,推动了行业安全水位的发展;后者是贴合业务快速迭代的节奏,产生的新开发安全模型,投入也不小但流程不会那么重。
  • 高效方法:从效率上考虑,建议直接在安全媒介或者微信聊天记录上找,能发现对外公开的大部分资料。找同领域的老师傅“有偿”要资料(别耽误大牛太多时间,有礼貌的发个红包请喝杯咖啡,表示感谢更佳),或者在专门的微信群中搜历史记录,都是比较高效的做法。(此处更多的是指自己搜资料,公司很可能没有相关的预算找厂商,不过也可以尝试联系考虑后期合作)。下图以威胁建模为例,搜到很多群都有相关资料或相关话题:

其次就是要确定搜索的关键字,越明确越容易搜,搜出来的内容也越符合期望,避免做大量的筛选工作。SDL(软件开发安全)本身涉及到的内容非常多,随着微服务、容器等技术的广泛应用,开发安全的定义已经扩张到基础设施安全、部署安全、开发安全技术运营,因此大家常将SDL与DevSecOps混为一谈(本质是取决于开发模式而生的安全活动)。关于SDL的搜索关键字,常见的有:

  • 直接意义上的关键字:SDL、SDLC、开发安全、软件安全、安全左移
  • 其包含内容的关键字:安全培训、安全设计、威胁建模、安全测试、安全运营、漏洞预警、漏洞复盘、架构安全评审、编码安全规范、渗透测试
  • 其相关技术的关键字:IAST、DAST、SCA、SAST、RASP、STRIDE

1.2 借鉴建设思路

比较好的资料,应该是包括企业安全现状、项目背景及需要解决的问题、整体解决方案。无论是厂商还是大厂自研实践,单纯的谈效果、成绩,意义不大。尤其是在做整体方案设计上,需要知道动作之后的背景才比较有借鉴意义。

比如SDL建设的先后顺序及全流程:一般都是先“救火”,即:在业务上线前进行卡点及上线之后的安全运营,安全测试通过后才允许上线。先从安全测试和运营做起,不断找业务试点新安全活动(SCA、SAST等)- -> 试点跑通推向其他产线- -> 再找试点尝试新的安全活动进行试点- -> 再将新活动推广到其他产线,一步步地向左移动。

对于其他资料(非上述觉得好的情况),也是有所借鉴之处,可能会带来整体方案的细节与深度上的补充。除了经典思路摘抄外,还应该关注自己知识领域之外的内容、没想到的点、极大概率上会遇到的问题及解法等。

在线上运营阶段,针对线上漏洞的发现途径,可以从入侵检测的角度来看,如运营NTA、HIDS等安全产品的告警信息,捕捉攻击者对现有产品进行攻击时使用的漏洞。

1.3 关联实际情况

关联当前公司的SDL建设情况,有哪些可以借鉴、有哪些差距、可以制定哪些计划?

借鉴常规的思路,先从“右“往“左”开始做起,即先完成产品上线前的安全测试、发布时的安全审核和上线后的运营。在实际业务场景中,这相对靠后的三个阶段的安全活动均已覆盖,尤其是线上运营的工作做得比较好:

  • 运营阶段常见的安全活动:包括SRC运营对外有偿收取公司漏洞,通过资产管理对公司使用到的开源软件、商业软件进行漏洞预警监控,产品安全事件进行应急响应;
  • 根据产品形态增加的安全活动:公司主流产品为硬件盒子,在解决应用层面的漏洞时,也重视在客户侧部署时系统层面的漏洞,故会有交付手册安全审计和加固手册安全审计两个安全活动。比如通过配置操作系统层面的防火墙(Firewalls or iptables)收敛对外暴露面时,需要注意系统防火墙的持久化,别在主机意外重启后,把高危端口暴露出去;在产品部署后,应该立即修改产品的默认账户密码等。

但继续向“左“的话,在编码阶段与业界大厂存在较大差距。说直白,就是没有完整的静态代码扫描和开源组件检测能力,仅在部分产线上进行使用。安全也要谈ROI,通过分析诸多的实践案例发现:在编码阶段引入代码层面的安全检测是比较合理的,越早发现漏洞修复的成本越小,故应该在该阶段继续想办法,使安全活动嵌入开发流程,安全检查变为常态化。(2020年的现状)

1.4 制定年度计划

在2021年的开发安全BP中,特意加入了静态代码和开源组件检测常态化检测两大指标。此外,还准备冲刺设计阶段,对基础组件、公共平台和部分产品的高危功能进行架构安全评审与威胁建模分析,同时也要不断完善现有阶段的安全活动并持续优化。故在去年的基本上,覆盖了安全编码和安全设计两个阶段,基本在做或做成了以下这些事儿:

安全有时候就是需要靠契机来推动,否则很难单独发起并出色达标。契机可以是不愿发生的安全事件,也可能是公司的重大保障项目。在去年,我们就是托后者的福,在公司主流产品中跑通静态代码扫描和开源组件检测,其中最难的就是:

  • 静态代码扫描的误报调优:精简规则,别想一口吃个大胖子,否则就是落不了地;
  • 制定可运营的开源组件合格红线:开源组件扫出来的漏洞特别多,有的程序不一定使用了存在漏洞的组件,有的程序看似使用了漏洞组件但是并没有进行错误配置,…

然而在今年,继续将“左“移进行到底,准备重点翻过威胁建模大山,并提升安全编码、安全测试的自动化程度。把重心逐步从安全漏洞挖掘,转向安全漏洞预防。

2

通过学习引导兴趣

前面部分主要是用SDL流程建设来举例,对于各环节使用到的技术并未涉及。但最吸引人的可能就是这些技术,究竟哪个好?最初接触的是DAST,到了编码阶段是SAST,后来又遇到不太懂的IAST。

(每个人都会有知识盲区,在每一篇文章中都可能遇到不懂的点,先记录下来,空闲了一定要翻资料弄清楚。一棵知识树,就会以此为枝干,不断扩张生长。)

2.1 IAST知识盲区

看了一些厂商的方案介绍,知道了IAST更加适合SDL,柔和嵌入到研发流程中做漏洞检测。这时候就去找IAST的资料,了解到IAST的分类及优缺点如下:

2.2 寻找测试兴趣

当知识盲区变为熟悉的知识点,甚至会对此产生兴趣,就会产生要了解更多一些的想法,比如:IAST与其他的安全测试方法,有什么优缺点呢?

3

SDL学习记录模板

每阅读一篇文章都需要不少的时间和精力,还得去理解和吸收,花销成本较大,所以应该做到好记性不如烂笔头,适时的进行不同详细程度的记录,以便后续快速进行查阅。

3.1 通用模板设计

一个有用的学习模板,至少要记录:摘抄和思考。摘抄是对已经看过的资料的提炼,讲得好的、遇到不清楚的、感兴趣的都记录下来,并标明出处以备不时之需;思考是当读到的文字产生思维火花碰撞时,与场景相结合的、十分宝贵的想法和思绪,对后续的行动计划会产生指导意义,对后续遇到问题的解决也能有所帮助。

3.2 SDL模板示例

除了以上两点之外,个人还在记录表中加入了原文地址、阅读状态、原文存储状态等列名,进一步丰富记录下来的内容。记得是在2019年进行的系统性收集和学习,取名:“软件安全开发生命周期-整合计划”。

  • READ:代表是否已经完成阅读,有时候做专题收集,文章太多会来不及消化,设置这个状态进行标记,不会担心时间久了忘记。
  • SAVE:如果是比较好的文章,在阅读后就保存下来。比较推荐印象笔记的浏览器插件,保留原格式。
  • GAIN:主要指突破现有知识体系,单纯从文章的内容来看有新的收获,提炼记录下来后续可以借鉴。
  • THINK:涵盖对文章内容的质疑、提问,以及对后续工作的指导。现在沟通十分便利,当遇到问题时联系作者讨教,与高手联机也是提升的快速方法。

4

SDL文章资源打包

为了方便同行学习及感谢长期以来对《我的安全视界观》的关注,现将收集到的一些SDL资料进行打包分享。请在公众号后台回复:SDL文章资料集锦,获取下载地址。

Excel中,比较好的有:

  • 安全功能表:用于设计阶段,提供给业务线进行安全设计自查;
  • SAMM实施前评估:开发安全的成熟度评估体系,可用于回答领导关心做得怎么样等问题,不过现在使用BSSIM来评估的比较多;
  • VIPKID产品设计与开发安全红线:如名字所述是开发安全红线,内容实则和安全设计有所相似。

Word中,比较好的是:

  • 华为产品安全基线:当前已经更新了很多,但是作为安全基线还是有很多适用的内容;
  • JAVA代码审计字典:JAVA常见框架及web漏洞示例,很适合代码审计初学者使用;
  • SDL各项指标参考截图:一些指标的截图,主要是来自安全大会的分享材料,可参考其制定开发安全指标。

更多格式的资料就不再逐一推荐,部分可参照以下截图,更多内容还是移步到分享链接。

5

后续内容提前知道

从事开发安全方向已经五年有余,遇到并解决了很多问题,早期在空闲时间写过《SDL最初实践》。后来想促进同行交流,于是发起并主理“SDL专属交流群”三年有余。本着能为行业做出一点点贡献的心态,从去年开始着手整理后期的一些实践内容,并基于自己的理解将微信群中的内容梳理成章。在接下来,将计划逐步分享这部分内容,姑且给该专题取名叫:【SDL 100问】

0 人点赞