警惕!随机网站密码泄露危机与代码格式化工具的安全风险

本文揭露了开发者在JSONFormatter和CodeBeautify等在线代码格式化工具中意外保存敏感凭证的安全隐患,涵盖Active Directory密钥、数据库密码、PII数据等严重泄露案例,涉及政府、金融、网络安全等关键行业。

停止将密码输入随机网站(是的,严肃地说,问题出在您身上)

欢迎阅读watchTowr对阵互联网系列第68部分。

您正在经历的那种感觉?是恐惧。您现在应该已经习惯了。

正如快速成为一个非官方且显然不受欢迎的传统一样,我们发现了大量公开暴露的密码、密钥、秘密等非常敏感环境的信息,然后花了几个月时间思考是否能回到我们尚未发现这些问题的时期。

记住,孩子们:共享问题就不再只是您的问题了。这就是共享责任模型(商标)。

*85%是我们的错 :-) xo

您可能还记得我们之前的一些互联网级灾难——但如果不记得,这里有个回顾:

  • 800万次请求后,我们让SolarWinds供应链攻击显得业余
  • 获得为任何.MOBI域名颁发有效TLS/SSL证书的能力(通过用于WHOIS服务器的废弃域名)
  • 通过在后门中注册后门域名劫持政府网络

在阅读我们之前对虚空的自言自语后,您若抱有“哇,希望watchTowr从这些经历中学到了什么——比如停止进行愚蠢的冒险”的希望,我们不会责怪您。

不幸的是,虽然我们同情——但您错了,事实上我们继续证明我们什么也没学到。真的什么也没学到。

所以今天,再次凭借几个高度可疑决策的后果和我们持续无法正确评估风险的能力,我们拖您与我们同行另一段旅程。

当会议厅继续坚持AI威胁,当然还有AI解决方案,让世界处于内爆边缘时——我们最喜欢的MSSP“Jimmy”继续在公共网站上发布某银行的Active Directory凭证,可能是在他们第一天上班时(我们不能打击这种勇气)。

以真正令人印象深刻的方式向所有人暴露秘密在网络安全中并非新现象,我们都见过这种情况(而且,自然,我们什么都没学到!)。对于那些尚未厌倦的人,我们指的现象包括(但绝不限于):

  • GitHub仓库
  • Postman工作区
  • DockerHub容器

顺着这个思路,我们想知道:下周,2个(也许3个)青少年如何在家庭作业间隙智胜这个价值数十亿美元的行业?

TL;DR: 我们一直在翻阅开发人员用于快速格式化输入的平台——如JSONFormatter和CodeBeautify。是的,您猜对了——情况正如您预期的那么糟糕。

停止在随机在线工具中发布凭证。

对许多人来说,为时已晚

通过迭代JSONFormatter和CodeBeautify,我们捕获了80,000多个保存的JSON数据集的数据库——然后解析该数据集(使用内部设备)以识别秘密、凭证、密钥和其他以P开头的首字母缩略词数据类型(如PII)。

在数千个秘密中,以下类型值得注意:

  • Active Directory凭证
  • 代码仓库认证密钥
  • 数据库凭证
  • LDAP配置信息
  • 云环境密钥
  • FTP凭证
  • CI/CD流水线凭证
  • 完整且敏感的API请求和响应
  • 私钥
  • 卡支付网关凭证
  • RTSP凭证
  • 管理JWT令牌
  • 帮助台API密钥
  • 会议室API密钥
  • SSH会话记录
  • PII,包括以下类型:所有类型。

某人AWS Secrets Manager中每个凭证的完整导出??

如果数千个这些秘密在我们手中还不够可怕,泄露这些信息的受影响组织肯定是:

  • 关键国家基础设施
  • 政府
  • 金融
  • 保险
  • 银行业
  • 科技
  • 网络安全
  • 零售
  • 航空航天
  • 电信
  • 医疗保健
  • 教育
  • 旅游
  • 老实说……还有太多其他行业

一如既往,我们想提醒大家——如果我们能用我们合计1个(一个,单独的)脑细胞完成这个任务,任何人都可以。幸运的是,量子计算即将解决这些问题。还有机器人出租车。

问题出在哪里

是的,像您一样,我们在屏幕前尖叫——并对我们发现自己所处的现实感到相当困惑。所以,在我们开始一起哭泣并汇集眼泪交易0day之前,让我们设定场景并解释我们实际上在做什么。

我们今天的研究聚焦于两个(众多中的)在线代码格式化工具:

这些工具非常受欢迎,经常出现在“JSON美化”和“粘贴秘密的最佳位置”(可能,未经证实)等术语的搜索结果顶部——并被各种组织、生物、开发人员和管理员在企业环境和个人项目中使用(我们很快就会看到)。

受欢迎程度如此之高,以至于这些工具背后的唯一开发人员相当受启发——访问任何工具主页通常会快速触发500多个Web请求,以生成我们假设是一些甜蜜的联盟营销收入。

不管我们的嫉妒,在线代码格式化器的概念相对简单:输入非结构化和丑陋的代码/字符串,输出美丽、美化和格式化的艺术。

“这怎么可能出错?!”我听到您,天真无邪的读者在问。

如果您只是美化:

1
{"first_name": "JSON", "last_name": "Bourne"}

0股东价值 变成

1
2
3
4
{
	"first_name": "JSON",
	"last_name": "Bourne"
}

这么多股东价值

答案是“不多”。

然而,如果您是“高级用户”(又名超级书呆子),您会注意到额外的功能——比如右上角的保存按钮。

点击它,您会得到一个半永久的、可共享的链接,指向您刚刚格式化的任何内容——使其易于与同事、朋友、客户、新入职用户或您最喜欢的拓麻歌子分享。

公平地说,这已经清楚地表明事情是如何变得糟糕的。

您看,相当明显的是,“保存”一词和被给予可共享链接不足以帮助大多数用户理解,确实是的,内容已保存且URL可共享——使任何拥有该URL的人都能恢复您的数据。

为了给我们怀疑增加可信度,我们可以推断自JSONFormatter.org成立以来已有大约350,000次保存上传——有35,000页历史链接,每页包含10个结果(我们做了35,000乘以10的数学计算,所以您不必做——不客气)。

“好吧,至少可共享链接很难预测,对吧?”

方法论(是的,我们后悔一切)

我们在JSONformatter.org和CodeBeautify.org上试验保存功能一段时间,发现它们遵循一些相当直观的常见格式:

1
2
3
https://jsonformatter.org/{id-here}
https://jsonformatter.org/{formatter-type}/{id-here}
https://codebeautify.org/{formatter-type}/{id-here}

在不将这篇博客变成没人要求的基本OSINT解释器的情况下,我们将跳到“我们如何获得有效ID?”。

我们向您展示:“最近链接”页面。

此页面是JSONformatter和CodeBeautify上的一个设计功能,允许随机用户(您、我、您的鹦鹉)浏览所有保存的内容及其关联链接,以及关联的标题、描述和日期。

这使得提取变得微不足道——因为我们可以像使用合法功能的真实用户一样行为。对于最近链接页面上的每个提供链接,我们提取id值,并从/service/getDataFromID端点请求内容,将其转换为我们真正想要的原始内容:

1
2
3
4
POST /service/getDataFromID HTTP/1.1
Host: jsonformatter.org

urlid={id-here}&toolstype={formatter-type}

我们的爬虫逐页迭代并记录每个保存项的标题、ID和日期。输出看起来像这样:

留下数千个条目和GB级数据后,我们只剩下一个问题:人们实际上使用这些工具做什么?

我们有点已经知道,不——您猜对了也没有任何奖品。

与许多研究项目一样,我们精心规划的数据丰富、自动秘密扫描、误报调整和自动化改进流水线都泡汤了。

够了废话,watchTowr

与之前我们称为“研究”的互联网级冒险一样,虽然我们总是喜欢看到其他供应商飞速过去并发布他们罪行的研究证据,但为避免疑问,我们确实想强调,我们已尽力确保我们继续在法律范围内运作。

然而,我们没有准备的是我们快速捕获的海量数据。

总的来说,我们捕获了:

  • 80,000多个下载提交(而这只是我们决定停止的地方)
  • 5年的历史JSONformatter内容
  • 1年的历史CodeBeautify内容
  • 5GB以上丰富、注释的JSON数据
  • 数千个秘密

再次,当我们发现自己处于这些情况时,通常伴随着灾难的压倒性感觉——以及我们不知道自己在做什么的令人生畏的现实。

就像对我们一样,您可能会惊讶地发现,在这种规模的数据集中grep“password”并不理想,因此我们戴上思考帽,以更智能的方式做这件事,最终寻找我们认为可操作的示例:

  • 明确归属于已知组织,而非独立开发人员。
  • 通过电子邮件地址、域名或其他线索明确与组织关联。
  • 使用内部域名引用,我们已映射到主要组织。
  • 包含与安全工具、高风险技术或极度敏感信息关联的高价值关键词。

所以,我们使用了zgrep。

我们保证,我们试图告诉人们

在我们发布这项研究的几个月前,我们努力联系了这项研究中涉及的大量知名组织,并与(国际)CERT合作以帮助实施更广泛的响应。

感谢请求数据集以审查其选区暴露情况的CERT团队,包括(但不限于):

  • NCSC UK
  • NCSC NO
  • CSA Greece
  • Canadian Centre for Cyber Security
  • CISA
  • CERT PL
  • CERT EU
  • CERT FR

在我们尝试联系受影响组织中,只有少数(谢谢)迅速回应了我们。大多数没有理会,尽管尝试了跨多个渠道的沟通。

出于明显原因,我们已尽力编辑示例——但仍然提供证据以证明我们声称的可信度。

好吧,好吧,好吧,我们这里有什么MITRE

行业: 研究
披露信息: 加密的Jenkins秘密

所有人们做出可疑决策的好例子可能都始于一个涉及网络安全的组织。

我们在数据宝库中的第一个发现是一个完美格式的非JSON片段,涉及MITRE。

当我们完成思考因盯着我们脸看的无情工作保障而永远不被允许离开这个行业的前景后,我们揉了揉眼睛,意识到我们正在查看Jenkins credentials.xml的导出。

我们想快速指出(主要是为了让我们的Twitter回复不充满努力向我们解释Jenkins工作原理的书呆子),Jenkins使用唯一主密钥加密credentials.xml中保存的秘密。

我们发现自己想知道我们到底找到了什么,以及它怎么可能最终出现在这里,这是所有这些中相当一致的主题。

经过快速谷歌搜索,我们确定我们正在查看访问“MITRE CoDev”的加密凭证,这是MITRE合作伙伴网络中的一个共享系统,受信任组织(如watchTowr现在)可以访问(我们在开玩笑?我猜?也许?)。

虽然“酷”,但这立即改变了披露的范围和类型。我们不再查看企业凭证,而是在进一步挖掘后……一个极端知名的三字母大学中过度热情的大学生决定互联网上的其他人也应访问他们的MITRE CoDev项目,以及其他加密秘密,如:

  • 凭证
  • 令牌
  • 私钥
  • 服务账户凭证

对MITRE来说,也许是侥幸脱险。

有问题吗?是的。我们在寻找的吗?不是。世界末日?还不是。

还不是……

可能更糟?我们猜?

行业: 政府
披露信息: PowerShell,如此多的PowerShell。

以典型方式,我们开始在我们的数据集中grep搜索“放射性”秘密,基本上任何与政府、军队或类似敏感组织关联的内容,我们需要非常快速地披露。

一个巨大的PowerShell blob飞过我们的屏幕,立即引起了我们的兴趣,有几个原因……

朋友,这是一个JSON格式化器——不是PowerShell。为什么?

这个特定的PowerShell blob可归因于一个知名政府实体。

为什么?因为当然?

这个blob包含1000多行纯粹、未稀释的PowerShell,设计用于从头配置新主机,拉取安装程序,配置注册表键,强化配置,最后部署Web应用程序。

我们很快发现,大多数高风险、敏感的东西,如凭证,处理得当(嘘!),在运行时从CyberArk动态拉取,或通过环境变量传递,或故意留空占位符值,以免它们最终硬编码在脚本中(可能是为了避免所述脚本被扔进在线工具的风险)。

虽然这不是我们寻找的那种敏感信息,但该脚本仍然富含宝贵信息,对于想要了解政府环境中系统如何设置、部署和强化的有动机攻击者,包括以下信息:

  • 用于获取构建、安装程序、凭证等的内部端点
  • 默认管理用户名
  • IIS配置值和属性
  • 强化配置,包括正在设置的注册表键和配置
  • ……以及更多,有1000多行这种废话。

游戏结束?也许不是。有趣?绝对,并证明也许在这个数据源中毕竟有一些隐藏的宝藏供我们发现……

供应链?更像是供应秘密!(抱歉)

行业: 数据湖即服务(技术)
披露信息: Docker、Grafana、JFrog凭证

在混乱中的某个地方,下一个引起我们注意的数据是对一个知名“数据湖即服务”供应商的几次引用。

我们不知道您怎么样,但任何与处理“大量您的数据”的组织关联的公共代码格式化器上的内容都吓到我们。

我们正在处理一个云基础设施配置文件,其中包含一堆域名、电子邮件地址和主机名,使我们能够轻松归因“谁拥有这个”,所以我们继续滚动……

我们不必滚动更长时间就被一些非常明显和明文的凭证迎接,涵盖:

  • Docker Hub凭证
  • JFrog凭证
  • Grafana凭证
  • RDS数据库凭证

哎呀。某某,供应链,固有信任,共享责任。

另一个安全公司,更多零信任

行业: 网络安全
披露信息: 肯定不是脑细胞

“肯定没有网络安全供应商会泄露敏感信息?!”

哦,天真的读者,您真可爱——但我们爱您。

我们事先为大量编辑道歉,但不幸的是,信息 materially sensitive(可能令人尴尬)。

在与ChatGPT交谈几个小时以确定这是否糟糕(老实说,10分钟内我们开始生成戴有趣帽子的浣熊表情包,最终浪费了一整天工作),我们决定这不理想。

是的!没错!这家网络安全公司(是的,它很容易识别)实际上将一堆用于非常敏感配置文件(如果我们告诉您配置文件用于什么,编辑任何这些都没有意义)的加密凭证粘贴到这个随机网站。

然而,我们确定它没问题——他们是一家上市的网络安全公司,他们必须知道自己在做什么!

它包含:

  • SSL证书私钥密码
  • 服务主体名称(SPN)密钥表凭证
  • 各种内部密码
  • 外部和内部主机名和IP地址
  • 密钥、证书和配置文件的路径

好消息?他们确实在我们发送电子邮件时回应了我们!愚蠢的消息?他们不能接受电子邮件中的信息,除非通过他们的VDP。

我们对这种方法……零信任……但也许它……可扩展……

直到今天,我们不确定他们是否仍在等待我们将他们回应电子邮件中的信息重新提交给另一个第三方……

无论如何,对我们所有人(严肃地说)稍好的消息——披露的“configuredValues”似乎特定于QA或开发环境,意味着总体影响相当小,那些凭证希望仅用于内部面向开发/测试环境。

稍不好的消息?原始模板似乎来自另一个主机或环境,意味着许多“goldenValues”不同且唯一,披露了更多秘密。

谢天谢地,这家安全供应商否则可能也许希望确实构建安全解决方案(我们猜!)也许或许可能我们假设!并且绝对没有在您的流量上运行AI。或类似的东西。

哎呀,再次。

但是等等……

我们都得到KYC!

行业: 银行业
披露信息类型: 客户PII

当我们发现特定国家某银行客户的完整KYC信息多个实例,包括记录的KYC通话录音链接(自然)时,情况好转(哈哈,开玩笑,又变糟了)。

我们坐在那里,就像在网络安全中经常做的那样,设身处地为那个受启发的个人着想,他想:

“是的,让我快速清理、保存并可能共享这个高度敏感生产PII的JSON blob在第三方网站上”。

没错,他们上传了生产KYC数据,包括:

  • 全名
  • 电子邮件
  • 地址
  • 用户名
  • 电话号码
  • ISP
  • IP地址
  • 录制视频访谈的URL
  • 以及嗯……只是更多。

扮演这个受启发的个人,然后我们试图回答诸如以下问题:

  • 为什么?
  • 为了什么?
  • 您必须吗?
  • 如何?

最终,我们放弃了——我们只是不断听到耳边的高音尖叫声。

虽然您在我们上面大量编辑的图像中看不到,但我们能够将其归因于其合法所有者,因为当然,“recordedVideo”属性值包含指向托管在某全球主要银行主域下的MP4链接。

我们的理论是,链接视频包含客户录制的“我的名字是Jason,我正在申请银行账户”风格视频,以及他们举银行卡的视频。

为什么?没人知道。

然后,再次,情况变得更糟……

神奇四侠除了“更”大

行业: “最大”咨询
披露信息: GitHub令牌

“怎么可能更糟?”

好吧,亲爱的读者,想象您的组织在客户群中完成大量软件开发工作。想象您是那种通常与高度敏感组织合作并非常非常认真对待安全的组织。

直到他们决定导出一个包含一些非常有趣内容的大配置文件,如:

  • 多个GitHub令牌
  • 硬编码凭证
  • 指向GitHub上交付相关文件的URL

在将工具的整个配置文件上传到JSONformatter时(这正在成为一个反复出现的句子??),披露了一个GitHub令牌,基于配置文件,我们推断(猜测)具有对主要咨询组织账户上的文件和文件夹的读/写权限。

虽然我们不知道范围或影响,但在这一点上,我们觉得我们可能正在失去理智。

更好的是,作为最后的锦上添花,他们忍不住也扔进了一个“可靠的老”默认凭证:

公平地说,那个密码是11个字符长,包括数字、大写和小写字符——所以,我们将通过审计。

哈哈,门槛比我们想的更低

行业: MSSP
披露信息: 某银行的Active Directory凭证,推测,希望是意外

如果您在过去六个月的任何时间点醒着,您可能听说过外包帮助台是社会工程的游乐场——许多最近勒索软件事件的根本原因(据称,我们不知道)——但也是当您将自己锁在Outlook(和ID以及任何其他证明您身份和请求合法性的方式之外时首先呼叫的人——因为显然这无关紧要)。

在我们亲切称为“纯粹疯狂”的情况下,我们发现了为什么社会工程甚至可能不再必要。

某处,一个非常知名MSSP的员工愉快地将他们的入职电子邮件——包含Active Directory凭证——上传到公共代码格式化器。

而且,当然,那封电子邮件不仅包括新MSSP员工的凭证……还有第二组:MSSP最大、最 heavily advertised 客户的凭证——一家美国银行。

慢…………鼓掌………………

我们不得不涂鸦整个截图,因为坦率地说,每一行都敏感。相信我们。(或不要,随便)

这个格式化器条目包含三组凭证,我们怀疑来自新员工入职自动化,生成一个新雇用的MSSP员工:

  • Active Directory凭证
  • 基于ID的凭证
  • 电子邮件凭证

Active Directory凭证用于MSSP的环境,但电子邮件和基于ID的凭证用于MSSP的主要、 heavily publicized 客户——一家大型美国银行。

这个粘贴内容几乎包含攻击者需要的一切,包括:

  • 用户名/ID号码/电子邮件地址
  • 密码
  • 安全问题和答案
  • 神秘“令牌”值(我们有理论)

我们只能希望这是一个员工行为不当的罕见案例,可能在他们第一天……这令人印象深刻……而不是既定流程/常见模式。

最好的部分?这些都不是有效的JSON。它甚至在格式化器中不起作用。

这意味着有人可能使用这个代码格式化平台 solely 为其凭证生成可共享链接。

CodeBeautify矿中的金丝雀

有时,我们躺在街上—— arguably,不是选择——凝视天空,问我们是否独自在世界上。

虽然这个问题偶尔会得到对面帐篷里的人的回应,但在这项研究的情况下,我们真的想了解我们是否独自一人。

我们是唯一监控这些平台的人吗?

如果是,发布这项研究会将他人暴露于风险吗?

我们的想法像我们希望的那样原创吗?

有人关心我们是否继续发布这种废话吗?

为了确定以上任何一点,我们想出了一个简单的测试:

  • 生成一堆我们可以跟踪使用情况的凭证(谢谢,CanaryTokens!)
  • 将它们粘贴到上述JSON格式化解决方案中——就像政府机构、网络安全公司、银行、MSSP、航空公司和其他机构中的其他人所做的那样,然后只是……
  • 等待。

所以,我们充电前进并上传了一些看起来类似的秘密:

1
2
3
4
5
6
7
8
{
	"Credentials": {
		"AccessKeyId": "AKIAXXXXXXXXXXXXXXXX",
		"SecretAccessKey": "XXXXXXXXXXXXXXXX",
		"Region": "us-east-1"
	},
	"ConvertedFields": "aws_access_key_id,aws_secret_access_key,region"
}

为了进一步研究这个想法,我们决定上传我们的秘密,带有24小时到期——这些有用平台提供的有用功能。

利用到期计时器将为我们提供证据以确定以上一些——例如,如果凭证在24小时到期后使用,将表明有人在到期前从“最近链接”页面存储了上传,并在技术上到期后使用它。

然后,大“惊喜”……我们得到了第一次命中,表明有人在探查这些数据集。

更有趣的是,它们在我们初始上传和保存48小时后测试(对于那些数学挑战者,这是链接到期且“保存”内容被删除24小时后)。

我们并不孤单——其他人已经在为凭证抓取这些来源,并积极测试它们。

叹气

对于那些已经开始写恶毒推文和电子邮件的人——今天发布这项研究并没有增加已存在于审查平台中敏感信息暴露的风险。

主要是因为有人已经在利用它,而这一切真的,真的愚蠢。我们不需要更多AI驱动的代理平台;我们需要更少的关键组织将凭证粘贴到随机网站中。

直到下次。

watchTowr Labs发布的研究只是watchTowr平台动力的 glimpse——提供针对真实攻击者行为的自动化、连续测试。

通过将主动威胁情报和外部攻击面管理结合到单个先发曝光管理能力中,watchTowr平台帮助组织快速应对新兴威胁——并给予他们最重要的东西:响应时间。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计