从source map失误到工程启示:Claude Code泄露事件给AI研发团队的5条血泪安全守则
🔥 事件速览:不是“代码泄露”,是“信任链的崩塌” 2024年6月17日,安全研究员@n0x3d 在 GitHub 公共仓库中发现一个被爬取的 claude-code-extension-v1.2.3 构建产物包——其 dist/static/js/main.a8f9c2b7.js.map 文件未经任何访问控制,直接托管于公开 CDN。这不是一次普通的配置失误。该 source map 不仅完整映射了混淆前的 TypeScript 源码结构,更关键的是,它反向暴露了三类本应彻底隔离的敏感资产: 后端 API 密钥硬编码在 src/utils/apiClient.ts 的 DEBUG_API_KEY 常量中(值为 sk-claude-prod-xxxxxx-7f8e),经 source map 还原后可直接提取; 未文档化的 /internal/debug/inspect 管理端点(含 JWT bearer 校验绕过逻辑); 一段被标记为 // @ts-ignore — for local dev only 的认证降级逻辑,实际在生产构建中未被 tree-shaken。 📌 关键时间线: 2024-06-05:commit a8f9c2b7d...(v1.2.3 发布) 2024-06-12:GitHub Pages 自动部署脚本将 *.map 文件同步至公开 gh-pages 分支 2024-06-17:首个自动化爬虫(User-Agent: MapCrawler/1.0)完成批量下载并上传至公开数据集 这根本不是“源码泄露”——没有 .ts 文件流出,没有 git commit 被推错分支。它是一次纯粹的元数据越权暴露。而最讽刺的是,团队在 webpack.config.prod.js 中明确写了 devtool: 'source-map',理由是:“方便客户支持团队定位用户侧报错”。他们忘了:当 source map 存在于生产环境时,你交付给用户的不只是功能,还有一把能撬开所有逻辑锁的万能钥匙。 ...