《物联网设备安全基线设定》
第2章 威胁建模入门

2、威胁建模入门:STRIDE模型、攻击树分析、物联网设备常见攻击面

威胁建模是物联网安全设计的起点。通过系统化的方法识别、量化并缓解潜在威胁,我们能够在设备生命周期的早期阶段植入安全基因。本节将深入讲解业界最经典的 STRIDE 模型、攻击树分析方法,并梳理物联网设备最常见的 六大攻击面。

2.1 STRIDE 威胁分类模型

STRIDE 是由微软提出的威胁分类框架,每个字母代表一类安全威胁。在物联网场景下,每一类威胁都有其独特的体现形式。

STRIDE 威胁分类模型 S 欺骗 (Spoofing) T 篡改 (Tampering) R 抵赖 (Repudiation) I 信息泄露 (Info Disclosure) D 拒绝服务 (DoS) E 权限提升 (Elevation) 每个威胁类别对应一组特定的缓解措施与安全控制 物联网场景示例 S: 伪造设备身份接入网关 | T: 篡改固件更新包 | R: 否认发送过控制指令
字母 威胁类型 物联网典型场景 安全控制建议
S 欺骗 (Spoofing) 伪造传感器身份向云端发送虚假数据 设备证书认证、双向TLS
T 篡改 (Tampering) 中间人攻击修改OTA固件包 代码签名、完整性校验
R 抵赖 (Repudiation) 攻击者否认发送过解锁指令 安全审计日志、数字签名
I 信息泄露 (Info Disclosure) 侧信道攻击提取加密密钥 物理安全防护、密钥隔离
D 拒绝服务 (DoS) 僵尸网络发起DDoS攻击 流量限速、异常检测
E 权限提升 (Elevation) 利用缓冲区溢出获取root权限 最小权限原则、ASLR

2.2 攻击树分析 (Attack Tree Analysis)

攻击树是一种以树状结构描述攻击路径的形式化方法。根节点代表攻击者的最终目标,子节点表示达成目标所需的不同步骤。通过攻击树,我们可以直观地识别出最脆弱的攻击路径。

控制智能门锁 OR: 物理攻击 OR: 网络攻击 OR: 侧信道攻击 撬锁 暴力破坏外壳 AND: 重放攻击 蓝牙漏洞利用 功耗分析 捕获蓝牙包 破解会话密钥 根目标 OR (任一) AND (全部) 叶子节点 (具体攻击)

攻击树分析步骤:

  1. 定义根目标:明确攻击者最终想达成的目的(如:获取设备控制权)。
  2. 分解子目标:使用 OR(任一途径)或 AND(全部途径)逻辑分解攻击步骤。
  3. 识别叶子节点:找到具体的攻击方法,如漏洞利用、物理接触等。
  4. 评估与量化:为每个叶子节点分配难度、成本、检测概率等指标。
  5. 确定最短路径:找出攻击者最可能利用的薄弱环节,优先加固。

2.3 物联网设备常见攻击面

物联网设备由于其资源受限、部署环境复杂、通信协议多样等特点,暴露出了独特的攻击面。以下是最常见的六大攻击面及其威胁描述。

物联网 设备 固件攻击面 逆向/签名绕过 通信协议 明文/重放攻击 Web管理接口 XSS/SQL注入 物理接口 JTAG/UART调试 云平台接口 API滥用/越权 移动端App 逆向/硬编码密钥
攻击面 风险描述 典型案例 安全基线要求
1. 固件 固件逆向分析、提取敏感信息、签名绕过 Mirai 僵尸网络利用默认密码 固件加密、安全启动、代码签名
2. 通信协议 明文传输、缺乏身份认证、重放攻击 Zigbee 密钥嗅探 TLS 1.3、双向认证、防重放机制
3. Web管理接口 XSS、CSRF、SQL注入、弱口令 路由器管理后台漏洞 输入验证、CSRF Token、强密码策略
4. 物理接口 JTAG/SWD调试接口暴露、UART无认证 通过UART获取root shell 禁用调试接口、熔丝位锁定
5. 云平台/后端 API未授权访问、数据泄露、设备劫持 AWS IoT 策略配置错误 最小权限IAM、API网关认证
6. 移动端App 硬编码密钥、不安全存储、逆向工程 App中硬编码云平台Token 代码混淆、密钥动态获取

2.4 实战:STRIDE + 攻击树联合分析

将 STRIDE 模型与攻击树结合使用,可以构建出更完整的威胁画像。以下以 智能摄像头 为例,展示联合分析的过程。

// 智能摄像头威胁建模示例(伪代码)
ThreatModel camera = new ThreatModel("智能摄像头");

// 使用 STRIDE 分类
camera.AddThreat(ThreatType.Spoofing, "伪造摄像头身份向NVR发送视频流");
camera.AddThreat(ThreatType.Tampering, "篡改视频帧插入虚假画面");
camera.AddThreat(ThreatType.Repudiation, "攻击者否认执行过云台转动操作");
camera.AddThreat(ThreatType.InfoDisclosure, "视频流明文泄露隐私");
camera.AddThreat(ThreatType.DoS, "发送大量连接请求耗尽设备资源");
camera.AddThreat(ThreatType.Elevation, "利用Web接口漏洞获取管理员权限");

// 构建攻击树(根目标:获取视频流)
AttackTree tree = new AttackTree("获取实时视频流");
tree.AddOrNode("网络嗅探", new List<string>{"Wi-Fi破解", "ARP欺骗"});
tree.AddAndNode("固件提取", new List<string>{"拆解设备", "连接UART", "读取Flash"});

// 输出分析报告
Console.WriteLine($"发现 {camera.Threats.Count} 个威胁,{tree.LeafNodes} 条攻击路径");

联合分析的价值:

  • 系统性:STRIDE 确保不遗漏任何威胁类别。
  • 可视化:攻击树让攻击路径一目了然。
  • 优先级排序:结合攻击难度与影响,确定加固顺序。
  • 文档化:为安全审计和合规检查提供完整记录。

💡 核心要点:威胁建模不是一次性的活动,而应贯穿设备开发的整个生命周期。建议在每个迭代周期结束时重新审视威胁模型,确保新功能引入的风险得到及时识别与缓解。