《从零搭建安全开发流程》
第3章 安全需求分析
3、安全需求分析:威胁建模入门、STRIDE模型详解、如何编写安全需求文档
3.1 威胁建模入门
威胁建模是一种系统化的方法,用于识别、评估和缓解软件系统中的安全威胁。它帮助团队在开发早期发现潜在风险,从而降低修复成本。威胁建模的核心是“以攻击者的视角思考”,通过分析系统的架构、数据流和信任边界,找出可能被利用的弱点。
🎯 威胁建模的四个核心步骤
- 绘制架构图:明确系统组件、数据流和信任边界。
- 识别威胁:使用STRIDE等模型系统化地发现威胁。
- 评估风险:根据影响和可能性对威胁进行优先级排序。
- 制定缓解措施:设计安全控制来消除或降低风险。
💡 入门建议:从简单的白板绘制开始,逐步使用专业工具(如Microsoft Threat Modeling Tool、OWASP Threat Dragon)。重点理解“信任边界”——系统内部与外部环境之间的分界线,这是威胁建模的关键切入点。
3.2 STRIDE模型详解
STRIDE是微软提出的威胁分类模型,由六种威胁类型的首字母组成。它提供了一种结构化的方式来枚举安全威胁,确保覆盖全面。每个威胁类型对应一种安全属性被破坏的场景。
🔍 应用技巧:在威胁建模会议中,针对每个数据流和组件,逐一检查STRIDE六类威胁。例如,对于“用户登录”功能:S(伪造身份)→ 需强认证;T(篡改令牌)→ 需签名;R(抵赖登录)→ 需审计日志;I(泄露密码)→ 需加密;D(暴力破解)→ 需限流;E(越权访问)→ 需最小权限。
3.3 如何编写安全需求文档
安全需求文档是将威胁建模结果转化为可执行开发任务的关键产出。一份优秀的安全需求文档应具备:明确性(无歧义)、可测试性(可验证)、可追溯性(关联具体威胁)。
📋 安全需求文档模板(示例)
需求编号: SEC-REQ-001 关联威胁: T001 - 用户身份欺骗 (Spoofing) 需求描述: 系统必须对所有用户登录请求实施多因素认证(MFA), 至少包含密码 + 短信验证码或TOTP。 验收标准: 1. 测试人员使用无效密码+有效验证码,登录被拒绝。 2. 测试人员使用有效密码+无效验证码,登录被拒绝。 3. 测试人员使用有效密码+有效验证码,登录成功。 优先级: 高 来源: 威胁建模会议 (2025-03-15)
📌 最佳实践:
- 每个安全需求必须关联至少一个STRIDE威胁类型,确保覆盖完整。
- 使用“用户故事”格式编写:“作为[角色],我希望[功能],以便[安全目标]”。
- 在需求文档中明确验收标准,便于测试团队验证。
- 定期更新需求文档,与威胁建模迭代同步。
3.4 综合示例:从威胁到需求
以下是一个简单的“在线支付系统”威胁建模片段,展示如何从STRIDE威胁映射到具体的安全需求:
通过这种结构化的映射,确保每个识别的威胁都有对应的安全需求来缓解,形成完整的闭环。
⭐ 核心要点回顾
- 威胁建模是安全需求分析的基础,STRIDE提供系统化的威胁分类。
- 安全需求文档必须可测试、可追溯,并关联具体威胁。
- 威胁建模与安全需求编写是迭代过程,随系统演进持续更新。
专注课程资料整理