游客发表
去年某三甲医院一台输液泵在凌晨两点突然把流速从5ml/h跳到120ml/h,医疗护士站没收到任何报警。器械事后查了三天,软件发现是漏洞软件里一个缓冲区溢出漏洞——设备联网更新参数时,攻击者能远程覆盖内存。评估这事没上新闻,报告但院内通报写得很清楚:漏洞等级“严重”,模板CVSS评分9.1。医疗写这份评估报告,器械就是软件为了不让下一个凌晨出事。
别急着扫漏洞。医疗器械软件分三类:独立软件(比如AI辅助诊断系统)、报告软件组件(嵌入在CT机里的模板控制固件)、以及现在越来越多的医疗移动端App(患者自己下载那种)。三类东西的攻击面完全不同。独立软件怕的是数据泄露和算法篡改,软件组件怕的是实时性破坏——你让呼吸机延迟10毫秒响应,人就没了。App反而简单些,但隐私合规能把你烦死。
我见过一份报告把CT重建软件的漏洞按“Web应用安全”那套来评,结果漏了DICOM协议里的一个畸形包解析问题。所以第一步:把软件边界画清楚。它跑在什么硬件上?跟哪些外部系统通信?有没有无线模块?画完拓扑图再动手。
用Nessus或OpenVAS扫一遍,能出几百条结果。但医疗器械软件有个麻烦:很多跑在Windows XP或旧版Linux上,系统补丁根本打不了——厂商说“认证没通过”。这时候你得手动判断:这个CVE在设备当前配置下能不能触发?比如一个需要本地管理员权限的提权漏洞,而设备物理接口锁在机柜里,那风险就降级。
更实际的做法是:先做威胁建模。STRIDE那套可以用,但别照搬。对输液泵,重点看“篡改”和“拒绝服务”;对影像归档系统,看“信息泄露”和“仿冒”。我习惯拿一张纸,左边写攻击路径,右边写现有控制措施,中间画个叉表示缺口。比填表格快。
第一,漏洞的可利用性。别只写“存在缓冲区溢出”。要写:攻击者需要物理接触还是网络可达?需不需要认证?利用复杂度高不高?举个例子,某款监护仪中央站有个硬编码密码,写在固件里,谁都能从官网下载固件解出来。这种就是“低复杂度、网络可达、无需认证”——必须立刻修。
第二,对患者安全的直接影响。这是医疗器械报告跟普通IT报告最大的区别。一个SQL注入漏洞在电商网站是“高危”,在CT工作站上如果只影响日志查询,那可能只是“中危”。但如果能通过注入篡改剂量计算参数,直接标“紧急”。我一般会加一栏“临床场景”,写清楚:如果漏洞被利用,医生看到的影像会不会被修改?设备会不会输出错误报警?
第三,缓解措施的可操作性。别写“建议升级到最新版本”——很多设备根本不能随便升级。要写:能不能在网络层加防火墙规则?能不能关闭某个端口?能不能在物理上禁用USB口?我见过最实在的一条缓解措施是:“用环氧树脂封死调试接口”。粗暴,但有效。
不用搞几十页。一页封面(设备名称、软件版本、评估日期、评估人),一页漏洞清单(ID、描述、CVSS、临床影响、缓解措施),一页攻击路径图,最后一页签字栏。完事。重点是漏洞清单里每一条都要有“证据”——抓包截图、日志片段、或者反编译出来的代码行。没证据的条目直接删掉,别凑数。
最后说个实在话:这份报告不是给审计看的,是给工程师和临床医生看的。他们没时间读八股文。你写“该漏洞可能导致设备不可用”,不如写“攻击者发一个特定UDP包,输液泵会重启,重启期间流速归零”。越具体,越有人改。
友情链接