背景
如果勒索软件团伙能精确掌握哪些医疗机构购买了涵盖勒索赎金赔付的网络安全保险,会发生什么?这将是每个勒索团伙的梦想。而今天我们将见证两个漏洞如何使这一场景成为可能。
在深入技术细节前,先简要介绍缺乏协调漏洞披露(CVD)机制下的道德黑客行为背景,以及对涵盖医疗从业者赎金支付的勒索保险的一些思考。
医疗行业勒索威胁加剧
根据医疗行业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-03-10)
今天我们将深入分析VvAA——荷兰医生和医疗诊所使用的最大保险和咨询公司之一。该公司声称代表超过13万医疗从业者,包括笔者本人(自2005年加入并投保十年,非网络保险)。选择VvAA是因为其扎根荷兰医疗行业,百年前由三位医生创立。
简言之,他们了解医生需求,积极参与社区建设并致力做好事。实践出真知,让我们开始"黑客测试”。
缺失的协调漏洞披露
一年前我们讨论过HAwebsso.nl的数据泄露事件,导致1.5万名荷兰医生私人信息(含邮箱和哈希密码)泄露。该漏洞至少存在三年(根据Archive.org记录可能长达五年),所获数据可轻易用于鱼叉式钓鱼攻击。
LHV迅速修复漏洞并协调披露,是医疗行业应用协调漏洞披露的典范。
而VvAA在漏洞发现时(2023年3月24日)未公布负责任披露或协调漏洞披露政策。这对道德黑客测试其基础设施构成风险,也错失了借助人才保护资产和客户数据的机会。好消息是:本报告发布后他们已实施该政策!
(报告数月后CVD政策发布)
有人可能问:未经明确授权攻击系统是否不道德?
有人认为此类安全研究符合公共利益,可与记者调查对社会有重大影响的事件相类比。参考DIVD行为准则:
我们意识到在合法边缘操作,因此遵循漏洞披露诉讼中常用的三个标准:
- 社会需求:通过漏洞披露防止尽可能多互联网用户遭受在线损害,不服务任何特定金融、政治或个人利益
- 比例原则:以适当方式满足该需求。研究应增强而非降低在线系统的完整性和可用性
- 辅助性原则:多种方式可用时,选择影响最小的方式
现实案例:荷兰记者Daniel Verlaan攻击欧盟国防部长视频会议。据我所知他未获研究授权,但未因该攻击被起诉。博雷利先生在攻击过程中表示:
“你知道这是刑事犯罪吗?最好在警察到来前快速退出” — 博雷利先生, 2020年11月21日
这明确表明我们仍需努力说服(政治)领导层支持像Daniel这样的道德记者/黑客,而不是起诉、恐吓他们或制定使其工作风险化的法律。
积极进展是司法部长最近认可DIVD(荷兰语)——该组织持续扫描全网漏洞并向系统所有者负责任披露,无论其是否拥有负责任披露政策。没人会起诉消防员对吧?顺便说一句,他们一直在寻找人才,有能力就加入吧!
IDOR漏洞1:获取个人文档
本次攻击的终极目标是获取所有人的私人保险单文件。谁拥有涵盖勒索攻击(包括保证赎金支付)的保险?让我们获取这些文件!
由于需要格外谨慎(无CVD政策),我联系了同为VvAA保险客户的同事,询问是否允许尝试获取其文件和保单。获得同意后,她分享了账户详情。
在其内部门户拥有两个账户有助于安全地发现IDOR漏洞:我可以使用朋友ID而非随机尝试其他客户。
开始!登录自己账户后立即注意到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-03-24 — 发现VvAA可能存在漏洞的提示,联系他们告知我的研究
- 2023-03-24 — 与VvAA CISO通话讨论当前发现
- 2023-03-24 — 发现IDOR漏洞1,向VvAA发送报告
- 2023-03-24 — VvAA确认IDOR漏洞1并进行首次审核检查滥用
- 2023-04-05 — VvAA邀请我于2023-05-11到办公室
- 2023-05-04 — 发现IDOR漏洞2,向VvAA发送报告
- 2023-05-05 — VvAA确认IDOR漏洞2
- 2023-05-11 — 与VvAA CISO和领导层会面,获得奖励(礼品卡和葡萄酒)
- 2024-03-06 — 告知VvAA CISO我想在演讲中提及此漏洞
- 2024-03-10 — 撰写本文并与VvAA安全团队分享草案进行事实核查及添加自有段落
- 2024-03-15 — 收到VvAA法律主管和CISO的反馈
- 2024-03-17 — 发送更新后的文章
- 2024-03-20 — 演讲中披露该漏洞
- 2024-03-21 — 对文章进行微小修改后发布