2021 Owasp top 10 逐个击破--A04:2021 – Insecure Design
字数 2551
更新时间 2025-08-12 12:46:02

OWASP Top 10 2021: A04 - 不安全设计 (Insecure Design) 深度解析与防御指南

1. 概述与定义

不安全设计(Insecure Design)是OWASP Top 10 2021中新增的类别,关注与设计和架构缺陷相关的风险。这一类别强调在设计阶段就需要考虑安全因素,而非仅仅在编码阶段。

关键特征

  • 代表"缺失或无效的控制设计"
  • 不同于实现缺陷,设计缺陷无法通过完美的实现来修复
  • 根源在于缺乏业务风险分析和安全设计原则

相关CWE

  • CWE-209: 生成包含敏感信息的错误消息
  • CWE-256: 凭据的无保护存储
  • CWE-501: 违反信任边界
  • CWE-522: 保护不足的凭据

2. 不安全设计与实现缺陷的区别

特征 不安全设计 实现缺陷
根源 设计阶段的安全控制缺失 编码阶段的错误实现
修复方式 需要重新设计架构 可通过代码修复
影响范围 整个系统或功能模块 特定功能点
示例 密码恢复使用安全问题 SQL注入漏洞

3. 导致不安全设计的核心因素

  1. 缺乏业务风险分析:未评估数据资产和业务逻辑的保护需求
  2. 安全需求不明确:未定义功能性/非功能性安全要求
  3. 预算规划不足:未包含安全设计、测试活动的预算
  4. 威胁建模缺失:未在早期识别潜在威胁
  5. 安全模式未采用:未使用已验证的安全设计模式

4. 安全设计方法论

4.1 安全设计原则

  • 持续评估:不断评估威胁并确保设计抵御已知攻击
  • 威胁建模集成:将安全分析融入开发会议和用户故事
  • 流程验证:分析预期流和失败流的假设条件
  • 知识管理:从错误中学习并建立改进机制

4.2 安全开发生命周期(SDL)

  1. 早期介入:项目启动阶段就引入安全专家
  2. 模式重用:采用安全设计模式和已验证组件库
  3. 工具支持:使用威胁建模工具和安全测试工具
  4. 成熟度模型:参考OWASP SAMM(软件保证成熟度模型)

5. 预防措施

  1. 建立安全SDL:与AppSec专业人员合作设计安全控制
  2. 采用安全模式:使用预验证的安全设计模式和组件库
  3. 关键流程建模:对身份验证、访问控制等核心功能进行威胁建模
  4. 用户故事集成:在用户情景中明确安全语言和控件
  5. 分层合理性检查:从前端到后端实施一致性验证
  6. 测试验证:编写单元/集成测试验证威胁抵抗能力
  7. 租户隔离:根据暴露程度实施充分的多租户隔离
  8. 资源限制:限制用户/服务的资源消耗

6. 攻击场景分析

场景1:不安全的密码恢复设计

  • 问题:使用"安全问题"作为凭证恢复机制
  • 风险:答案可能被他人知晓或社工获取
  • 合规冲突:违反NIST 800-63b和OWASP ASV标准
  • 解决方案:替换为多因素认证等更安全的设计

场景2:影院预订系统滥用

  • 漏洞:允许无限制的团体预订
  • 攻击:通过多次请求预订大量座位(如600个)
  • 影响:造成收入损失和资源浪费
  • 修复:引入预订频率限制和押金机制

场景3:电商防机器人缺失

  • 问题:未防止机器人抢购高价商品(如显卡)
  • 影响:正常用户无法购买,品牌声誉受损
  • 解决方案:实施防机器人设计和购买频率限制

7. 威胁建模详解

7.1 基本流程

  1. 分解应用:了解应用结构及外部交互
  2. 识别威胁:确定潜在安全问题
  3. 对策制定:设计缓解措施
  4. 威胁排序:按风险程度优先处理

7.2 关键技术

数据流程图(DFD)

  • 可视化展示数据流动和变更点
  • 重点标识信任边界:需要数据验证的关键点
  • 示例:在线银行应用的DFD展示用户请求如何流经系统

过程流程图

  • 比DFD更精简
  • 聚焦用户和代码在系统中的移动路径
  • 更贴近攻击者思维方式

攻击树

  • 由Bruce Schneier提出
  • 树状结构展示攻击路径
  • 根节点=总体攻击目标
  • 子节点=达成目标的必要条件
  • 示例:银行应用文件感染的不同路径

7.3 主流威胁建模方法

1. STRIDE模型

Microsoft开发的经典模型,覆盖6类威胁:

威胁类型 安全属性 定义 示例
仿冒(S) 认证 冒充身份 冒充其他用户
篡改(T) 完整性 修改数据/代码 修改订单信息
抵赖(R) 审计 否认行为 否认修改操作
信息泄露(I) 保密性 数据泄露 用户信息泄露
拒绝服务(D) 可用性 资源耗尽 DDoS攻击
权限提升(E) 授权 越权访问 普通用户提权

2. DREAD模型

威胁评分方法,每个维度1-3分:

  1. Damage:潜在损害
  2. Reproducibility:可复现性
  3. Exploitability:利用难度
  4. Affected users:影响用户范围
  5. Discoverability:可发现性

3. PASTA方法

7阶段攻击模拟与威胁分析:

  1. 定义目标
  2. 定义技术范围
  3. 应用分解
  4. 威胁分析
  5. 漏洞识别
  6. 攻击建模
  7. 风险分析

8. 实践工具推荐

  • Visual Paradigm:在线DFD工具,提供银行应用等模板
    • 链接:https://online.visual-paradigm.com/cn/diagrams/templates/threat-model-diagram/data-flow-diagram-online-banking-application/
  • OWASP Threat Dragon:开源威胁建模工具
  • Microsoft Threat Modeling Tool:STRIDE专用工具

9. 总结与最佳实践

  1. 安全左移:在设计和需求阶段就引入安全考虑
  2. 文化转变:将安全设计视为开发文化而非附加项
  3. 模式重用:建立并使用安全设计模式库
  4. 持续评估:在每次架构变更时重新评估威胁
  5. 跨职能协作:开发、安全、业务团队共同参与设计

关键认识:不安全设计一旦投入生产,修复成本极高,最佳策略是通过威胁建模和安全设计模式在前期预防。

相似文章
相似文章
 全屏