OpenEMR

在本周二(8月7日),一组研究人员公开披露了存在于OpenEMR软件中的22个安全漏洞。OpenEMR是一个被广泛使用的医疗实践管理软件,支持电子病历。在此次被披露的漏洞中,包括了一个门户身份验证绕过漏洞,允许攻击者访问任何患者的记录。

这个称自己为Project Insecurity的研究小组指出,他们从GitHub上下载了OpenEMR 5.0.1.3版本,并在不使用自动化测试工具的情况下对其源代码进行了手动分析。虽然没有任何一个漏洞能够被评定为危急级别(Critical),但在22个漏洞中有17个的严重程度被认为是较高的。

在接受媒体采访时,Project Insecurity的首席执行官Matt Telfer 解释了为什么这个门户身份验证绕过漏洞可能是其中最重要的发现。他说:“一些信息可能会因为这个漏洞而遭到窃取,这包括患者的人口统计,所有的电子病历、处方和医疗账单信息,预约时间表等。OpenEMR累计存储有近1亿患者的记录,其中有超过1000万份的记录在美国境内。”

根据这份报告的描述,成功利用这个漏洞允许攻击者访问通常需要登录验证的门户页面。值得注意的是,利用漏洞的方法并不复杂,只需要导航到注册页面并修改所请求的URL,就可以访问很多页面,这包括支付页面、患者个人资料页面以及实验室结果页面。事实上,在能够成功访问个人资料页面之后,研究人员能够提取任意患者的个人资料。

更糟糕的是,Project insecure发现攻击者完全可以将这个门户身份验证绕过漏洞与在OpenEMR的PHP代码片段中发现的八个SQL注入漏洞结合起来使用,以访问目标数据库中数据、破坏患者记录,并在无需授权的情况下执行各种数据库操作。

此外,Project Insecurity还发现了四个远程代码执行(RCE)漏洞,这些漏洞可能允许攻击者发出系统命令或升级他们的权限。

Project Insecurity还指出,OpenEMR还受到多个高严重程度的跨站点请求伪造(CSRF)漏洞的影响,其中最严重的漏洞可能允许攻击者上传Web shell并升级到远程代码执行,但需要事先诱骗管理员点击恶意链接。

另有三个影响较大的漏洞是值得关注的,第一个是一个任意文件写入漏洞,它允许经过身份验证的攻击者使用精心设计的请求上传任意文件;第二个是一个任意文件读取漏洞,它允许攻击者在Web目录之外查看站点上的文件;第三个是一个任意文件删除漏洞。

最后,OpenEMR还被发现受到三个未经身份验证的信息泄露漏洞(低风险)、一个受限制的文件上传漏洞(中等风险),以及多个未经身份验证的管理操作漏洞的影响(低风险),只需要知道相对URL路径就可实现对漏洞的利用。

由Matt Telfer、Brian Hyde、Cody Zacharias、Corben Leo、Daley Bee、Dominik Penner和Manny Mand组成的Project Insecurity研究小组这份在长达28页的漏洞分析报告中指出,OpenEMR的开发人员已经在7月20日发布了一系列补丁,对这些漏洞进行了修复。