荷兰医疗保险公司VvAA的两个IDOR漏洞导致13万医疗工作者数据泄露风险

本文详细披露了荷兰医疗保险公司VvAA门户网站存在的两个IDOR漏洞,攻击者可通过这些漏洞访问13万医疗工作者的保险政策文件,包括网络风险保险和勒索软件赔付条款等敏感信息。文章包含完整的技术分析过程、漏洞时间线和修复情况。

两个不同的IDOR漏洞导致13万医疗工作者数据面临泄露风险

背景

如果一个勒索软件组织能够确切看到哪些医疗机构投保了勒索软件攻击保险,这些保险政策包含保证支付已付赎金的条款,那会怎样?

这将是每个勒索软件组织的梦想,而今天我们将见证两个恰好实现这一点的漏洞。

在深入技术细节之前,首先介绍一些背景信息:关于没有适当协调漏洞披露机制的道德黑客行为,以及关于为医疗机构支付赎金的勒索软件保险的一些思考。

医疗领域勒索软件威胁的增加

根据Z-CERT.nl(医疗领域机构的CERT)的2023年度报告,当前医疗领域最大的威胁之一是勒索软件和金融欺诈。他们描述说,与医疗机构本身相比,IT供应商更常成为攻击目标。

在欧洲,Z-CERT登记了29起欧洲医疗机构的勒索软件事件,其中3起发生在荷兰,包括初级医疗保健(第13页)。

涵盖赎金支付的保险

为什么有人会勒索一家公司?为了钱。没有钱,就没有(不道德的)黑客。

有一个很好的理由说明医疗诊所不会被持枪小偷抢劫或勒索,那里根本没有钱…由于荷兰政府和医疗保险规范了这些诊所的收入,没有产生大额利润。这可能解释了为什么(商业)供应商目前更频繁成为攻击目标。

但是,如果一家保险公司开始提供涵盖诊所所需赎金的保险呢?我们可能会创造一个开始黑客攻击医疗诊所的好理由?

缺失的协调漏洞披露

一年多前,我们讨论了HAwebsso.nl的数据泄露事件,导致超过1.5万名荷兰医生的私人详细信息泄露,包括他们的电子邮件和哈希密码。这是一个有趣的发现,因为它揭示了一个存在至少3年(关于Archive.org日志可能甚至5年)的漏洞。

那次黑客攻击中获得的数据可以轻松用于进行鱼叉式网络钓鱼攻击。

LHV迅速缓解了该漏洞并协调了披露,这是协调漏洞披露如何应用于医疗领域的一个很好的例子。

今天,我们来看看VvAA。在发现该漏洞时(2023年3月24日),他们没有发布适当的负责任披露或协调漏洞披露政策。

这使得道德黑客测试其基础设施问题变得有些风险,并且是帮助保护其资产和客户数据的人才的一大损失。好消息是,在本报告之后,他们已经实施了该政策!

IDOR漏洞1:获取您的个人文件

我们此次黑客攻击的最终目标是获取每个人的私人保险政策文件。谁投保了包括保证勒索软件赔付在内的勒索软件攻击保险?让我们获取这些文件!

由于我需要非常谨慎(没有CVD政策),我联系了一位也是VvAA保险客户的同事,并询问她是否同意我尝试获取她的文件和保单。她同意了并分享了她的账户详细信息。

在他们的内部门户上拥有两个账户有助于我以安全的方式发现IDOR漏洞;我可以使用我朋友的ID,而不是使用“随机”ID攻击其他客户。

开始吧!登录到我自己的账户后,我立即识别出URL中的/s/。这通常暗示幕后使用了Salesforce。

Salesforce使用对象工作;幕后的一切都是一个对象。您的发票有一个对象ID,您的个人资料有一个对象ID,所有其他存储的数据都可以通过引用ID来访问。

每当您能够找到一个ID时,您可以像这样构造URL:https://mijn.vvaa.nl/objectidhere

使用Burp作为代理来MITM流量时,我收集了在流量中看到的对象ID。当我访问我的联系方式详细信息时,有一个是0011r00002IXXXXX。

当我访问该URL时,我得到了另一个提示,表明Salesforce实例配置不当,暴露原始对象视图通常会暴露配置松懈。

这已经足以让我联系VvAA告知我的担忧;因此,我在2023年3月24日午夜00:00通过电子邮件联系了他们的隐私官。同一天12:45,他们的CISO联系我安排了一次通话,讨论当前的发现。

当天14:30,我发现了导致所有文件泄露的IDOR。

步骤1

启动Burp并使用2个账户登录。左侧是攻击者,右侧是受害者。

加载概览(Overzicht)页面时,它会共享您账户中可访问的文档/PDF文件。可以在右侧看到我列表中有一些发票和保单协议。

填充此概览的请求使用relatienummer id(客户ID)来获取这些文件。这个ID是一个整数,可以轻松枚举。

仔细查看此屏幕截图,您会看到它想要运行命令getMijnVvAADocs,并使用RelatieNummer变量仅获取当前登录用户的文档。

重要的是,这是VvAA添加到其自己网站的自定义功能。因此,此漏洞不属于任何其他Salesforce实例,也不是Salesforce特定问题。因此,如果您运行一个实例,不必担心。

如果我们将该ID更改为受害者的客户ID会怎样?我们会得到其他用户的文档吗?

攻击者能够获取我们受害者的文档。

受害者的保单详细信息可以被攻击者下载。

砰!我们可以访问受害者和其它客户的所有文档,我们可以下载它们。这包括保单协议条款和发票。然而,很可能所有类型的文档都是可访问的,包括网络风险保险政策。

勒索软件组织可以简单地转储所有用户的文件列表,并仅下载网络风险保险特定文件。这恰好暴露了潜在受害者的约定条款和其他详细信息。对于鱼叉式网络钓鱼或攻击具有保证勒索软件赔付的目标非常有用。

在我报告此概念验证28分钟后,VvAA确认了该漏洞,并承诺在一小时内推出补丁。此外,他们承诺进行审计,以检查该漏洞是否被恶意行为者滥用。

几周后,我被邀请到他们的办公室讨论此事,我收到了一盒葡萄酒和一张礼品卡。我们握手,他们的领导承诺发布CVD政策。这是一个如何对待安全研究人员的很好的例子,没有恐吓,行动迅速!

离开时,他们要求我继续关注他们的资产;所以让我们这样做。

IDOR 2:未受保护的文档下载端点

一个月后,我检查了我们第一个漏洞的所有内容是否都已解决;确实解决了!

然而,可能是时候再次查看其客户门户的其他部分了。其中之一是已订阅服务(Producten)的概览。

我拥有的有效订阅;我有一份法律保险。

点击订阅后,我可以下载与此保险相关的文件。

当我点击我的法律保险时,我可以下载相关文件:https://0ada17bd-xxxx-xxxx-xxxx.div.vvaa.nl/ApiGateway/Api/Documents/GetBinary/123456/0

我的法律保单。

但是,如果我们将此URL中的123456 ID更改为其他值会怎样?我们会看到另一个人的保单吗?

由于我的朋友没有有效订阅,因此我无法获取要使用的ID,我决定使用随机整数来快速查看这是否是一个漏洞。

我将整数ID更改为以1结尾的ID。

另一个人的保险单,其名字以A开头。该保险始于1985年。

砰!我们有了另一个泄露所有文档的IDOR,现在只需更改文档整数ID并转储所有文件,以发现谁拥有涵盖赎金支付的保险。

我测试了一些ID,以确认确实很可能可以获取所有文档。其中一个ID向我显示了一份2015年的文档,因此至少8年的文档是可访问的。此外,它包括电子邮件对话(eml文件)和其他机密信息。

这次VvAA也在24小时内做出回应,在一周内部署了补丁,并对日志文件进行了全面审计;这是如何处理此类报告的完美范例。

结论

在本文中,我们证明了我们可以获取医生和其他医疗工作者人员的机密信息。我们能够恢复他们当前的保险政策和其他高度机密的信息,如电子邮件。

这使得恶意行为者能够精确攻击拥有保证赎金支付政策的医疗实践或医生。

VvAA对日志文件进行了审计,并得出结论,我是唯一发现该漏洞的人;好消息!

有人可能问我,是否应该留在犯这些错误的公司?我的明确回答是是的。

所有开发人员都会引入错误;重要的是您处理它们的方式。透明度创造信任。

他们迅速回复,在几天内解决了漏洞,并支持我道德研究的目标;努力使医疗供应商更加安全。

多亏了他们,我能够分享这个故事,以便我们都能从中学习。他们最终甚至发布了CVD政策,以便我们未来的研究风险更小。

这是强大领导力的一个例子,一家我信任的公司。

时间线

  • 2023年3月24日 — 发现VvAA可能易受攻击的迹象,联系他们告知我的研究
  • 2023年3月24日 — 与VvAA CISO就当前发现通话
  • 2023年3月24日 — 发现IDOR漏洞1,报告发送给VvAA
  • 2023年3月24日 — VvAA确认IDOR漏洞1并进行首次审计以检查滥用情况
  • 2023年4月5日 — VvAA邀请我于2023年5月11日到办公室
  • 2023年5月4日 — 发现IDOR漏洞2,报告发送给VvAA
  • 2023年5月5日 — VvAA确认IDOR漏洞2
  • 2023年5月11日 — 与VvAA CISO和领导层会面,收到奖励(礼品卡和一瓶葡萄酒)
  • 2024年3月6日 — 告知VvAA CISO关于我想提及此漏洞的演讲
  • 2024年3月10日 — 撰写本文并分享草稿给VvAA安全团队进行事实核查和添加他们自己段落的机会
  • 2024年3月15日 — 收到VvAA法律主管和CISO的反馈
  • 2024年3月17日 — 发送更新的文稿
  • 2024年3月20日 — 在演讲中披露该漏洞
  • 2024年3月21日 — 对文稿进行微小更改,发布文稿
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计