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

本文详细披露了荷兰最大医疗保险公司VvAA门户网站存在的两处IDOR漏洞,攻击者可越权访问13万医疗工作者的机密保险文件,包括包含勒索软件赔付条款的网络风险保险单。作者通过技术分析展示了漏洞利用过程,并分享了负责任的漏洞披露时间线。

背景

如果勒索软件团伙能够确切知道哪些医疗机构投保了包含勒索赎金赔付保障的网络风险保险,那将是每个勒索团伙的梦想。今天我们将见证两个使其成为可能的漏洞。

在深入技术细节前,先简要介绍在没有协调漏洞披露政策下的道德黑客行为,以及对涵盖医疗机构赎金支付的保险的一些思考。

医疗行业勒索威胁加剧

根据医疗行业CERT机构Z-CERT.nl的2023年度报告,当前医疗领域最大威胁是勒索软件和金融欺诈。报告指出IT服务商比医疗机构本身更常成为攻击目标。

Z-CERT登记了欧洲医疗机构的29起勒索事件,其中3起发生在荷兰(包括初级医疗)。这为我们打破这一趋势提供了充分理由,或许还需要通过保险来保护自己?

涵盖赎金支付的保险

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

医疗诊所之所以不会被持枪歹徒抢劫或勒索,很好理解:根本没有现金可抢。由于荷兰政府和医疗保险机构规范这些诊所的收入,它们无法获得高额利润。这或许解释了为什么(商业)服务商目前更常成为目标。

但如果保险公司开始为诊所提供赎金赔付保障呢?我们是否在为黑客攻击医疗机构创造理由?

“Voordelen: Eventueel betaald losgeld wordt vergoed."(“保障内容:支付的赎金将获得赔付”)— https://www.vvaa.nl/verzekeringen/cyber-en-data-risks-verzekering (2024年3月10日)

今天我们将仔细研究VvAA,这是荷兰医生和医疗诊所使用的最大保险和咨询公司之一。他们声称代表超过13万医疗工作者。包括作者本人——自2005年成为会员,过去10年一直购买其保险(非网络风险保险)。为什么?因为这是一家扎根荷兰医疗行业的优秀公司,100年前由3名医生创立。

换句话说,他们了解医生的思维方式,与社区紧密联系并努力做好事;实践是检验真理的唯一标准,让我们开始测试。

“1924年由3名医生起步,现已发展成为拥有超过13万医疗专业人士的集体。我们在社会和政治辩论中代表他们,并为医疗相关外围事务提供支持。这使得医疗专业人士及其组织能够专注于最重要的任务:为患者提供最佳护理。” 来源

缺失的协调漏洞披露

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

那次黑客获取的数据可轻易用于鱼叉式网络钓鱼攻击。LHV迅速修复了漏洞并协调了披露,这是协调漏洞披露在医疗领域应用的典范。

今天我们将关注VvAA。在发现漏洞时(2023年3月24日),他们尚未发布负责任披露或协调漏洞披露政策。这对道德黑客测试其基础设施问题存在风险,也错失了帮助保护其资产和客户数据的人才。好消息是,在本报告后他们已实施该政策!

本报告数月后发布了CVD政策

有人可能会问:未经明确允许入侵系统是否不道德?

有人认为这类安全研究符合公共利益,可与记者调查对社会有重大影响的事件相提并论。参考DIVD行为准则:

我们意识到自己在法律允许边缘操作,因此遵循法院在漏洞披露案件中常用的三个标准:

  • 社会需求:我们通过漏洞披露防止尽可能多互联网用户受损,不服务任何特定金融、政治或个人利益
  • 比例原则:我们以适当方式满足这一需求,研究应提高而非降低在线系统的完整性和可用性
  • 辅助性原则:若有多种满足需求的方式,我们选择影响最小的方案

现实案例是荷兰记者Daniel Verlaan入侵欧盟国防部长视频会议。据我所知他未获研究许可,但未因这次入侵被起诉。博雷利先生在入侵期间告诉他:

“你知道这是犯罪行为吗?最好在警察到来前快速退出。” — 博雷利先生,2020年11月21日

这明确表明我们仍需努力说服(政治)领导层,需要支持像Daniel这样的道德记者/黑客,而不是起诉、恐吓他们或制定使其工作风险重重的法律。

近期我国司法部长对DIVD的认可是一个良好发展。DIVD持续扫描整个互联网寻找漏洞,并向系统所有者负责任地披露这些漏洞,无论其位于何处或是否有负责任披露政策。没人会起诉消防员对吧?顺便说一句,他们一直在寻找人才,有能力就加入他们!

IDOR漏洞1:获取个人文档

本次测试的最终目标是获取所有人的私人保险单文件。谁投保了包含保证勒索赎金赔付的勒索软件攻击保险?让我们获取这些文件!

由于需要格外谨慎(无CVD政策),我联系了同为VvAA保险客户的同事,询问是否允许尝试获取她的文件和保单。她同意并分享了账户详情。

在其内部门户拥有两个账户有助于我安全地发现IDOR漏洞:我可以使用朋友的ID而非随机尝试其他客户。

开始!登录自己账户后,我立即注意到URL中的/s/,这通常暗示后端使用Salesforce。

URL路径中的/s/部分暗示其后端可能是Salesforce

页面源码证实了这一点;Salesforce被用作后端系统

Salesforce使用对象工作;后台一切皆对象。你的发票有对象ID,个人资料有对象ID,所有存储的数据都可通过引用ID访问。

只要找到ID,你就可以这样构造URL:https://mijn.vvaa.nl/objectidhere。更多背景信息可参考此博客。

使用Burp作为代理进行中间人攻击时,我收集了流量中看到的对象ID。访问联系详情时,其中一个ID是0011r00002IXXXXX

我的个人资料对象ID的原始(隐藏)视图。已隐去部分个人信息。此处可见我的未结案例和订阅服务,包含我联系他们的通话记录。不算高度机密,但用于记录我的客户服务交互。

访问该URL时,我得到另一个提示:Salesforce实例配置不当,暴露原始对象视图通常表明配置松散。更多安全配置信息请参阅此处。

点击案例我可更改状态和优先级。影响不大,但我不应有权访问此功能。

这已足以让我联系VvAA表达担忧;于是我于2023年3月24日午夜00:00给他们的隐私官发了邮件。当天12:45,他们的CISO联系我安排通话讨论当前发现。

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

步骤1

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

左侧为攻击者(Chantal),右侧为受害者(Jonathan)

加载概览(Overzicht)页面时,会显示账户中可访问的文档/PDF文件。右侧可见我列表中有一些发票和保单协议。

“Uw laatste berichten”(您的最新消息)包含共享文件。

填充此概览的请求使用relatienummer id(客户ID)获取这些文件。该ID为整数,易于枚举。

隐去我的’RelatieNummer’/客户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 设计