HL7协议在医疗器械运用中带来的安全隐患
2018-09-21耿恺频刘茹
耿恺频 刘茹
1 航天中认软件测评科技有限公司 (江苏 南京 211800)
2 江苏省医疗器械检验所电气安全室 (江苏 南京 225300)
内容提要: 研究HL7协议在医疗器械软件使用时引发的一些信息安全隐患。使用多种测试工具检测、确认存在的一些问题,对这些问题加以分析,并提出了相关问题的一些解决思路,推动医疗器械软件的质量安全。
1.HL7协议简介
HL7协议是为了促进医护环境中的信息通讯。主要是提供医疗应用程序之间进行数据交换的标准,这些应用程序是除去或从本质上减少用户接口的程序和程序维护,从而可以在其他方面被请求[1]。
通俗讲HL7是一个应用层协议,是医疗领域不同应用之间电子传输的协议,定义的是数据格式。不同厂商在设计应用软件之间接口时如遵循该协议的标准格式,各个医疗软件在异构系统之间,可以方便的进行数据交互。
HL7的长期目标就是制定一种用于医疗机构电子数据交换的标准或协议。
2.HL7协议接口组成
它是一组支持HL7通讯的过程调用函数或控件,应用程序按照HL7接口引擎的约定提供参数,模块之间的通讯则由HL7接口引擎完成[2]。
目前主流的医疗信息整合技术为“HL7/XML接口引擎”,它是整合多种技术合成的医疗信息整合技术,用以转译各种医院信息系统数据至符合HL7标准的XML信息格式,以实现各种医疗卫生信息系统之间的信息共享与交换。
在数据通讯方面,一种是“HL7 Engine”方式,主要是系统具有HL7的通讯能力。另一种是“HL7 Ready”方式则是整个系统在业务流程上支持HL7。
3.消息结构
HL7的数据以消息为基本构成单位,一个消息由多个段组成,一个段由多个字段组成,字段是由一个或多个数据元组成的字符串。
如MSK、PID、ORC、OBR等标识,具体含义可参考HL7协议说明。
HL7消息实例一
由上方的实例中可以发现,该消息中包含了较多的用户敏感信息,如患者出生年月、身份证号码、家庭住址、手机号码以及相关的检测结果等。
HL7消息实例二(图1)
该信息是实验室检验分析设备生成结果后向实验室LIS系统发送检测结果,属于“HL7 Ready”方式,消息中包含了患者标识以及检测结果。
4.HL7协议与医疗器械之间的关系
目前较多的PACS系统会与HIS系统进行消息的交互,交互协议基本使用HL7,医用检验分析设备与LIS系统交互则更加深入,患者信息、检测结果、样本申请信息等都使用HL7协议进行交互。而且随着医疗器械软件的日趋增多和医院信息系统的整合要求,HL7协议会使用的越来越多。
5.HL7协议相关产品在实际使用中存在的信息安全隐患
HL7的主要目标是支持多系统间的数据交换,使用的是开放的统一的标准,该标准是对所有人开放,也就意味着任何人都可以解析相关的交换数据。
更严重的问题在于,HL7协议制定时主要是为解决医疗系统信息交互的需求,是为了多系统对接和维护的方便,所以在安全性方面并未着重考虑,查询现有协议也未发现对消息的用户认证机制有要求,对敏感数据和传递参数也未有加密规定,在实际使用中多数厂商也未从信息安全方面考虑该协议的使用。
以某厂商实际产品为例。使用soap接口,消息体中包含hl7消息格式(图2)。
分析以上报文存在两个问题:
• 缺乏用户认证机制,非授权访问无法限制。
我们使用soap消息模拟器,模拟客户端发送相关请求消息,服务端无法拒绝该请求,非授权访问得到允许。
• 消息体中传输参数未进行加密,消息内容泄漏。
图1. 消息内容分析
图2. 网络报文解析截图
查看报文可见传输的患者信息、编号以及检查结果。结合认证机制缺陷可进行消息篡改攻击,破坏数据准确性。使用消息模拟器,修改原消息的参数并发送,则服务端会获取到篡改过消息,导致检查结果不准确。
进一步分析,相应的系统如提供了查询接口,那么可以使用该接口获取大量患者敏感信息,使用更新接口,信息会被篡改,则会得到异常的检查数据,甚至是异常数据修改为正常数据。使用删除接口,则可清空数据库中的信息,造成重大损失。海外的医疗攻击案例中,攻击者并不清楚消息中参数代表的意义,但在他获得了非授权访问权限和参数值后,根据消息规则篡改了参数导致事故的发生。
6.建议
hl7协议需要安全使用,尤其是消息的用户认证机制以及关键参数的保密性和防篡改性。在实际检测工作中,可发现目前国内医疗器械软件的信息安全状况不容乐观,需要我们积极重视医疗器械软件中存在的安全漏洞,提高国内医疗器械软件的安全质量。