背景
根据Z-Cert.nl年度报告,勒索软件攻击是医疗保健行业面临的最大威胁。报告指出,医疗提供者的供应商比个体诊所或专业人员更常成为攻击目标(第16页)。原因可能是入侵供应商的影响更大,因为他们可能同时为多个客户提供服务。
大多数人想到的是患者使用的医疗供应商,例如为老年人使用的警报系统。去年,此类供应商之一Tunstall就成为勒索软件攻击的受害者。
但是那些托管医疗提供者敏感数据(例如投诉官员和争议解决机构)的供应商呢?如果他们存在泄露数据的漏洞怎么办?如果我们能找出谁注册了他们的服务,我们就可以针对这些医疗提供者进行鱼叉式网络钓鱼:“您收到了投诉,请立即输入密码”。
今天我们将入侵我作为医疗工作投诉和争议委员会使用的公司:SKGE.nl。
缺失的协调漏洞披露政策
一年多前,我们讨论了HAwebsso.nl的数据泄露事件,该事件导致超过1.5万名荷兰医生的私人详细信息泄露,包括他们的电子邮件和哈希密码。这是一个有趣的发现,因为它揭露了一个存在至少3年(根据Archive.org日志可能甚至5年)的漏洞。
LHV迅速缓解了该漏洞并协调了披露,这是协调漏洞披露如何在医疗保健领域应用的一个很好的例子。
然而,今天的供应商SKGE.nl在报告时没有这样的协调漏洞披露政策。
好消息是,在报告后,SKGE发布了符合NCSC指南的CVD。但不幸的是,虚假报告的涌入量太高,他们无法保持在线状态,在撰写本文时(2024年3月17日),他们正在寻找解决方案(Z-Cert可能能够在此提供帮助)。
这是一个有趣的经验教训,如果我们想给每个人提供CVD访问权限,就需要在更广泛的范围内解决这个问题。这是我们的政府应该解决的问题吗?例如,向需要CVD分类服务的非营利组织提供资助?或者自己提供这样的服务?
有人可能会问自己,如果你没有被明确允许入侵系统,那么入侵系统是否不道德?
进行这类安全研究是为了公共利益,可以比作记者试图研究对我们社会有严重影响的事情。特别是当它托管你自己的数据时。
另请参阅DIVD的行为准则:
我们意识到我们在法律允许的边缘操作,因此我们遵循法院在漏洞披露案件中常用的三个标准:
- 社会需求:我们进行漏洞披露是为了防止对尽可能多的互联网用户造成在线损害,不服务于任何特定的财务、政治或个人利益。
- 相称性原则:我们以适当的方式满足这一需求。我们的研究应该增加而不是降低在线系统的完整性和可用性。
- 辅助性原则:如果有几种方法可以满足需求,我们选择影响最小的方法。
一个现实世界的例子是荷兰记者Daniel Verlaan入侵了欧盟国防部长的视频会议。据我所知,他没有获得研究许可,但他没有因此次入侵被起诉。Borrell先生在他入侵期间告诉他:
“你知道这是刑事犯罪吗?你最好在警察到达之前迅速退出。” — Borrell先生,2020年11月21日
这是一个明确的信号,我们仍然需要努力说服(政治)领导层,我们需要支持像Daniel这样的道德记者/黑客。不要起诉或恐吓他们,甚至制定使他们的工作风险重重的法律。
分享见解并让每个人从以前的错误中学习是前进的唯一途径;你必须与拥有无限预算的国家行为者或在比特币钱包银行账户中拥有数百万美元的勒索软件组织竞争。
一个良好的发展是我们司法部长最近对DIVD的认可;因为DIVD不停扫描整个互联网以查找漏洞,并负责任地向系统所有者披露这些错误。无论他们在世界何处,无论他们是否有负责任的披露政策。没有人会起诉消防员,对吧?顺便说一句,他们一直在寻找人才,所以如果可以的话加入他们吧!
侦察阶段,在哪里寻找错误?
该平台有一个门户网站,供医疗保健提供者用于更改他们的联系详细信息。
实际投诉未在任何门户中注册。如果你不存储它,你就不会丢失它。这是一个聪明的举措,因为它减少了攻击面。
那么让我们看看我们是否可以访问其他提供者的数据。一个好的起点总是查看我们可以下载发票的位置。
正如我们在屏幕底部看到的,dossiernummer(订单ID)是数字的。
每当我们看到数字ID时,我们尝试将ID更改为更低或更高的数字。我们可能会得到另一个用户的数据。让我们试试!
我们得到了他的许可来IDOR他的发票。
砰!我们有一个IDOR错误,泄露了所有医疗保健提供者的发票。影响有点有限,因为它需要登录,但是每个人都可以注册(没有进行身份检查)。
此外,我没有测试其他ID,但一个好的问题可能是是否只有发票可以通过此端点访问(而不是其他上传的文件,例如关于投诉的文件)。我没有测试这一点,所以我不知道,必须信任供应商的调查。
是时候报告了!
IDOR错误2:注册时暴露的医疗保健PII
在寻找注册方式时,我发现我不能重复使用之前注册的电子邮件来创建新账户。它给出了一个错误。
但是我在Burp Proxy中记录的一个请求中发现了奇怪的东西;对https://portal.skge.nl/api/afas/nieuwe_aansluiting_zelfstandig的请求有以下响应:
发生的事情是,如果有人使用之前注册的电子邮件地址,它会输出所有相关的PII数据。完整地址、电子邮件和电话。嗯。这不应该是这样的。
同样的情况也发生在医疗执照ID(Bignummer)上,这是一个公共数据号码,你可以使用我们政府的网站https://zoeken.bigregister.nl/zoeken/kenmerken轻松查找。
所以,如果你对你医疗保健提供者的(通常是私人的)地址和电话号码感兴趣,这是一种泄露详细信息的简单方法,无需身份验证。
是时候报告了!
结论
经过身份验证的攻击者能够下载其他用户的发票。这些文件包含PII数据,如完整地址和银行账号。未经身份验证的攻击者能够在拥有医疗执照ID号码(公共数据)或注册医疗保健提供者的电子邮件时泄露PII数据(完整地址、电话和电子邮件)。
讨论
SKGE反应非常迅速,在几个小时内就联系并下线了网站的受影响部分。这是一个关于你应该如何反应迅速的好例子!
他们审计了他们的日志以查找漏洞滥用,并可以确认我是唯一发现这些漏洞的人。
记住,每个人都会引入错误;重要的是你处理它们的方式。透明就是信任。作为客户,我完全信任他们,他们向我确认我的数据在他们手中是安全的。
两天后,他们修补了错误,一切重新上线。
最终,他们支持我的道德研究;努力使医疗保健供应商更安全。多亏了他们,我能够分享这个故事,这样我们都可以从中学习。这是一个强大领导力的好例子。
这个行业的其他公司呢,他们也有这种透明度水平吗?如果没有,他们需要什么才能达到那种成熟度水平?
时间线
- 2024年1月7日 — 发现泄露发票和注册时PII数据的IDOR错误
- 2024年1月8日 — SKGE确认错误并指示开发人员部署修复
- 2024年1月8日 — SKGE下线受影响的网络资产
- 2024年1月10日 — SKGE部署修复,我确认修复,SKGE完成其审计日志(未发现漏洞滥用)
- 2024年1月18日 — SKGE发送250欧元礼品卡和感谢信
- 2024年1月10日 — 我撰写了这份报告并与SKGE分享了草稿
- 2024年1月13日 — 收到SKGE的反馈,改进了报告
- 2024年1月19日 — 分享了这份报告的新草稿
- 2024年1月20日 — 报告发布