如何在数百万人和数百个流行应用程序上实现代码执行

admin 2025年3月2日21:46:20评论29 views字数 2089阅读6分57秒阅读模式

这一切始于我调查 cursor —— 一个 AI 文本编辑器。另外,我的笔记本上安装了 Objective-See 的 Lulu,所以当我下载 cursor 的安装包时,弹出了如下窗口:

如何在数百万人和数百个流行应用程序上实现代码执行
图片 1:LuLu 警告,显示 “Install Cursor” 正试图连接到 “download.todesktop.com”

那么,到底什么是 todesktop?我以为我下载的是 cursor 呢?但从他们的网站来看,他们似乎是一家 Electron 应用打包服务商,同时还提供 Electron 应用的 SDK。因此,看起来我下载的安装包实际上是由 todesktop 管理,而非 cursor。

这引起了我的好奇,我便在 todesktop 上注册了一个账号以便深入了解。当我点击 GitHub 登录按钮时,我注意到自己的调用目标竟然是 Firebase

Firebase是Firebase公司在2011年发布的行动和网络应用程序开发者平台,在2014年被Google收购。 截至2020年3月,Firebase平台拥有19项产品,它们被超过150万个应用程序采用。

基础 Firebase 调查

意识到该应用使用了 Firestore(Firebase 的 NoSQL 数据库,常用于前端),我迅速打开了开发者工具,开始对 Firebase 进行基本侦查。

我注意到该站点包含 sourcemaps,这使得查找应用中使用的所有 Firestore 路径变得更加容易(即使没有 sourcemaps 通常也不难查找)。

随后,我发现了一个不安全的集合 temporaryApplications,它似乎提供了一些应用的名称列表(注:todesktop 已经澄清,该集合不包含敏感数据,并且自 2022 年起未再更新),除此之外,Firebase 的其他部分看起来都相当安全。

深入分析 todesktop CLI

我接着发现,大部分部署和通用逻辑都是在终端中通过 npm 包 @todesktop/cli 来执行的,于是我安装了该 CLI 并开始研究。

这个 CLI 负责管理部署、源代码上传及更多操作,而网站本身似乎只是一个用于创建应用、查看部署等功能的外壳。

我再次走运,发现这个 CLI 同样包含 sourcemaps,因此我使用 sourcemapper 将其提取成一个完整的源代码树。

在源码中,我发现了一个通过 Firebase 云函数 getSignedURL 实现的任意 S3 上传漏洞,不过由于我没有合适的 S3 文件路径来进行有意义的操作,所以我继续寻找其他漏洞。

通过 postinstall 脚本劫持部署流水线

我希望能够进入构建应用的机器,而最简单的方法就是在 package.json 中利用 postinstall 脚本,于是我构造了一个简单的反向 shell payload 来实现这一目标。

这招奏效了。在容器内四处探索时,我找到了实际进行代码构建的应用所在位置,并发现了如下文件:

如何在数百万人和数百个流行应用程序上实现代码执行
图片 2:截图显示一个名为 “config.json.encrypted” 的文件

我找到了解密该文件的代码,自己解密后得到了下面的内容:

如何在数百万人和数百个流行应用程序上实现代码执行
图片 3:截图显示一个名为 “config.json” 的文件,包含两个 Apple ID、远程签名以及 HSM 的凭据

这个容器里存储了机密信息。

继续在容器中搜索时,我还发现了一个硬编码的 Firebase 管理员密钥(权限范围全开)。

后期利用

我很快意识到,凭借手中的这些凭据,我可以为任意应用部署自动更新,使得客户端在重启时立即收到更新。

于是我编写了一些代码,利用这些凭据为我的应用部署更新,结果成功了——我立刻在客户端接收到了更新,并实现了远程代码执行(RCE)。

影响分析

利用这一漏洞,我可以向所有使用 todesktop 的应用推送自动更新,例如:

  • ClickUp
  • Cursor(更新:Cursor 现已放弃使用 todesktop,而改用自主构建系统)
  • Linear
  • Notion Calendar

(请勿骚扰这些公司或将责任归咎于它们,问题出在 todesktop 上)

据我估计,受影响的人数可能达到数亿,主要涉及科技界人士、其他黑客、程序员以及高管等。这使得该漏洞在恶意利用时后果极为严重。

修复方案

我立即利用人脉联系到了 todesktop 的负责人,我们通过 Signal 进行沟通,修复工作几乎在第一时间内完成。他们不仅非常友好,给予了我相应的补偿,总体来说合作体验极佳。

现在,构建容器中引入了一个拥有特权的 sidecar,它负责所有签名、上传及其他操作,而不再由包含用户代码的主容器处理这些逻辑。

安全事件经常发生,这是很自然的。关键在于公司的响应,而 todesktop 的响应非常出色,与他们合作非常愉快。

查看 todesktop 的事件报告:点击这里https://www.todesktop.com/blog/posts/security-incident-at-todesktop

顺便提一下,我总共因该漏洞获得了 5 千美元的赏金,但我并不责怪 todesktop,因为他们是一家规模较小的公司。

更新: Cursor(受影响客户之一)为我的工作支付了 5 万美元。

原文始发于微信公众号(独眼情报):如何在数百万人和数百个流行应用程序上实现代码执行

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月2日21:46:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何在数百万人和数百个流行应用程序上实现代码执行https://cn-sec.com/archives/3785220.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息