随着全球老龄化的加速,中国医疗器械行业迎来了前所未有的发展机遇。预计到2025年,65岁及以上的老年人口将超过2.2亿,随着年龄的增长其各种慢性病发病率上升,如心脏病、糖尿病等老年基础疾病,而心脏起搏器、支架、胰岛素智能泵等治疗设备需求的持续增长对医疗器械的需求将大幅增加。老龄化和慢性病的双重影响促进了医疗器械市场的发展,但也带来了更激烈的竞争和技术创新压力。
比如笔者的二叔就患有二型糖尿病,所以笔者一直关注着医疗器械的发展,笔者相信随着科技的发展,那种智能的注射胰岛素内置针和泵一定会出现。因为技术门槛不高,而且可以解决患者频繁扎针的痛苦,最近国外推出了多款通过APP控制的IoT胰岛素注射设备,通过手机可以控制每日的注射量,这样大大地方便了患者,但是从安全角度,患者的数据也有可能因此造成泄露,设备同时也会存在遭受网络攻击被恶意控制造成安全风险。
胰岛素泵和内置针
为确保IoT医疗器械的安全性,中国制定了《医疗器械监督管理条例》(CFDA)规范医疗器械的安全性,但是里面未对医疗器械网络安全相关标准做出详细指示,都是较为宽泛的概念,比如:
相比之下,美国FDA出具的Guidance Device Cybersecurit Premarket 更加详细且具体,比如:
本文以某品牌远程医疗摄像头为例,结合相关测试要求,深入分析FDA标准如何保障IoT医疗器械的安全性,并探讨这些标准是否能够全面覆盖设备的安全问题。
美国食品药品监督管理局(FDA)
FDA是Food and Drug Administration的缩写,即美国食品药品监督管理局,它是美国联邦政府的一个机构,隶属于 美国卫生与公共服务部(HHS),负责监管食品、药品、医疗器械、化妆品、烟草制品以及动物食品和药品等的安全性和有效性。FDA推出了各类医疗器械相关的标准,其中一部分标准是专门针对医疗器械的网络安全要求,具体可参见《Cybersecurity in Medical Devices: Quality System Considerations and Content of Premarket Submissions》https://www.fda.gov/media/119933/download。
在该标准中,FDA针对医疗器械的网络安全要求制定了一系列规范,涵盖了多个方面的安全要求,分别包括:性能测试、威胁建模测试、已知漏洞测试、渗透测试等。
具体来说,FDA强调在医疗设备设计过程中必须进行白盒测试,并通过源代码审计其设计源代码、SCA组件分析和安全功能测试,包括验证身份验证、数据加密、安全操作及配置等功能。
此外,FDA要求进行性能和可扩展性测试,以确保设备在高负载下能安全稳定运行。对于设备的网络安全,FDA还要求进行异常输入测试、漏洞扫描和动态安全测试,检测设备在面对攻击或异常输入时的反应。同时,FDA还注重设备对第三方服务(如云服务)的依赖,要求对这些服务的安全性进行评估和监控。
除此之外,FDA还强调渗透测试和威胁建模,模拟攻击和分析潜在漏洞,确保设备在实际使用过程中具备足够的防护能力。
测评要求 | 整理项名称 | 测评方法 |
a).安全要求的功能测试 | 1.验证身份验证和授权功能 2.数据加密验证 3.安全操作确认 4.安全配置验证 | |
b). 性能和可扩展性测试 | 1.性能测试 2.压力测试 3.可扩展性测试 | |
5.7.1性能测试 | c). 压力测试及异常输入的安全性影响测试 | 1.异常输入测试 2.错误处理验证 |
d). 测试健康软件依赖的第三方服务(如云服务、SaaS、IaaS、PaaS) | 1.第三方接口测试 2.供应商安全评估 3.依赖服务的监控与审计 4.合约和责任评审 | |
a). 测试缓解措施是否按预期运行 | 建立威胁建模 | |
b). 尝试绕过缓解措施 | 通过模拟攻击 1.绕过身份验证 2.绕过访问控制 3.测试加密的有效性 4.绕过防火墙或IDS | |
5.7.2威胁建模测试 | c). 确保缓解措施不引入新漏洞 | 缓解措施或安全控制 1.回归测试 2.代码审查 3.依赖性测试 |
d). 测试健康软件依赖的第三方服务(如云服务、SaaS、IaaS、PaaS) | 验证健康软件使用的第三方服务的安全性 1.第三方服务安全评估 2.接口测试 3.服务级别协议(SLA)审查 4.监控和审计 | |
a). 针对异常或意外输入的滥用案例测试 | 说明:识别系统内外的所有进入和退出路径,检测常见漏洞,例如: 弱访问控制列表(ACLs); 暴露端口; 具有高权限运行的服务。 | |
b). 攻击面测试 | 说明:对硬件、主机、接口或软件项目进行已知漏洞扫描。 示例:网络漏洞扫描工具检测设备和服务中的已知漏洞。 | |
5.7.3已知漏洞测试 | c). 闭箱已知漏洞扫描 | 说明:对硬件、主机、接口或软件项目进行已知漏洞扫描。 示例:网络漏洞扫描工具检测设备和服务中的已知漏洞。 |
d). 软件成分分析 | 说明:分析所有二进制可执行文件(包括嵌入式固件),特别是第三方供应商提供的软件,检测以下问题: 已知软件漏洞; 依赖的库中存在漏洞; 违反安全规则; 编译器设置导致的漏洞; 软件清单(SBOM)与实际软件的差异。 工具:可以自动生成软件包列表,进行成分分析。 | |
e). 动态安全测试 | 说明:使用动态测试工具发现静态代码分析无法识别的缺陷,例如: 内存泄漏; 运行时资源未释放(如句柄); 未经认证访问共享内存; 拒绝服务(DoS)条件。 示例:模糊测试工具用于动态环境下的漏洞检测。 | |
B 5.7.4 渗透测试 | 人工破坏防御深度(Defense-in-Depth)设计,验证系统的安全漏洞 | 结合自动化工具与手动操作; 利用多个漏洞(链式漏洞)进行攻击; 从漏洞扫描和其他测试中获取信息,制定手动攻击场景。 |
医疗设备性能测试
对IoT医疗设备的性能评估主要涵盖安全功能、性能表现、异常处理以及对第三方服务的依赖等方面。通过设计详细的测试用例和自动化工具和手动测试相结合的方式,来评估其在IoT设备和三方服务,测试其接口在不同负载下的性能表现、极限压力下的稳定性以及异常输入时的处理能力。最终,通过测试报告详细记录测试结果,分析潜在问题并提出改进建议,其报告是作为评估项是否通过FDA的依据。
首先,在性能测试之前需要了解其测试对象IoT设备网络架构。
第一种情况:单独的IoT设备,如简单的PLC设备或者单机设备,这种设备没有网络的存在,只有特定的条件触发其PLC中的简单逻辑而执行某个操作的设备,比如烟雾报警、电子温湿度计等,该情况一般不需要进行网络层面的性能测试,故也是上图的第一种情况单独IoT设备。
第二种情况:IoT设备+蓝牙或者其他短协议程App(蓝牙、MQTT 或 Modbus协议),此时就需要对其使用的协议、IoT设备、终端设备/App进行性能测试,故也是上图的第二种情况IoT设备+终端。
对应的性能测试项包括:
测试项 | IoT设备性能测试 | 终端/app性能测试 |
连接稳定性 | 稳点运行(避免频繁掉线。)7*24不间断 | 稳点运行(避免频繁掉线。) |
数据传输延迟 | 消息传输延迟测试 | 消息传输延迟测试 |
最大并发量 | 测试APP或终端设备能够同时处理多少个连接。 | 测试APP或终端设备能够同时处理多少个连接。 |
吞吐量 | 测试单位时间内消息传输数量,响应测试 | 测试单位时间内消息传输数量,接收测试 |
物理资源使用 | 接口压力测试 | 接口压力测试 |
第三种情况:IoT设备+蓝牙或者其他短协议程App(蓝牙、MQTT 或 Modbus协议)+第三方服务器和数据库,此时就需要对其使用的协议、IoT设备、终端设备/App、以及对其第三方的云服务进行性能测试,故是上图的第三种情况IoT设备+终端+第三方云服务的完整架构。
对应的性能测试项包括:
测试项 | IoT设备性能测试 | 终端设备/APP | 第三方服务器/云服务 |
连接稳定性 | 测试设备与终端(蓝牙、MQTT、Modbus)连接的稳定性。传输稳定7*24不间断 | 稳点运行(避免频繁掉线。) | 稳点运行(避免频繁掉线。) |
数据传输延迟 | 测量从设备到终端的通信延迟(尤其是蓝牙、MQTT)。 | 测量终端到云端或第三方服务器的数据传输延迟。 | 测量数据从终端/设备到云服务的传输时间。 |
最大并发量 | 测试设备能够同时处理的并发连接数量。 | 测试APP或终端设备能够同时处理多少个连接。 | 测试服务器能承受的最大并发请求量,尤其在高负载条件下。 |
吞吐量 | 测试单位时间内数据传输的最大速率。 | 测试单位时间内消息传输数量,响应测试 | 测试单位时间内消息传输数量,接收测试 |
物理资源使用 | 接口压力测试 | 不测试 | 接口压力测试 |
网络错误恢复能力 | 测试设备在网络中断后的恢复能力。 | 测试APP在设备重连或网络恢复后是否能及时恢复连接。 | 测试云服务在系统故障、设备重连等情况后的恢复能力。 |
网络响应时间 | 测试设备响应终端设备或外部系统的时间。 | 测试APP响应用户输入或设备指令的速度。 | 测试服务器在接收到请求后处理和返回数据的响应时间。 |
测试项1:Jmeter连接稳定性测试
测试项2:Xmeter MQTT数据传输延迟
测试项3:最大并发量
测试项4:网络响应时间
那么增加性能测试真的可以增加IoT医疗设备的安全性吗?
就比如为确保设备是否会在高负载,如遭受拒绝服务(DoS)攻击而宕机,这时候就需要对其进行高负载测试时,通过模拟大量设备或请求对IoT设备进行压测,可以识别系统在高流量下的瓶颈。如果设备的处理能力在高并发下出现崩溃或变得不可用,如果这些规则被攻击者获知,攻击者可以通过网络对其患者的IoT医疗设备进行DoS攻击造成宕机,想想如果是胰岛素泵、心脏起搏器这类型重要的维生的设备遭受破坏,后果是非常严重的。
威胁建模测试
无论是互联网还是IoT设备都存在着攻击面,攻击面指的是设备通过输入源受到破坏的多种方式。该输入源可以通过硬件、软件或无线方式。一般来说,设备包含的攻击面越多,泄露的可能性越高。攻击面是物联网设备的入口点。有时,物联网设备或应用一般被设计信任这些入口点。发现的每个攻击面都有相关的风险、可能性和影响。本质上,攻击面是一种威胁,可能会对设备造成负面影响,从而执行非预期的操作。如果想发现每个攻击面,就必须在进行测试或编写软件之前,需要考虑理论用例。该操作称为威胁建模,但是一般会形成文档化管理,在软件需求和研发实际过程中安装实际情况去定制修改。
威胁建模(Threat Modeling)是安全测试和风险管理的重要组成部分,它通过识别系统中的潜在威胁和漏洞,帮助开发团队在早期发现并应对安全风险,从而有效减少漏洞引发的安全事件。通过对系统架构、组件及其交互的深入分析,威胁建模可以揭示出系统可能面临的各种攻击面,评估现有安全控制措施的有效性,并确保缓解措施不会引入新的漏洞。同时,它还帮助验证第三方服务和依赖关系的安全性,确保软件产品在部署和运行中的安全性。威胁建模为开发、运营和安全团队提供了一个系统的安全分析框架,有助于提高整体的安全性和可靠性。
换种说法,威胁建模其实是一种威胁预警,就像我看到天气阴沉时,会考虑到下雨,从而带伞。而带伞这一行为,实际上是因为我是步行出门而不是开车,这个客观因素决定的。随着业务的拓展和功能的复杂性增加,软件会有更多的攻击面,这就好比,原本打算下雨时开车出门的,结果变成只能步行临时客观条件。因此,威胁建模就是根据已知的情境对未来可能发生的威胁做出预判。
以下是笔者根据上述的三种医疗器械的架构情况,并根据FDA的安全标准制作的威胁建模表:
威胁类型 | 损伤可能性 | 复现 | 可利用性 | 影响范围 | 易发现度 | 风险等级 |
身份欺骗 | 可以颠覆所有安全控制,获得完全信任,接管整个物联网生态系统。 | 攻击总是可以复制的。 | 新手攻击者可以执行此攻击。 | 所有用户、默认配置、所有设备。 | 在出版物中很容易找到攻击说明。 | 高 |
数据被篡改 | 可以颠覆所有安全控制,获取敏感数据或更改系统配置。 | 攻击总是可以复制的。 | 熟练的攻击者可以反复进行攻击。 | 影响某些用户、某些设备和自定义配置。 | 影响一个很少使用的功能,攻击者需要非常有创意才能发现该功能的恶意使用。 | 中 |
拒绝服务 | 可能泄露敏感信息。 | 攻击只能在定时窗口或特定条件下再现。 | 熟练的攻击者可以反复进行攻击。 | 影响某些用户、某些设备和自定义配置。 | 不清楚,攻击者不太可能发现利用该漏洞的方法。 | 中 |
信息泄露 | 可能泄露敏感信息 | 即使有关于漏洞的具体信息,也很难重现攻击。 | 允许具有深入知识的熟练攻击者执行攻击。 | 通过模糊功能影响一小部分用户和/或设备。 | 不清楚,攻击者不太可能发现利用该漏洞的方法。 | 高 |
特权提升 | 可以颠覆所有安全控制,获得完全信任,接管整个物联网生态系统。 | 攻击总是可以复制的。 | 新手攻击者可以执行此攻击。 | 所有用户、默认配置、所有设备。 | 在出版物中很容易找到攻击说明。 | 高 |
下图是一些威胁建模实例:
那么增加威胁建模这真的可以增加IoT医疗设备的安全性吗?
结果毋庸置疑的,增加威胁建模是可以提高IoT医疗设备的安全性,尤其是在FDA对医疗设备网络安全要求日益严格的背景下。威胁建模是识别、评估、并优先考虑潜在网络攻击威胁的一种方法,帮助医疗设备设计团队在设备的生命周期内有效地预防安全漏洞。
已知漏洞测试
在软件开发和系统安全性保障过程中,实施一系列的安全测试方法至关重要。首先,通过异常或意外输入的滥用案例测试,可以识别系统内外的潜在风险路径,确保未授权访问和恶意操作的防范。
其次,攻击面测试和闭箱已知漏洞扫描帮助系统发现已知的安全漏洞和可能的攻击点,确保系统在面临外部攻击时的抵御能力。此外,软件成分分析着重于对第三方软件和依赖库的安全审查,及时发现并修复可能影响系统安全的漏洞和配置问题。
最后,动态安全测试通过运行时检测,发现静态代码分析难以揭示的潜在缺陷,如内存泄漏、资源未释放等问题。这些综合的安全测试方法从不同角度和层面确保了系统的安全性,帮助开发团队提前识别并应对各种潜在的威胁。
下表是IoT漏洞扫描方法:
测试类型 | 说明 | 方法 |
a) 异常或意外输入的滥用案例测试 | 识别系统内外的所有进入和退出路径,检测常见漏洞(CVE、CNVD等等),如弱访问控制列表、暴露端口和具有高权限运行的服务。 | 目标:识别系统暴露的潜在安全漏洞。 |
b) 攻击面测试 | 对硬件、主机、接口或软件项目进行已知漏洞扫描。 | 使用网络漏洞扫描工具检测设备和服务中的已知漏洞。 |
c) 闭箱已知漏洞扫描 | 对硬件、主机、接口或软件项目进行已知漏洞扫描,模拟攻击者未知漏洞的情况。 | 使用漏洞扫描工具,如Nessus、OpenVAS,扫描已知漏洞。 |
d) 软件成分分析 | 分析二进制可执行文件(如嵌入式固件),特别是第三方软件,检测已知漏洞、依赖库漏洞、违反安全规则等问题。 | 使用软件成分分析工具(如SCA工具,Black Duck、WhiteSource等)来检查依赖库的漏洞。 |
e) 动态安全测试 | 使用动态测试工具发现静态代码分析无法识别的缺陷,特别是运行时缺陷,如内存泄漏、资源未释放、未经认证访问等。 | 使用模糊测试工具FUZZ工具、动态分析工具(如Burp Suite)来发现运行时漏洞。 |
测试项1:固件IoT测试
使用AFL-fuzz进行模糊测试
测试项2:协议分析
USB协议使用本地代理将协议数据发送数据到响应的设备,进行10000次完整的协议交互模拟。测试过程中,协议的76个字段都得到了全面的覆盖,确保了协议的各个环节都经过了严格的验证和变异。
USB协议的fuzz配置
USB协议的字段配置
测试项3:固件漏洞扫描
固件扫描是使用漏洞扫描工具对其IoT固件进行自动化逆向工程和扫描二进制文件漏洞的静态分析,并可以扫描出已知漏洞或漏洞类型,比如CWE78 (OS Command Injection)、CWE119(Buffer Overflow (generic case))[CWE125]等等类型。
如上图所示,漏洞检测工具可以自动化进行逆向,并将二进制还原为伪代码(前提是固件加密程度较低的情况),通过工具可以去检测固件是否存在已知的CWE漏洞,当然工具都存在误报的可能性,比如:sprintf(acStack72,"/www/%s",param_1);param_1是一个固定值,但被工具判断为有漏洞,所以需要人工审核排除误报。
测试项4:SCA与SBOM
SCA(Software Composition Analysis,软件成分分析)用于识别和管理软件中第三方组件和开源库的安全风险。SCA工具通过分析软件的依赖关系和组件,生成SBOM(Software Bill of Materials,软件物料清单),可以很好的发现存在其组件或者供应链中的问题。
类别 | 细节类别 | 要素 | 信息 |
软件产品信息 | 软件基本信息 | 软件名称 | IoT摄像头嵌入式软件 |
软件版本 | V1.0 | ||
引入组件数量 | 0 | ||
标记信息 | 暂无数据 | ||
软件供应链基础设施 | 暂无数据 | ||
软件来源 | 供方 | 源开发商 | 暂无数据 |
软件授权 | 授权方式 | 暂无数据 | |
安全信息 | 技术安全 | 软件漏洞 | 0 |
已知漏洞(组件) | 0 | ||
合规安全 | 开源许可协议 |
测试项5:白盒审计(源代码审计)
一般情况下厂商只会提供固件给予测试,但是有一部分会提供源代码,白盒审计的目的是发现潜在的安全漏洞、代码缺陷或设计缺陷,以防止深层次的漏洞被遗漏。
那么漏洞测试真的可以增加IoT医疗设备的安全性吗?
IoT设备的人工破坏防御深度(Defense-in-Depth)设计通过多层次的安全控制,确保即使某一层防御被突破,其他层仍能有效保护系统。在验证IoT系统的安全漏洞时,可以结合自动化工具与手动操作,通过自动化漏洞扫描快速识别已知漏洞,再通过手动攻击验证漏洞的可利用性,模拟链式攻击进行深度挖掘。利用自动化工具扫描发现设备固件、网络服务等的已知漏洞,再通过手动渗透测试确认漏洞的实际危害。通过这种方式,IoT系统的安全风险可以被更全面地识别和修复,确保系统在面对复杂攻击时能够有效防御。
以下以某品牌远程医疗摄像头为例,该摄像头的硬件架构如下:
ingenic T31核心、RISC-V架构
ESP32/ESP8266系列WiFi芯片
板载存储: Flash芯片
测试步骤包括:
1. 固件分析
提取固件进行逆向分析
检查固件加密和签名机制
分析启动流程和引导加载程序
2. 通信安全
WiFi配网过程安全性分析
3. 防护措施
检查调试端口保护
验证固件升级机制
分析物理安全措施
1. 固件分析
在做固件分析之前,我们首先需要了解一下什么是固件,固件是一种嵌入在硬件设备中的软件,它提供了设备运行所需的基本控制和操作功能。我们可以把固件理解成一种特殊的软件,它不需要操作系统,直接可以安装到硬件机器上面,并去控制硬件机器。下图是常见的固件包:
固件通常存储在闪存芯片上,可能是SPI Flash、eMMC或其他类型的存储芯片。首先,需要确认摄像头使用的存储类型和固件所在的位置,然后找到串口、JTAG接口然后使用使用专用编程器提取。
固件提取
通过下图中的编程器通过杜邦线(一种常见的电子连接线)连接到摄像头上面的内存针脚,通过电脑上面相关软件工具(如Flashrom)读取并保存固件。
在网络通信中,系统通过特定的端口等待并接收外部的连接请求,比如HTTP/HTTPS (80, 443)网站协议、RTSP (554)实时流协议、FTP (21)文件传输协议等等。在通信安全中,测试端口通信监听的目的是确保系统仅通过预期的端口进行通信,并且没有不必要或恶意的端口暴露,以防止潜在的攻击。查看端口开放情况很简单:
nmap -p 80,443,21 <目标IP>
WiFi配网过程安全
需要先了解,IoT设备使用WiFi配网的时候一般都是在放置在公共设备,要确保用户设备在接入无线网络时不会暴露给潜在的攻击威胁,因此我们需要对其WIFI在配网后对其加密协议、设备认证与身份验证、密码管理、无线网络的隔离与分段等进行检测。
3. 防护措施
IoT设备很容易被别人获取,而通过这些容易暴露的调试接口、通信接口很容易对其固件破解,或者找到其中的安全漏洞,所以检测其用于接收和响应外部的连接请求的通信端口和调试端口是否开启,或者做安全措施。
寻找未焊接的针脚、跳线、焊点或测试点,一般这个测试点都是用来调试使用的,或者也可以寻找有类似 “TX/RX/TCK/TDO” 的标注。
验证固件升级机制和分析物理安全措施
一般摄像头的固件升级机制涉及多个步骤,通常包括如下:
收集当前固件版本信息并查阅官方升级流程;
验证升级包的完整性和签名,确保传输安全;
测试升级后的功能、性能及异常情况处理(如断电、无效固件等);
检查升级日志、错误报告和用户通知。
至此,医疗设备IoT相关测评完成已经完成,根据笔者长期对同类测试的结果和效果看,以上标准是可以满足FDA的审计要求的。
这期介绍了FDA和FDA对医疗设备网络安全的角度去探讨了,确实不论是中国还是国际上都制定严格的网络安全标准和指南,来推动IoT医疗器械在设计、制造、使用及生命周期管理中的安全保障。这些标准不仅要求医疗设备制造商进行全面的安全评估,还要求其在产品上市前后进行持续的漏洞测试、威胁建模和安全补丁更新,从而减少潜在风险和安全隐患。但是真实的情况是关于医疗设备的安全测试落地和实施 在国内几乎还是一片空白。
通过对某品牌远程医疗摄像头案例的深度解析,我们可以看到FDA标准如何通过一系列措施,帮助制造商从设计需求(威胁建模),编码(白盒黑盒),后期(固件写入后的漏洞扫描)等多个维度去发现、修复和防范各类网络安全漏洞。也希望这篇文章能帮助同在国内还是国际对医疗器械网络安全测试想了解的人员一点帮助。
中国目前正在不如老年化社会,大量的的医疗器械将会被使用,医疗设备的网络安全问题也是时候提上日程了,虽然中国现在也在大力的发展网络安全,比如2020-2024 多次的“国家HW”的频率可以看到政策的力度不断加大,但在IoT行业及医疗领域的网络安全政策建设方面,仍存在较大的空白。希望未来能够有更多的政策和标准出台,保证医疗器械安全。
作者简介
张飞,资深网络安全专家,洞源实验室成员,8年的安全研发经验和渗透测试经验,并具有多年的攻防兼备的实力与丰富的项目管理背景。在渗透测试、应急响应、代码审计、漏洞挖掘等领域积累了扎实的专业技能,并在SDLC和DevSecOps领域也拥有独特的看法,在白帽子漏洞挖掘的兴趣上、多次SRC(安全应急响应中心)漏洞挖掘上取得多项重大成果,曾获得15W+人民币的漏洞奖励成就。多次参加“红蓝对抗”HW比赛并屡获前三名,担任多次省、市、县网络安全特约讲师,为各地政府及机构提供专业培训与指导工作。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...