威胁模型(Threat Model)
威胁模型是系统化识别、分析和评估潜在安全威胁的过程,是构建安全系统的基础
什么是威胁模型
威胁模型是一种结构化的方法,用于:
- 识别系统可能面临的威胁
- 分析威胁的可能性和影响
- 确定需要优先处理的威胁
- 设计相应的安全对策
威胁建模的价值
- 前瞻性安全:在系统设计阶段识别风险,而非事后补救
- 资源优化:将有限的资源投入到最重要的安全措施上
- 全面性:确保没有忽略关键威胁
- 团队协同:为安全团队提供共同的语言和框架
STRIDE 威胁模型
STRIDE是微软提出的一种威胁建模方法,包含六种主要威胁类型:
1. 欺骗(Spoofing)
- 定义:伪造身份以获取未经授权的访问
- 例子:
- IP地址伪造
- MAC地址伪造
- 电子邮件地址伪造
- 用户身份伪造
- 防御措施:
- 强身份验证
- 数字证书
- 多因素认证
- 反欺诈系统
2. 篡改(Tampering)
- 定义:未经授权地修改数据或代码
- 例子:
- 数据包修改
- 配置文件篡改
- 代码注入
- 篡改传输中的数据
- 防御措施:
- 数据完整性校验
- 数字签名
- 哈希验证
- 访问控制
3. 抵赖(Repudiation)
- 定义:否认已执行的操作
- 例子:
- 否认发送邮件
- 否认进行交易
- 否认删除文件
- 否认修改记录
- 防御措施:
- 审计日志
- 数字签名
- 时间戳
- 不可否认性服务
4. 信息泄露(Information Disclosure)
- 定义:信息被未经授权的实体访问
- 例子:
- 数据库信息泄露
- 内存信息泄露
- 网络嗅探
- 错误信息泄露
- 防御措施:
- 加密
- 访问控制
- 数据脱敏
- 最小权限原则
5. 拒绝服务(Denial of Service)
- 定义:使服务不可用或性能大幅降低
- 例子:
- DDoS攻击
- 资源耗尽
- 缓冲区溢出
- 逻辑炸弹
- 防御措施:
- 负载均衡
- 资源限制
- 防火墙规则
- 流量清洗
6. 权限提升(Elevation of Privilege)
- 定义:获得比原本拥有更高的权限
- 例子:
- 利用漏洞提升权限
- 绕过访问控制
- 获取管理员权限
- 横向权限移动
- 防御措施:
- 最小权限原则
- 安全编码
- 定期更新
- 权限审计
攻击树模型
攻击树是一种图形化的威胁建模方法,以树状结构表示攻击路径:
攻击目标
/ \
子目标1 子目标2
/ \ / \
方法1 方法2 方法3 方法4
攻击树构建步骤
- 确定攻击目标:明确攻击者想要达成的最终目标
- 分解目标:将大目标分解为多个子目标
- 识别攻击方法:为实现每个子目标列出可能的攻击方法
- 分析成本效益:评估每种攻击方法的成本和成功率
- 确定防御措施:针对每种攻击方法设计相应的防御
攻击树优势
- 可视化:直观展示攻击路径和依赖关系
- 定量分析:可以计算攻击成本、时间和成功率
- 防御规划:帮助识别最有效的防御点
- 团队沟通:为安全团队提供共同的语言
DREAD 风险评估模型
DREAD是一种定量风险评估模型,包含五个维度:
1. 潜在损失(Damage Potential)
- 评分标准:0-10分
- 考虑因素:
- 数据丢失量
- 系统损坏程度
- 业务影响范围
- 恢复成本
2. 可复现性(Reproducibility)
- 评分标准:0-10分
- 考虑因素:
- 攻击难度
- 所需技术复杂度
- 特殊条件要求
- 成功概率
3. 可利用性(Exploitability)
- 评分标准:0-10分
- 考虑因素:
- 攻击者技能要求
- 所需工具
- 攻击步骤
- 检测难度
4. 受影响用户(Affected Users)
- 评分标准:0-10分
- 考虑因素:
- 受影响用户数量
- 用户权限级别
- 数据敏感性
- 业务重要性
5. 可发现性(Discoverability)
- 评分标准:0-10分
- 考虑因素:
- 漏洞暴露程度
- 信息泄露可能性
- 逆向工程难度
- 公开披露情况
风险计算
风险等级 = (潜在损失 + 可复现性 + 可利用性 + 受影响用户 + 可发现性) / 5
# 风险等级解释
# 0-3: 低风险
# 3-6: 中风险
# 6-10: 高风险PASTA 威胁建模流程
PASTA是一种七阶段威胁建模流程,更注重业务背景:
1. 定义业务目标
- 识别核心业务流程
- 确定关键资产
- 定义安全要求
- 明确合规要求
2. 定义技术范围
- 确定系统边界
- 列出技术组件
- 分析数据流
- 绘制架构图
3. 分解应用
- 创建数据流图
- 识别信任边界
- 分析数据存储
- 确定安全控制
4. 威胁分析
- 使用STRIDE等框架
- 识别潜在威胁
- 分析攻击路径
- 评估威胁可能性
5. 脆弱性分析
- 识别系统弱点
- 评估脆弱性严重性
- 确定利用可能性
- 分析脆弱性影响
6. 攻击建模
- 创建攻击场景
- 分析攻击技术
- 评估攻击可行性
- 确定攻击影响
7. 风险管理与分析
- 计算风险等级
- 确定风险优先级
- 制定缓解策略
- 实施控制措施
威胁建模最佳实践
1. 早期参与
- 在系统设计阶段开始威胁建模
- 让安全团队参与架构设计
- 将威胁建模作为开发流程的一部分
2. 多学科协作
- 包括开发、运维、安全、业务人员
- 鼓励不同视角的贡献
- 建立共同的安全语言
3. 定期更新
- 系统变更时更新威胁模型
- 定期审查威胁假设
- 关注新的攻击技术
4. 简单实用
- 避免过度复杂的模型
- 专注于高价值威胁
- 使用团队熟悉的工具和方法
5. 可操作性
- 确保威胁建模结果可执行
- 将威胁与具体缓解措施关联
- 跟踪缓解措施的执行情况
常见威胁建模工具
1. 微软威胁建模工具
- 图形化界面
- 自动STRIDE分析
- 报告生成
- 集成开发环境
2. OWASP Threat Dragon
- 开源工具
- 支持STRIDE模型
- 支持攻击树
- 导出多种格式
3. IriusRisk
- 企业级平台
- 支持多种模型
- 自动化流程
- 合规支持
4. SeaSponge
- Python命令行工具
- 简单易用
- 开源免费
- 可集成CI/CD
🔗 相关链接
最后更新:2025-01-26 维护规范:详见 笔记规范文档