威胁建模
本文约需 2 分钟阅读
威胁建模是一种安全设计方法,在设计阶段系统性地梳理出系统或应用程序面临的潜在威胁,确定优先级并采取对策。通过结构化地分析「保护什么」「谁会攻击」「哪里薄弱」,可以大幅减少在开发后期才暴露的安全缺陷。在生产环境中发现漏洞后再修复的成本,据称是设计阶段的 30〜100 倍,因此威胁建模是性价比很高的预防措施。
历史背景
威胁建模的概念始于 1990 年代后期,由 Microsoft 将其作为公司内部安全开发流程 (SDL: Security Development Lifecycle) 的一环加以体系化。自 2002 年的「可信计算」(Trustworthy Computing) 宣言以来, Microsoft 将威胁建模作为 Windows 和 Office 开发的必经工序,并将其成果作为 STRIDE 模型公开。此后, OWASP 和 NIST 也分别将威胁建模纳入各自的框架,使其成为业界标准的设计方法。
STRIDE 模型
STRIDE 是 Microsoft 开发的威胁分类框架,由 6 种威胁类别的首字母组成。
欺骗。冒用他人的 ID 突破身份验证。
篡改。非法更改数据或通信内容。
否认。消除行为证据,否认曾经执行。
信息泄露。访问无权限的数据。
拒绝服务。使系统无法使用。
权限提升。非法获取更高的权限。
DREAD 评分
用 STRIDE 对威胁分类后,再用 DREAD 定量评估每个威胁的严重程度。对 Damage (危害程度)、 Reproducibility (可重现性)、 Exploitability (攻击难易度)、 Affected Users (受影响用户数)、 Discoverability (发现难易度) 这 5 个项目分别按 1〜10 评分,并以总分确定优先级。不过, DREAD 也被批评容易偏向主观评价, Microsoft 自身目前也推荐将其与 CVSS (Common Vulnerability Scoring System) 并用。
PASTA 框架
PASTA (Process for Attack Simulation and Threat Analysis) 是一个将业务风险与技术威胁进行综合分析的 7 阶段框架。从定义业务目标开始,依次进行技术范围确定、应用程序分解、威胁分析、漏洞分析、攻击模拟、风险与影响分析。 STRIDE 是面向技术人员的分类工具,而 PASTA 的特点在于可作为管理层与工程师之间的共通语言发挥作用。
数据流图与信任边界
跨越信任边界的数据流是威胁分析的重点
威胁建模的核心是数据流图 (DFD)。它可视化系统内的数据流向,并明确标示信任边界 (Trust Boundary)。信任边界是指安全级别不同的区域之间的分界线,例如互联网与企业内部网络之间的边界、应用层与数据库层之间的边界等。由于攻击面集中在这些信任边界上,因此需要针对每一条跨越边界的数据流逐一检讨 STRIDE 的各类威胁。
融入开发生命周期
威胁建模并非仅限于设计阶段的工作。在敏捷开发中,每个迭代都要评估新功能的威胁,并更新既有的威胁模型。将 SAST (静态分析) 和 DAST (动态分析) 纳入 CI/CD 流水线,自动验证威胁模型中识别出的风险是否在实现层面得到处理的做法也在普及。理想的循环是在威胁建模阶段规划纵深防御的设计,并通过红队演练验证其有效性。
现场使用案例
“在新支付功能的设计评审中实施 STRIDE 分析时,发现 API 的授权检查存在权限提升威胁。由于能在设计阶段修复,避免了若在实现后才发现时预计 400 万日元的修复成本。如今我们已将威胁建模列为所有功能设计的必备环节。”
关于组织安全体系的构建,请参阅创业公司安全检查清单;关于密码策略的设计,请参阅企业密码策略文章;关于勒索软件防护,请参阅勒索软件防护文章,均有详细说明。威胁建模专业书 (Amazon)也有助于改善设计流程。
这篇文章对您有帮助吗?