We pwned X, Vercel, Cursor, and Discord through a supply-chain attack
利用供应链攻击攻破 X (Twitter), Vercel, Cursor, Discord 及数百家公司
我是一名 16 岁的普通高中生,名叫 Daniel。在空闲时间,我喜欢寻找大型公司的漏洞,并进行一些有趣的开发。大约一个月前,我和朋友们发现了 Mintlify (一个 AI 文档平台) 存在严重的漏洞,该平台被许多顶级公司使用。
漏洞发现与利用
我发现了一个跨站脚本 (XSS) 漏洞,攻击者利用此漏洞可以在众多公司的文档中注入恶意脚本,只需用户点击一个链接即可窃取凭据。Discord 在 2025 年 11 月 7 日宣布将使用 Mintlify 作为其开发者文档平台。
Mintlify 平台简介
Mintlify 是一个 AI 驱动的文档平台,允许用户使用 Markdown 编写文档,并将其转换为美观且功能强大的文档网站。Mintlify 托管的文档站点使用 *.mintlify.app 域名,并支持自定义域名。Discord 使用 discord.mintlify.app 作为其文档站点。
每个 Mintlify 子域名都拥有一个 /_mintlify/* 路径,该路径用于平台内部功能。无论站点托管在 mintlify.app 域名还是自定义域名上,/_mintlify 路径必须可访问。
攻击细节
/_mintlify/markdown/路径: 最初我尝试进行路径遍历攻击,但失败了。随后,我开始探索/_mintlifyAPI 端点。我发现了一个/_mintlify/_markdown/_sites/[subdomain]/[...route]端点,它接受任何 Mintlify 文档 ([subdomain]),并返回该文档中特定文件 ([...route]) 的内容。该端点未检查[subdomain]是否与当前主机匹配,因此可以从任何 Mintlify 文档中获取文件。虽然该端点仅返回原始 Markdown 文本,但通过 SVG 文件注入 JavaScript 代码绕过限制并成功执行。/_mintlify/static/路径: 随后,我发现了一个/_mintlify/static/[subdomain]/[...route]端点,它接受任何 Mintlify 文档 ([subdomain]) 并返回静态文件。
影响范围
该漏洞影响了几乎所有使用 Mintlify 的客户,包括 X (Twitter)、Vercel、Cursor、Discord 等。攻击者可以通过恶意链接窃取用户凭据,从而实现账户接管。
漏洞披露与修复
我们负责任地披露了该漏洞给 Discord 和 Mintlify。Discord 立即采取行动,关闭了其开发者文档平台 2 小时,并回退到旧平台。Mintlify 也积极配合,与我们合作修复了该漏洞。
总结
这次事件强调了供应链安全的重要性。通过攻击单个平台,攻击者可以影响众多下游用户。我们总共获得了约 11,000 美元的漏洞奖励。