安全开发流程

Posted by RTL on March 19, 2019

安全开发

参考地址

  • 美国国家标准与技术研究所(NIST)估计,如果是在项目发布后在执行漏洞修复计划,其修复成本相当于在设计阶段执行修复的30倍

简介

  • SDL security development lifecycle(安全开发生命周期),是微软提出的从安全角度指导软件开发过程的管理模式。SDL是一个安全保证的过程,起重点是软件开发,它在开发的所有阶段都引入了安全和隐私的原则。自2004年起,SDL一直都是微软在全公司实施的强制性策略。

阶段

  • 阶段1:培训
  • 阶段2:安全要求
  • 阶段3:质量门/bug栏
  • 阶段4:安全和隐私风险评估
    安全风险评估(SRA)和隐私风险评估(PRA)是一个必需的过程,必须包括以下信息:
    • (安全)项目的哪些部分在发布前需要威胁模型?
      • 一个典型的威胁模型(TM)由以下三个关键部分组成:
        • 数据流程图(DFD)
        • 入口点和退出点列举
        • 潜在威胁列举
    • (安全)项目的哪些部分在发布前需要进行安全设计评析?
    • (安全)项目的哪些部分需要并不食欲项目团队且双方认可的小组进行渗透测试?
    • (安全)是否存在安全顾问认为有必要增加的测试或分析要求已缓解安全风险?
    • (安全)模糊测试要求的具体范围是什么?
    • (安全)隐私影响评级如何?
  • 阶段5:设计要求
  • 阶段6:减小攻击面
  • 阶段7:威胁建模
  • 阶段8:使用指定的工具
  • 阶段9:弃用不安全函数
  • 阶段10:静态分析
  • 阶段11:动态程序分析
  • 阶段12:模糊测试(Fuzzing Test)
  • 阶段13:威胁模型和攻击面评析
  • 阶段14:事件响应计划
  • 阶段15:最终安全评析
  • 阶段16:发布/存档

SDL实战经验准则

  • 准则一:与项目经理进行充分沟通,排除足够的时间
  • 准则二:规范公司的立项流程,确保所有项目都能通知到安全团队,避免遗漏
  • 准则三:树立安全部门的权威,项目必须由安全部门审核完成后才能发布
  • 准则四:将技术方案写入开发、测试的工作手册中
  • 准则五:给工程师培训安全方案
  • 准则六:记录所有的安全bug,激励程序员编写安全的代码