CRA 风险评估:STRIDE 和攻击树

STRIDE 和攻击树,都是威胁建模里非常常用的方法,但侧重点不同。### 技术文章大纲:输入主题内容

引言
  • 简要介绍主题的背景和重要性
  • 说明文章的目标和结构
技术概述
  • 定义主题的核心概念
  • 列举相关的技术或工具
  • 分析当前行业中的应用场景
关键技术解析
  • 详细讲解主题涉及的核心技术
  • 提供技术实现的逻辑或流程
  • 展示示例代码或公式(如有)
实际应用案例
  • 列举1-2个典型应用场景
  • 分析案例中的技术实现细节
  • 讨论案例的成功因素或挑战
发展趋势与挑战
  • 探讨该主题的未来发展方向
  • 分析当前面临的技术或市场挑战
  • 提出可能的解决方案或改进建议
总结
  • 回顾文章的核心内容
  • 强调主题的重要性和潜在价值
  • 提供进一步学习的资源或建议
参考资料(可选)
  • 列出相关的书籍、论文或在线资源

STRIDE 是一种威胁分类法 ,最早由微软在 SDL / Threat Modeling 方法中系统化使用。它把常见安全威胁分成 6 类:

S = Spoofing(身份伪造)

T = Tampering(篡改)

R = Repudiation(抵赖)

I = Information Disclosure(信息泄露)

D = Denial of Service(拒绝服务)

E = Elevation of Privilege(权限提升)。微软的威胁建模工具和资料也明确是按这 6 类来枚举潜在威胁的。(微软学习)

攻击树 则是一种攻击路径表达法 。它把"攻击者的目标"放在树根,然后不断往下拆分成"要实现这个目标有哪些路径、前置条件、子步骤"。SEI 的资料把攻击树描述为:根节点代表攻击目标,叶子节点代表实现该目标的具体方式;它最初由 Bruce Schneier 在 1999 年提出,后来被广泛用于网络安全和系统安全建模。(sei.cmu.edu)

你可以把它们简单理解成:

  • STRIDE 回答的是:这属于哪一类威胁?
  • 攻击树回答的是:攻击者具体怎么一步步做到?

1. STRIDE 是什么

STRIDE 的核心价值是:不容易漏类

当你面对一个系统------比如 PLC、上位机、云平台、登录接口、下载通道------你可以逐个对象去问这 6 个问题,从而系统性地找威胁,而不是靠拍脑袋。微软的做法通常是先画 DFD(数据流图) ,标出进程、数据存储、外部实体、数据流和信任边界,再用 STRIDE 去枚举威胁。(微软学习)

STRIDE 六类,通俗解释

1)Spoofing:身份伪造

攻击者冒充别人。

典型问题:

  • 冒充合法用户登录
  • 冒充 PLC / 从站 / 工程师站
  • 伪造设备证书、会话、令牌、账号

2)Tampering:篡改

攻击者改数据、改报文、改配置、改程序。

典型问题:

  • 篡改下载到 PLC 的工程文件
  • 改配置参数、变量值、固件
  • 改通信报文内容

3)Repudiation:抵赖

做了事却无法追责。

典型问题:

  • 谁下载过程序、改过参数,没有日志
  • 操作记录不可审计、可删除、不可证明
  • 无法把"某次操作"关联到具体账号和时间

4)Information Disclosure:信息泄露

不该看到的人看到了。

典型问题:

  • 明文传输密码、配置、工艺参数
  • 日志里泄露密钥、令牌、敏感数据
  • 调试接口暴露设备信息

5)Denial of Service:拒绝服务

让系统不可用或显著降级。

典型问题:

  • 大量请求打挂服务
  • PLC / HMI / 网关资源耗尽
  • 非法报文导致通信阻塞、任务卡死

6)Elevation of Privilege:权限提升

攻击者从低权限变成高权限。

典型问题:

  • 普通操作员拿到管理员权限
  • 利用漏洞进入受限功能
  • 从应用层打到系统层 / 从访客打到工程模式

微软还给过一个很实用的指导思想:围绕系统中的资产、入口、身份边界、数据流和信任边界,逐类去问"这种威胁会不会发生"。(微软学习)


2. 攻击树是什么

攻击树适合把一个抽象威胁,拆成可推演、可分析、可评估 的攻击路径。

它的结构一般是:

  • 根节点:攻击目标
  • 中间节点:达成目标的子目标 / 阶段
  • 叶子节点:具体攻击动作、条件、利用点

并且常用 AND / OR 逻辑:

  • OR:多个路径里任意一个成功即可
  • AND:必须几个条件都满足才行

SEI 对攻击树的说明也是这个思路:根表示攻击目标,分支表示实现路径,叶子表示具体方法;它可以帮助系统化分析攻击方式,并进一步映射防护措施。(sei.cmu.edu)

一个简单例子

根目标:"未授权修改 PLC 程序"

往下拆:

  • 路径 A:盗用工程师账号

    • 获取密码
    • 绕过二次认证
    • 登录工程站
    • 下发程序
  • 路径 B:篡改下载链路

    • 进入工程网络
    • 劫持下载会话
    • 替换工程文件
    • 发送到 PLC
  • 路径 C:利用权限缺陷

    • 以低权限账户登录
    • 调用未鉴权下载接口
    • 越权写入程序

这个树一画出来,马上就能看出:

A 更偏 Spoofing / EoP

B 更偏 Tampering / Info Disclosure

C 更偏 Elevation of Privilege

这就是攻击树和 STRIDE 的互补关系。


3. 两者的核心区别

STRIDE

适合做"分类式枚举"。

优点:

  • 上手快
  • 结构化,不容易漏大类
  • 适合架构评审、设计阶段
  • 适合和 DFD、信任边界一起用

局限:

  • 它告诉你"有什么威胁类别",但不一定展开"攻击路径细节"
  • 对复杂多阶段攻击的表达能力一般

攻击树

适合做"路径式推演"。

优点:

  • 能看清攻击步骤、前置条件、组合逻辑
  • 适合深入分析高价值目标
  • 能用于评估攻击成本、概率、检测点、防御点

局限:

  • 容易画很大
  • 如果范围不控好,会无限展开
  • 不如 STRIDE 那样天然有"分类覆盖感"

OWASP 也明确指出:威胁建模没有唯一方法,STRIDE、攻击树、PASTA、OCTAVE 等都可以按场景组合使用。(OWASP Cheat Sheet Series)


4. 实际项目里怎么配合用

一个很实用的流程是:

第一步:画系统边界和数据流

先把系统画清楚:

  • 外部实体:工程师、运维、第三方系统、设备
  • 进程:组态软件、下载服务、认证服务
  • 数据存储:项目文件、日志、密钥库、设备配置
  • 数据流:登录、下载、参数同步、日志上传
  • 信任边界:PC ↔ PLC、内网 ↔ 外网、用户态 ↔ 管理员态

这是微软和 OWASP 在威胁建模流程里都很强调的起点。(微软学习)

第二步:用 STRIDE 做全面枚举

对每个对象问:

  • 会不会被伪造?
  • 会不会被篡改?
  • 能不能赖账?
  • 会不会泄露?
  • 能不能被打挂?
  • 会不会越权?

这样先把清单铺开。

第三步:挑重点威胁画攻击树

不是每个点都要画攻击树。

通常挑:

  • 高危资产
  • 高价值操作
  • 现实攻击面大的接口
  • 合规重点项

比如:

  • 未授权固件升级
  • 未授权下载工程
  • 远程提权
  • 日志不可追责
  • 网络服务被 DoS

第四步:把树叶映射成控制措施

每个叶子节点都问:

  • 预防措施是什么
  • 检测措施是什么
  • 响应措施是什么
  • 剩余风险是什么

这样才能从"分析"走到"设计改进"。


5. 一个工业控制 / PLC 场景下的例子

假设你的对象是:组态软件向 PLC 下载工程

先用 STRIDE 过一遍

S 伪造

  • 攻击者冒充工程师站
  • 冒充 PLC 接收/返回结果
  • 伪造会话 token / 账号

T 篡改

  • 篡改工程文件
  • 篡改下载报文
  • 篡改在线参数

R 抵赖

  • 谁发起了下载无法确认
  • 下载成功/失败没有可信日志
  • 日志可删除或可篡改

I 泄露

  • 工程文件、设备拓扑、口令明文暴露
  • 调试日志含敏感配置
  • 网络抓包可看到关键内容

D 拒绝服务

  • 持续连接占满 PLC 通道
  • 非法下载触发资源耗尽
  • 高频报文导致设备异常

E 权限提升

  • 普通账户可执行下载
  • 访客模式可访问调试接口
  • 本地服务漏洞导致管理员权限

再挑一个高风险点画攻击树

根目标:未授权下载工程到 PLC

OR 分支可以是:

  • A. 获取合法工程师身份

    • 钓鱼/弱口令/默认口令
    • 复用会话
    • 盗取令牌
  • B. 绕过鉴权

    • 下载接口未鉴权
    • 只校验前端,不校验服务端
    • 本地接口可被脚本直接调用
  • C. 篡改传输链路

    • 进入控制网络
    • 中间人攻击
    • 替换 payload
    • 伪造返回成功
  • D. 利用主机提权

    • 先攻陷工程师站
    • 提权到管理员
    • 读取本地凭据
    • 发起下载

这样一来,你不只是知道"有 Spoofing/Tampering/EoP 风险",而是能看到攻击者到底走哪几步


6. 什么时候用哪个

如果你现在在做:

架构设计评审 / 安全需求梳理

优先上 STRIDE。因为它覆盖快,适合做"全景扫描"。

对某个高风险功能深挖

优先上 攻击树。因为它能把攻击链拆细。

最稳的做法

STRIDE 找全,再对重点项画 攻击树


7. 容易混淆的点

STRIDE 不是风险评级法

它是分类法 ,不是 CVSS,也不是 DREAD。

它负责"识别威胁类型",不直接给你分数。(微软学习)

攻击树不是资产图

它不是系统结构图,也不是网络拓扑图。

它画的是"为了实现某个攻击目标,攻击者可能采取的路径"。

两者都不是最终交付物本身

真正落地时,你还需要:

  • 资产清单
  • 入口点清单
  • 信任边界
  • 安全控制项
  • 风险优先级
  • 缓解措施闭环

8. 你可以直接这样记

STRIDE:按类别找威胁。
攻击树:按路径拆攻击。

一句更工程化的话:

STRIDE 负责"广度覆盖",攻击树负责"深度展开"。


9. 如果你要做文档,推荐模板

你可以按这个格式写:

A. STRIDE 表

  • 资产/组件
  • 数据流
  • 信任边界
  • STRIDE 类别
  • 威胁描述
  • 影响
  • 现有控制
  • 建议措施

B. 攻击树表

  • 攻击目标(根节点)
  • 一级路径(OR)
  • 子步骤(AND/OR)
  • 前置条件
  • 利用难度
  • 检测点
  • 防护措施
  • 剩余风险

如果你愿意,我下一条可以直接给你一版**"面向 PLC/组态软件下载链路"的 STRIDE + 攻击树完整示例**,我会按你现在做的信息安全认证场景来写。

相关推荐
一袋米扛几楼981 天前
【网络安全】Splunk 是什么?
安全·web安全
一袋米扛几楼981 天前
【网络安全】SIEM -Security Information and Event Management 工具是什么?
前端·安全·web安全
上海云盾-小余1 天前
DDoS 攻击全解析:常见类型识别与分层防御思路
网络协议·tcp/ip·安全·ddos
www4391 天前
Vulinbox(敏感信息与敏感文件泄露)
安全
QYR_111 天前
2026塑料芯片卡产业全景:供应链成本结构与数字化安全趋势深度洞察
安全·市场调研
南湖北漠1 天前
记录生活中的那些小事(佚名)
网络·人工智能·计算机网络·其他·安全·生活
wal13145201 天前
OpenClaw v2026.4.8 发布:记忆系统重大升级 + 多项安全修复
人工智能·安全·openclaw
Dotrust东信创智1 天前
HIL测试赋能功能安全:VT系统工具链筑牢智能汽车安全底线
安全·汽车
FreeBuf_1 天前
Storm-1175黑客组织在漏洞披露24小时内部署Medusa勒索软件
安全·web安全·storm
黎阳之光1 天前
视频孪生领航者,以中国技术定义全球数智化新高度
大数据·人工智能·算法·安全·数字孪生