4. 医疗设备威胁建模

医疗设备的安全分析不能只靠“打补丁”和“看日志”。输液泵、监护仪、MRI 这类设备一旦被攻击,后果往往直接落在患者身上:输液泵可能被篡改流速,监护仪可能被伪造生命体征,MRI 可能因异常指令导致扫描中断甚至硬件损伤。威胁建模的价值,就是在设备上线前或改造前,把“谁会怎么攻击、攻击哪条路径、后果多严重”系统性地梳理出来。本节围绕 STRIDE、DREAD、攻击树和数据流图(DFD)四种方法,说明它们在医疗设备上的具体用法。

STRIDE:按威胁类型逐项排查

STRIDE 把威胁分为六类:仿冒(Spoofing)、篡改(Tampering)、否认(Repudiation)、信息泄露(Information Disclosure)、拒绝服务(Denial of Service)和权限提升(Elevation of Privilege)。在医疗设备上,它最适合用来做“逐接口、逐数据”的检查表。以输液泵为例,其典型资产包括:药液处方参数(药物、浓度、流速、VTBI)、泵门状态、报警记录、无线通信模块和固件。对每个资产问六个问题,就能得到一张威胁清单。

例如,处方参数从医院信息系统(HIS)经无线网络下发到泵,若通信未做双向认证,攻击者可仿冒 HIS 下发高浓度处方,这属于 Spoofing;若参数在传输中可被修改,属于 Tampering;若泵只记录“已执行”而不记录“谁下发”,事后无法追责,属于 Repudiation;若泵把患者姓名、药物信息明文广播,属于 Information Disclosure;若攻击者持续发送无效帧占满通信队列,导致正常处方无法下发,属于 DoS;若通过调试口获得 root 权限后修改报警阈值,属于 Elevation of Privilege。STRIDE 的产出不是“结论”,而是一组可验证的威胁条目,每条都要落到具体接口或数据上。

DREAD:给威胁排优先级

STRIDE 找出“有哪些威胁”,DREAD 则回答“先处理哪个”。DREAD 从五个维度打分:潜在损害(Damage)、可复现性(Reproducibility)、可利用性(Exploitability)、受影响用户范围(Affected users)和可发现性(Discoverability)。每项通常取 0~10 分,取平均或加权后排序。医疗场景中,损害维度应结合临床后果:直接导致给药错误的威胁,损害分应显著高于仅造成日志缺失的威胁。

以监护仪为例,假设发现三条威胁:A 为“伪造 SpO₂ 数值”,B 为“通过 USB 升级口植入固件”,C 为“报警日志可被删除”。按临床影响,A 的 Damage 可给 9,B 给 8,C 给 5;可复现性上,A 若只需重放报文则给 8,B 需要物理接触给 4,C 给 6;可利用性 A 给 7,B 给 5,C 给 4;受影响范围 A 覆盖整个病区给 8,B 单台给 3,C 单台给 3;可发现性 A 给 6,B 给 3,C 给 5。计算平均分:A=(9+8+7+8+6)/5=7.6,B=(8+4+5+3+3)/5=4.6,C=(5+6+4+3+5)/5=4.6。于是优先处理 A,B 和 C 可排后。需要说明的是,这些分值是基于示例场景的合理假设,实际项目应由临床、安全和运维人员共同打分,并保留打分依据。

数据流图:把设备放回系统里看

STRIDE 和 DREAD 都依赖一个前提:你知道数据从哪来、到哪去、经过哪些信任边界。数据流图正是用来表达这一点的。医疗设备很少孤立运行,输液泵通常连接输液管理系统的服务器、护士站终端和无线 AP;监护仪连接中央站;MRI 连接 PACS 和放射科工作站。DFD 用外部实体、处理过程、数据存储和数据流四类元素,把设备、接口和信任边界画清楚。

画 DFD 时,关键不是画得漂亮,而是标出“信任边界”。例如,输液泵的无线模块与主控之间、主控与电机驱动之间、调试口与固件之间,都是边界。跨边界的每一条数据流,都是 STRIDE 的检查对象。下面这张图给出一个输液泵的简化数据流与信任边界示意,同时把 STRIDE 的典型落点标在对应流上,便于把“威胁类型”和“系统位置”对应起来。

输液泵数据流图与 STRIDE 威胁落点(示例) HIS / 处方系统 外部实体 护士站终端 外部实体 维护调试口 外部实体 信任边界 A:无线通信区 无线通信模块 处理过程 处方参数缓存 数据存储 信任边界 B:主控与执行区 主控 MCU 处理过程 电机驱动 处理过程 报警/审计日志 数据存储 处方报文 确认/修改 解析后参数 下发处方 流速指令 事件写入 调试/固件升级 S / T / I 仿冒·篡改·泄露 D / R 拒绝服务·否认 E 权限提升 T / E 篡改·提权 R / I 否认·泄露

图中,信任边界 A 是无线通信区,边界 B 是主控与执行区。跨边界的“处方报文”“下发处方”“调试/固件升级”是重点检查对象。例如,处方报文若缺少完整性校验,对应 Tampering;调试口若未做认证,对应 Spoofing 和 Elevation of Privilege;日志若可被删除,对应 Repudiation。DFD 让 STRIDE 的检查不再悬空,而是落在具体的数据流上。

攻击树:从目标反推路径

攻击树适合回答“攻击者要达到某个目标,可能走哪些路”。根节点是攻击目标,子节点是达成目标的手段,叶节点是可执行的动作。以“篡改输液泵流速”为根,第一层可分为“篡改处方参数”“篡改电机控制”“篡改传感器反馈”三条路径。每条路径继续分解:篡改处方参数可细分为“仿冒 HIS 下发”“重放旧处方”“中间人修改报文”;篡改电机控制可细分为“通过调试口写入”“利用固件漏洞提权”“物理接入驱动线”。

攻击树的实用价值在于,它能把 DREAD 的评分对象从“抽象威胁”变成“具体路径”。例如,“通过调试口写入”这条路径,可利用性高、可复现性高,但需要物理接触,受影响范围小;而“仿冒 HIS 下发”可远程实施,受影响范围大,但需要突破网络认证。两条路径的 DREAD 得分不同,防护优先级也不同。攻击树还可以标注“已阻断”和“未阻断”,用于验证现有防护是否覆盖关键路径。

把四种方法串起来

实际项目中,四种方法不是并列关系,而是有先后和反馈的。先用 DFD 画出设备在系统中的位置和信任边界;再沿每条跨边界数据流做 STRIDE 排查,得到威胁清单;对清单中的每条威胁,用攻击树展开可能的攻击路径;最后用 DREAD 对路径打分,确定修复顺序。修复后,回到 DFD 和攻击树,确认边界是否收紧、路径是否被阻断。

在医疗设备场景中,DREAD 的 Damage 维度建议引入临床风险等级:直接影响给药、通气、除颤等治疗的威胁,应优先于仅影响日志或配置的威胁。评分时至少包含一名临床人员,避免纯 IT 视角低估后果。
威胁建模不是一次性文档。设备固件升级、新增无线接口、接入新 HIS 版本后,DFD 和攻击树都应更新,否则模型会迅速失效。

以监护仪为例,若其通过无线向中央站发送波形和报警,DFD 中应标出“监护仪—AP—中央站”的信任边界;STRIDE 会提示“报警报文可被篡改或重放”;攻击树可展开“伪造报警”“抑制报警”“篡改波形”三条路径;DREAD 则帮助判断“抑制报警”通常比“伪造波形”更危险,因为前者可能导致临床漏判。MRI 的威胁建模还要额外关注扫描序列参数、梯度线圈控制和患者体位数据,其 DFD 中的信任边界往往包括“MRI 控制台—序列服务器—PACS”。

最后需要强调,威胁建模的产出应可执行:每条威胁要有编号、资产、攻击路径、DREAD 分值、建议措施和验证方式。例如“T-03:调试口未认证,可写入电机参数,DREAD=7.2,措施为禁用调试口并加签固件,验证方式为尝试未签名固件升级应失败”。这样的条目才能进入研发和运维的整改流程,而不是停留在文档里。