
68 | 第
2
章
物联网设备 控制服务 数据库
获取状态请求
获取状态请求
返回状态
重置状态
返回状态
时间流逝
图 2-1:显示 TOCTOU 的样本序列图
你能发现问题所在吗?
注 51
2.2.2 你不应该期待的发现
系统模型是系统及其属性的抽象或近似。威胁建模最好“尽早而频繁地”完成,
并且主要集中在系统的架构和设计方面。由于语言限制、嵌入式组件或开发者
的选择,导致通过这个练习,你无法发现关键问题是由于实现的缺陷导致的。
例如,虽然可以知道你使用了正确的加密形式来保护敏感资产,但在设计时很
难知道在密钥生成过程中是否正确地植入了随机数生成器。你可以预测可能会
存在一个值得关注的原因,并且可以模拟实际中播种不佳所带来的影响,但是
此时你的发现是理论性的,因此不一定具备可操作性
注 6
。同样,你可能从模型
中知道某个特定功能是用一种难以保证内存安全的语言编写的(例如,C 语 言 ),
但是将很难知道你的 200 个 API 中,其中 3 个具有可远程利用的基于堆栈的缓
冲区溢出漏洞。你应该注意不要成为组织中“哭泣的狼(https://oreil.ly/fVc3L)”
的人,而应该专注于可执行和可防护的结果。
2
2.3 威胁情报收集
预测哪些特定的行为者可能想要攻击你的系统,利用你已经识别的漏洞来访问
注 5 : 答案:控制服务过早从数据库中获取控制状态变量,并没有更新其本地副本,导致在请求状态变
量时返回错误值给设备。
注 6: 第 5 章中提出的持续威胁建模(CTM)为这个难题提供了一个潜在的解决方案。