微软安全开发生命周期
安全开发生命周期(Security Dev Lifecycle, SDL) 是一个侧重软件开发的安全模型. 又叫做微软 SDL 优化模型.
- 从 2004 年开始, SDL 作为微软全公司的计划和强制政策, 将安全和隐私植入软件和企业文化.
- SDL 致力于减少软件开发过程中的漏洞.
- SDL 在开发过程各阶段均引入安全和隐私的意识.
- SDL 基于三个核心概念(教育, 持续过程改善, 责任).
- SDL 非常重视了解安全漏洞的前因后果, 要求定期评估伴随新技术产生的新威胁的应对措施.
- SDL 要求在危机关头对维护应用程序所需的所有数据进行存档.
将安全开发概念整合到现有开发过程可能出现问题, 成功与否取决于多方面因素, SDL 模型可以帮你解决这些问题.
SDL 优化模型大致围绕软件开发生命周期各阶段构建 5 个功能领域:
- 培训, 政策, 组织功能
- 需求和设计
- 实施
- 验证
- 发布和响应
每个领域功能定义了四个成熟水平: 基本, 标准化, 高级, 动态.
从基本成熟水平 (几乎或完全没有任何过程, 培训和工具) 到动态水平(高效的过程, 训练有素的人员, 专用工具, 组织内外强烈责任感).
SDL 适用性
要对项目实施 SDL 模型控制, 需为组织设置明确的预期值, 通过经验, 项目需要具备以下特征:
- 在业务或企业环境中部署
- 处理**个人可识别信息(PII)**或其他敏感信息.
- 定期通过网络通信.
安全人员
以下角色需在 SDL 的要求阶段 确定, 这些角色需构成一个组织结构.
以下角色属于咨询性质的, 需在项目开发各阶段对安全和隐私问题进行分类和缓解.
- 评析者/顾问: 对项目安全和隐私进行监督, 有权拒绝项目团队的安全隐私计划.
- 安全顾问/隐私顾问: 由团队外部的主题专家(SME) 负责.
- 审计官: 监控软件开发各阶段, 并保证每个安全要求实现.
- 专家: 拥有安全方面可靠的知识.
- 顾问角色组合: 如果有人能同时胜任安全顾问和隐私顾问.
- 安全顾问/隐私顾问: 由团队外部的主题专家(SME) 负责.
- 团队负责人: 应由项目团队的主题专家担任, 负责(协商, 接受, 跟踪)最低安全隐私要求, 并在开发过程中与顾问和决策者保持沟通顺畅.
- 安全负责人/隐私负责人: 可由一人或多人担当, 负责保证软件发布时解决了所有安全问题, 还负责协调和跟踪项目的安全问题, 还负责向安全顾问和项目团队的其他相关方(例如 开发 和 测试负责人) 报告情况.
- 角色组合: 如果有人能同时胜任安全负责人和隐私负责人.
SDL 实施过程
- 第 0 阶段 或 预备阶段: 通过教育培训, 培养开发团队员工的安全意识.
- 第 1 阶段: 要求. 把安全和隐私作为开发过程中的基础环节, 保证安全和隐私的同时尽量不要影响到计划和安排. 定义质量门和 Bug 栏, Bug 栏用于定义安全漏洞的严重性阈值. 进行 安全风险评估(SRA) 和 隐私风险评估(PRA).
- 第 2 阶段: 设计. 设计阶段应仔细考虑安全和隐私问题, 项目团队需理解 “安全的功能” 和 “安全功能” 的区别, “安全的功能” 是指在安全方面进行了完善的功能, “安全功能” 是指对安全有影响的程序功能. 此外需减小项目攻击面和对威胁建模.
- 第 3 阶段: 实施. 开发团队应使用获批准的工具. 弃用不安全的函数. 最后要对代码进行静态分析, 保证遵循安全代码策略.
- 第 4 阶段: 验证. 对称性进行动态分析, 用监控软件判断程序行为是否存在内存损坏和用户权限等问题. 进行模糊测试, 是指故意向程序输入不良格式的数据引发程序故障的一种动态测试. 重新评估程序的威胁模型和攻击面.
- 第 5 阶段: 发布. 制定事件响应计划, 进行最终安全评析(FSR), 最后进行发布和存档, 以便对软件进行发布后维护.
其他可选活动:
- 人工代码评析
- 渗透测试
- 相似应用程序的漏洞分析