开源电子健康纪录系统爆数个严重漏洞,病患隐私与系统安全拉警报

支持全球2亿人病历的开源电子健康纪录系统OpenEMR,遭Project Insecurity揭露存在多个严重等级高的安全性漏洞,从身份验证旁路、SQL资料隐码、远端程序码执行以及任意档案操作等漏洞都有,OpenEMR社群已积极处理漏洞问题,使用者务必进行OpenEMR版本更新。

开源电子健康纪录系统爆数个严重漏洞,病患隐私与系统安全拉警报

研究团队从GitHub上下载了OpenEMR 5.0.1.3代码进行安全性测试,发现了许多严重的漏洞。报告一开始提到的漏洞是病患入口页面的身份验证旁路漏洞,受影响的共有15个Php页面,没有经过身份验证的攻击者,可以简单的浏览登入页面并修改请求网址后,绕过登入页面存取想访问的页面,这个漏洞造成的影响,会让网页程序随机展示真实病患资料。

OpenEMR也有严重的SQL资料隐码漏洞,总共有8个Php程序受到影响,未经授权的用户可以插入SQL查询指令,查看特定资料库资料,甚至执行特定资料库功能。像是对Search_code.php在发送POST请求时,可以在容易受攻击的文字参数中,使用有效负载进行SQL资料隐码,文字参数在没有任何消毒处理下,直接被用于SQL查询中,骇客可以利用此漏洞对OpenEMR界面进行身份验证。

开源电子健康纪录系统爆数个严重漏洞,病患隐私与系统安全拉警报

另外一个SQL资料隐码的例子,则是OpenEMR代码的品质不一,在Anything_simple.php的SQL查询,有使用占位符来防止SQL资料隐码攻击,但是在Forms.inc中的getProviderIdOfEncounter函式,却没有使用相同的方法来防范攻击,把来自使用者输入的参数,透过getProviderIdOfEncounter函式传递直接放入SQL查询中,使网页应用程式容易受到SQL资料隐码攻击。

Project Insecurity研究团队对OpenEMR,做了多个远端代码执行攻击的概念性验证,而且因为OpenEMR其他Php程序安全性不够高,导致攻击更加容易成功。研究团队举例,其中一个远端代码执行漏洞落在Sl_eob_search.php中,不过要完成攻击必须获得Print_command全局变量,不过攻击者可以从Edit_globals.php这个程序轻易的取得Print_command。

开源电子健康纪录系统爆数个严重漏洞,病患隐私与系统安全拉警报

另外,数个病患入口页面的POST变量,在Import_template.php中被定义,而这些变量在使用者输入后,没经过消毒处理的情况下,就直接被以函式传递,使攻击者有机可乘,可以用病患权限从系统上传、修改、存取或是删除档案。研究团队以任意档案写入为例,攻击者可以从入口页面制造请求,上传任何型态的档案包括Php档案,而这将帮助攻击者达成程​​式码执行以及特权提升。攻击者不只可以写入任意档案,甚至可以读取及删除任意档案。

Project Insecurity在2018年7月7日通报漏洞给OpenEMR,7月20日OpenEMR官方就推送了漏洞补丁更新,研究团队提到,OpenEMR以非常积极的态度处理漏洞问题。


分享到:


相關文章: