两个不同的IDOR漏洞导致13万医疗工作者数据潜在泄露
背景
如果勒索软件组织能够确切看到哪些医疗提供商投保了勒索软件攻击保险,这些保险单包含保证支付已付赎金的条款,会怎样?
这将是每个勒索软件组织的梦想,今天我们将见证两个恰好使其成为可能的漏洞。
医疗保健领域的勒索软件威胁增加
根据Z-CERT.nl(医疗保健部门机构的CERT)的2023年年度报告,如今医疗保健领域最大的威胁之一是勒索软件和金融欺诈。他们描述说,与医疗保健提供商本身相比,IT供应商更经常成为目标。
在欧洲,Z-CERT登记了欧洲医疗机构发生的29起勒索软件事件,其中3起在荷兰。
覆盖赎金支付的保险
为什么有人会勒索公司?金钱。没有钱,就没有(不道德的)黑客。
医疗诊所没有被持枪小偷抢劫或勒索是有充分理由的,根本没钱…由于荷兰政府和医疗保险规范了这些诊所的收入,没有巨额利润。这可能解释了为什么(商业)供应商目前更经常成为目标。
但如果保险公司开始提供覆盖诊所所需赎金的保险呢?我们可能会创造一个开始黑客攻击医疗诊所的好理由?
缺乏协调的漏洞披露
一年多前,我们讨论了HAwebsso.nl的数据泄露事件,该事件导致超过1.5万名荷兰医生的私人详细信息泄露,包括他们的电子邮件和哈希密码。
今天,我们来看看VvAA。在发现漏洞时(2023年3月24日),他们没有发布适当的负责任披露或协调漏洞披露政策。
IDOR漏洞1:获取您的个人文件
我们这次黑客攻击的最终目标是获取每个人的私人保险单文件。谁投保了勒索软件攻击保险,包括保证的勒索软件支付?让我们获取这些文件!
在登录到我自己的账户后,我立即识别出URL中的/s/。这通常暗示后台使用了Salesforce。
Salesforce使用对象;后台一切都是对象。您的发票有一个对象ID,您的个人资料有一个对象ID,所有其他存储的数据都可以通过引用ID来访问。
使用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政策,因此我们未来的研究风险较小。
这是强大领导力的例子,一个我信任的公司。
时间线
- 24-03-2023 — 发现VvAA可能易受攻击的线索,联系他们告知我的研究
- 24-03-2023 — 与VvAA CISO通话讨论当前发现
- 24-03-2023 — 发现IDOR漏洞1,报告发送给VvAA
- 24-03-2023 — VvAA确认IDOR漏洞1并进行首次审计以检查滥用
- 05-04-2023 — VvAA邀请我于11-05-2023到办公室
- 04-05-2023 — 发现IDOR漏洞2,报告发送给VvAA
- 05-05-2023 — VvAA确认IDOR漏洞2
- 11-05-2023 — 与VvAA CISO和领导会面,收到奖励(礼品卡和一瓶葡萄酒)
- 06-03-2024 — 告知VvAA CISO关于我想提及此漏洞的演讲
- 10-03-2024 — 撰写本文并与VvAA安全团队共享草案以进行事实核查和添加他们自己段落的选择
- 15-03-2024 — 收到VvAA法律主管和CISO的反馈
- 17-03-2024 — 发送更新的文章
- 20-03-2024 — 在演示期间披露漏洞
- 21-03-2024 — 对文章进行微小更改,发布文章