4. 网络威胁基础
在机器人网络安全中,很多讨论之所以会“越聊越乱”,是因为把几个相邻概念混用了:威胁、脆弱性、风险、攻击面、攻击链、STRIDE、DREAD。它们不是同义词,而是从“谁可能伤害系统”到“伤害如何发生”再到“伤害有多严重、先修哪里”的一条完整分析链。理解这条链,才能把机器人系统的安全评估从经验判断变成可复用的工程方法。
一、核心概念:从威胁到风险的因果链
威胁(Threat)是指可能对机器人系统造成损害的潜在主体或事件,例如恶意攻击者、勒索软件、内部人员误操作、供应链投毒、物理接触攻击等。威胁回答的是“谁或什么可能造成伤害”。
脆弱性(Vulnerability)是系统自身存在的弱点,例如未加密的调试接口、默认口令、未签名固件、ROS 2 DDS 未启用安全发现、过度开放的 CAN 总线、缺乏输入校验的视觉模型接口等。脆弱性回答的是“系统哪里容易被突破”。
风险(Risk)是威胁利用脆弱性造成损害的可能性和影响程度的组合。通常可表达为:风险 = 威胁 × 脆弱性 × 影响。风险回答的是“这件事有多值得优先处理”。
攻击面(Attack Surface)是所有可被攻击者利用的入口、接口、数据流、权限路径和物理接触点的总和。机器人系统的攻击面通常横跨云平台、ROS 2 网络、传感器、执行器、OTA 升级、移动 App、Wi-Fi/蓝牙、USB 调试口和第三方库。攻击面回答的是“攻击者可以从哪里进来”。
攻击链(Attack Chain / Kill Chain)描述攻击从侦察到达成目标的阶段化过程。在机器人场景中,常见路径是:侦察发现 ROS 2 话题 → 利用未授权发布注入速度指令 → 横向移动到导航节点 → 篡改地图或路径 → 造成物理碰撞或停摆。攻击链回答的是“攻击如何一步步发生”。
一句话串联:威胁是“敌人”,脆弱性是“门锁坏了”,攻击面是“所有门窗和通道”,攻击链是“敌人如何进门并走到保险柜”,风险是“损失有多大”,STRIDE 是“逐类检查威胁”,DREAD 是“给风险打分排序”。
二、方法流程:如何用 STRIDE 与 DREAD 做机器人威胁建模
STRIDE 是微软提出的威胁分类框架,适合在系统设计阶段逐项检查。对机器人系统而言,可以按数据流图逐个元素套用:
- Spoofing 仿冒:攻击者伪造机器人节点身份,向控制话题发布伪造位姿。
- Tampering 篡改:篡改固件、地图文件、模型权重或 CAN 报文。
- Repudiation 抵赖:操作员否认曾下发危险指令,日志缺失导致无法追责。
- Information Disclosure 信息泄露:激光雷达点云、摄像头画面、Wi-Fi 凭据被窃取。
- Denial of Service 拒绝服务:洪泛 DDS 发现流量,使导航节点无法通信。
- Elevation of Privilege 权限提升:从普通 ROS 2 节点提升到 root,进而控制执行器。
DREAD 则用于对已识别威胁打分。每个维度可按 1~3 或 1~10 评分,最后求平均或加权求和,得到风险优先级。机器人场景中,Damage Potential 往往权重最高,因为一旦涉及物理运动,后果可能是人身伤害或设备损毁。
示例:ROS 2 话题未授权发布速度指令
D 潜在损害:3(可导致碰撞)
R 可复现性:3(工具成熟,易复现)
E 可利用性:2(需在同一 DDS 域)
A 受影响用户:2(单台机器人)
D 可发现性:3(话题默认可见)
DREAD 平均分 = (3+3+2+2+3)/5 = 2.6 → 高优先级
三、案例场景:从攻击面到攻击链的完整推演
假设一台移动机器人通过 Wi-Fi 接入 ROS 2 网络,使用默认 DDS 配置,调试口未关闭,OTA 升级包未做签名校验。攻击者进入同一网段后:
- 侦察:扫描发现 ROS 2 发现协议和
/cmd_vel话题。 - 初始访问:利用未授权发布权限,向
/cmd_vel注入速度指令。 - 横向移动:通过调试口读取节点参数,找到导航与地图服务。
- 目标达成:篡改地图或路径,使机器人驶入危险区域。
在这个案例中,攻击面是 Wi-Fi、DDS 话题、调试口和 OTA 通道;脆弱性是默认配置、未授权发布、未签名升级;威胁是外部攻击者;攻击链是上述四步;风险是物理碰撞与停摆;STRIDE 可覆盖仿冒、篡改、拒绝服务和权限提升;DREAD 则帮助判断“先修 DDS 授权还是先修 OTA 签名”。
四、误区与复盘:不要把风险等同于漏洞数量
常见误区一:把“漏洞扫描结果多”直接当成“风险高”。实际上,一个位于隔离网段、无物理影响的低危漏洞,风险可能低于一个可远程触发急停的配置缺陷。
常见误区二:只做 STRIDE 不做 DREAD。STRIDE 能找全类型,但不排序,团队容易陷入“什么都重要”的瘫痪状态。
常见误区三:忽略攻击面中的物理与供应链维度。机器人不是纯软件系统,USB、调试口、传感器欺骗、第三方模型和固件供应链都属于攻击面。
| 概念 | 回答的问题 | 机器人场景示例 | 输出形式 |
|---|---|---|---|
| 威胁 | 谁可能造成伤害 | 外部攻击者、恶意内部人员、供应链投毒 | 威胁清单 |
| 脆弱性 | 系统哪里弱 | 默认口令、未签名固件、DDS 未加密 | 弱点列表 |
| 攻击面 | 从哪里能进来 | ROS 2 话题、OTA、Wi-Fi、USB、CAN | 攻击面地图 |
| 攻击链 | 攻击如何一步步发生 | 侦察 → 注入 → 横向 → 物理影响 | 攻击路径图 |
| 风险 | 有多严重、多优先 | 碰撞、停摆、数据泄露、人身伤害 | 风险矩阵 |
| STRIDE | 有哪些威胁类型 | 仿冒节点、篡改地图、拒绝服务 | 分类检查表 |
| DREAD | 先修哪一个 | 对速度指令注入进行评分排序 | 评分与优先级 |
复盘建议:每次威胁建模后,至少输出三样东西——一张攻击面清单、一张 STRIDE 威胁表、一张 DREAD 优先级排序。三者结合,才能把“概念”转化为机器人安全团队可执行的修复计划。