SDL 安全开发流程

作者: 康康 分类: 编程开发 发布时间: 2018-04-19 23:47

马上就要走出校园了,思维逐渐向企业方向靠拢,考虑到很多企业开发过程用到了SDL,这里详细记录自己的理解。

SDL很早我就听说过,用一句话概括:从源头就开始规避漏洞

  • 项目的各个阶段,有自己的安全任务
  •  这些任务如果未完成,则意味着本阶段的安全问题/风险没有解决,带给下一阶段,并最终带入生产环境
  • 通过流程保障,不将问题、风险、缺陷带给下一阶段

步骤:

1.建立标准与规范,含设计规范、开发规范、部署规范等,对开发人员进行培训

2.建立与规范对应的Checklist模板、测试用例等,作为流程执行过程中的交付件

3.将安全要素嵌入项目管理流程的各个阶段的关键活动中
(需求确认、同行评审、方案评审、验收等)

checklist有点像自己平时做的安全知识点回顾笔记,用来提醒开发人员自觉审核安全问题

 

还有一个详细步骤的版本,意思差不多,以下为转载:

阶段1:培训
开发团队的所有成员都必须接受适当的安全培训,了解相关的安全知识,培训对象包括开发人员、测试人员、项目经理、产品经理等。
阶段2:安全要求
在项目确立之前,需要提前与项目经理或者产品owner进行沟通,确定安全的要求和需要做的事情。确认项目计划和里程碑,尽量避免因为安全问题而导致项目延期发布。
阶段3:质量门/bug栏
阶段4:安全和隐私风险评估
安全风险评估(SRA)和隐私风险评估(PRA)是一个必需的过程,必须包括以下信息:
a.项目的哪些部分在发布前需要威胁模型?
b.项目的哪些部分在发布前需要进行安全设计评析
c.项目的哪些部分需要并不食欲项目团队且双方认可的小组进行渗透测试
d.是否存在安全顾问认为有必要增加的测试或分析要求已缓解安全风险
e.模糊测试要求的具体范围i额是什么
f.隐私影响评级如何
阶段5:设计要求
在设计阶段应仔细考虑安全和隐私问题,在项目初期确定好安全需求,尽可能避免安全引起的需求变更。
阶段6:减小攻击面
阶段7:威胁建模
为项目或产品面临的威胁建立模型,明确可能来自的攻击有哪些方面。
阶段8:使用指定的工具
开发团队使用的编辑器、链接器等相关工具,可能会涉及一些安全相关的环节,因此在使用工具的版本上,需要提前与安全团队进行沟通。
阶段9:弃用不安全函数
许多常用函数可能存在安全隐患,应当禁用不安全的函数和API,使用安全团队推荐的函数。
阶段10:静态分析
代码静态分析可以由相关工具辅助完成,其结果与人工分析相结合。
阶段11:动态程序分析
阶段12:模糊测试(Fuzzing Test)
阶段13:威胁模型和攻击面评析
阶段14:事件响应计划
阶段15:最终安全评析
阶段16:发布/存档

发表评论

电子邮件地址不会被公开。 必填项已用*标注