[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-claude-code-source-map-leak-51w-lines-zh":3,"tags-claude-code-source-map-leak-51w-lines-zh":32,"related-lang-claude-code-source-map-leak-51w-lines-zh":45,"related-posts-claude-code-source-map-leak-51w-lines-zh":49,"series-tools-507dbb52-7633-4a01-a73b-14abab4a2201":86},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":20,"translated_content":10,"views":21,"is_premium":22,"created_at":23,"updated_at":23,"cover_image":11,"published_at":24,"rewrite_status":25,"rewrite_error":10,"rewritten_from_id":26,"slug":27,"category":28,"related_article_id":29,"status":30,"google_indexed_at":31,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":10,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":22},"507dbb52-7633-4a01-a73b-14abab4a2201","Claude Code 源碼外流：51萬行曝光","\u003Cp>2026 年 3 月 31 日凌晨，\u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\" target=\"_blank\" rel=\"noopener\">Anthropic\u003C\u002Fa> 的官方 npm 包，被安全研究員 \u003Ca href=\"https:\u002F\u002Fx.com\u002FFried_rice\" target=\"_blank\" rel=\"noopener\">Chaofan Shou\u003C\u002Fa> 抓到可用的 Source Map。幾個小時內，\u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\u002Fclaude-code\" target=\"_blank\" rel=\"noopener\">Claude Code\u003C\u002Fa> v2.1.88 的 TypeScript 源碼就被還原。規模大約 51 萬行，拆成 1900 多個文件。\u003C\u002Fp>\u003Cp>講白了，這不是單純的「程式碼被看到」。這件事發生在 AI 編程工具上，才真的刺眼。它本來就是幫你讀碼、改碼、跑命令的工具，結果自己也被同樣方式拆開。\u003C\u002Fp>\u003Cp>如果你平常只把 Source Map 當前端除錯工具，這次就該多看一眼。打包、發布、權限，只要一個環節鬆掉，注釋、目錄結構、內部模組名都可能一起外流。\u003C\u002Fp>\u003Ch2>這次到底外流了什麼\u003C\u002Fh2>\u003Cp>外流的核心，不是模型權重，也不是使用者資料。重點是 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code\" target=\"_blank\" rel=\"noopener\">Claude Code\u003C\u002Fa> 客戶端的 TypeScript 源碼。對外界來說，這種資料很有價值，因為它直接揭露產品怎麼切能力邊界，怎麼呼叫本地工具，怎麼做權限判斷。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775185434800-4ex3.png\" alt=\"Claude Code 源碼外流：51萬行曝光\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>對安全研究員和競品團隊來說，這比行銷頁有用太多。你能看到真實的錯誤處理、命令呼叫、上下文拼接、日誌埋點，還有補丁邏輯。換句話說，工程團隊的取捨，幾乎都攤在那裡。\u003C\u002Fp>\u003Cp>這類事件最麻煩的地方，在於它通常不是高難度入侵，而是發布細節失控。包裡多留了一個檔案，公開環境就多了一條路。\u003C\u002Fp>\u003Cul>\u003Cli>外流版本：Claude Code v2.1.88\u003C\u002Fli>\u003Cli>源碼規模：約 51 萬行\u003C\u002Fli>\u003Cli>文件數量：1900+ 個\u003C\u002Fli>\u003Cli>入口：npm 包中的 Source Map\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Source Map 原本是給前端除錯用。壓縮後的程式碼，可以靠它對回原始碼。問題是，很多團隊上線時沒有把它關乾淨。只要配置不嚴，瀏覽器、抓包工具，甚至公開包內容，都可能把原始碼拼回來。\u003C\u002Fp>\u003Cp>說真的，這種事故很像把家門鑰匙放在門口鞋櫃。不是防盜門壞掉，是你自己忘了收好。\u003C\u002Fp>\u003Ch2>為什麼 Source Map 會變成入口\u003C\u002Fh2>\u003Cp>Source Map 的機制不複雜。前端或打包後的程式，會保留一個映射檔，把壓縮碼的位置對回原始碼。開發時很方便，排錯時也省事。可是一旦正式環境沒限制存取，它就會把很多不該公開的資訊一起攤開。\u003C\u002Fp>\u003Cp>在 AI 工具裡，這個風險更大。因為這類產品常常同時包含本地命令執行、檔案讀寫、上下文管理、權限提示、遠端 API 呼叫。程式碼一旦完整還原，外界就更容易看出安全邊界怎麼畫。\u003C\u002Fp>\u003Cp>這次也提醒大家一個老問題。很多團隊把「功能能跑」當成「可以上線」。但功能能跑，不\u003Ca href=\"\u002Fnews\u002Fnvidia-says-agi-is-here-what-it-means-now-zh\">代表\u003C\u002Fa>正式制品可以留調試資產。測試能過，也不代表線上包裡能放足夠還原內部實作的線索。\u003C\u002Fp>\u003Cblockquote>“Security is a process, not a product.” — Bruce Schneier\u003C\u002Fblockquote>\u003Cp>這句話很老，但還是準。真正可怕的，不是某個檔案被看到。是團隊把發布鏈路的小疏忽，當成低風險小事，最後讓它在公開環境裡串成一條完整攻擊面。\u003C\u002Fp>\u003Cp>你可能會想問，這跟一般前端洩漏有什麼差別？差很多。一般網頁可能只是幾個 bund\u003Ca href=\"\u002Fnews\u002Fapple-siri-google-gemini-1b-deal-zh\">le\u003C\u002Fa>。AI 編程工具則牽涉本地執行、權限提示、命令列操作，資訊密度高得多。\u003C\u002Fp>\u003Ch2>跟其他洩漏比，這次哪裡特別\u003C\u002Fh2>\u003Cp>源碼外流不是新鮮事。瀏覽器擴充、手機 \u003Ca href=\"\u002Fnews\u002Fapple-pays-google-one-billion-fix-siri-zh\">App\u003C\u002Fa>、Electron 客戶端，都發生過類似問題。但 Claude Code 的特殊之處在於，它不是邊緣工具，而是直接面向開發者日常工作的 AI 編程產品。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775185433717-b1gz.png\" alt=\"Claude Code 源碼外流：51萬行曝光\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>它一旦暴露實作細節，影響的不只是品牌觀感，還有外界對安全設計的判斷。因為使用者會開始問：它怎麼處理本地檔案？怎麼限制命令執行？怎麼保護上下文？\u003C\u002Fp>\u003Cp>再看規模，51 萬行、1900+ 文件，已經不是「看個大概」的等級。這種量體足以讓人做系統分析。你能看出模組切分、錯誤處理路徑、功能開關，甚至可以推測開發團隊的維護方式。\u003C\u002Fp>\u003Cul>\u003Cli>一般網頁洩漏：多半只有少量 JS bundle\u003C\u002Fli>\u003Cli>桌面客戶端洩漏：常見於 Electron，能看到更多本地邏輯\u003C\u002Fli>\u003Cli>AI 編程工具洩漏：會露出命令執行與權限流程\u003C\u002Fli>\u003Cli>這次規模：51 萬行、1900+ 文件，資訊密度很高\u003C\u002Fli>\u003C\u002Ful>\u003Cp>對競爭對手來說，這像一次低成本拆解。對安全團隊來說，這是活教材。只要分發包裡還留著可逆向的調試資訊，遲早有人會把它翻出來。\u003C\u002Fp>\u003Cp>我覺得，這件事最刺眼的地方，在於它打到 AI 工具自己的痛點。產品本身在幫人處理程式碼，結果自己的工程包也沒守好。\u003C\u002Fp>\u003Ch2>開發團隊該學到什麼\u003C\u002Fh2>\u003Cp>第一個教訓很直接。發布前檢查清單，不能只看功能項。還要看調試資產、映射檔、符號表、內部日誌，有沒有一起被打包。很多事故不是程式寫錯，而是交付流程默認「沒人會看這些檔案」。\u003C\u002Fp>\u003Cp>第二個教訓是最小權限。就算 Source Map 真的被看到，也不該讓它直接指向可下載的完整源碼倉庫。也不該把內部目錄結構暴露得太清楚。越是面向開發者的產品，越容易被誤以為「使用者懂技術」，但這不等於可以放鬆發布約束。\u003C\u002Fp>\u003Cp>第三個教訓更現實。AI 工具正在變成高價值目標。它們接觸程式碼、憑證、終端、雲端 API。任何實作細節外流，都可能被拿去做逆向、審計，甚至拼出更完整的攻擊鏈。\u003C\u002Fp>\u003Cul>\u003Cli>上線前關掉 production Source Map 公開存取\u003C\u002Fli>\u003Cli>把調試檔從正式制品剝離\u003C\u002Fli>\u003Cli>檢查 npm、PyPI、容器映像的分發內容\u003C\u002Fli>\u003Cli>對 AI 工具的本地執行權限做單獨審計\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你在做類似產品，這次真的該重看 CI\u002FCD 設定。很多公司花很多時間防模型越獄，卻忘了先把自己的發布包清乾淨。\u003C\u002Fp>\u003Cp>如果你只是一般開發者，這件事也很有參考價值。你在專案裡開 Source Map、把 sourcemap 上傳到第三方服務、或把調試包丟到測試環境時，最好先假設它有一天會出現在公開視野。\u003C\u002Fp>\u003Ch2>這件事放在產業裡怎麼看\u003C\u002Fh2>\u003Cp>AI 編程工具這兩年很熱。\u003Ca href=\"https:\u002F\u002Fwww.cursor.com\" target=\"_blank\" rel=\"noopener\">Cursor\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fwww.replit.com\" target=\"_blank\" rel=\"noopener\">Replit\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcopilot\" target=\"_blank\" rel=\"noopener\">GitHub Copilot\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fchat.openai.com\" target=\"_blank\" rel=\"noopener\">ChatGPT\u003C\u002Fa> 都在搶開發者時間。大家比的不只是模型能力，還有工作流整合、命令列體驗、檔案操作、權限控制。\u003C\u002Fp>\u003Cp>在這個市場裡，安全細節很容易被放到後面。產品團隊通常先追求能用，再追求好用，最後才回頭補安全。問題是，AI 工具碰到的是使用者的程式、金鑰、伺服器設定，順序一錯，代價就很大。\u003C\u002Fp>\u003Cp>這次事件也會讓不少團隊重新檢查發佈規範。尤其是 Electron、前端打包、npm 套件、桌面客戶端這幾條線。只要有一條線沒有收緊，Source Map、內部註解、測試路徑都可能跟著出去。\u003C\u002Fp>\u003Ch2>結尾：先查你的發佈包\u003C\u002Fh2>\u003Cp>Claude Code 這次外流，表面上是資訊被看見。實際上，它是在提醒所有做軟體的人：發布工程本身就是安全的一部分。不是功能跑得動就好，還要看你把什麼一起送到了公開環境。\u003C\u002Fp>\u003Cp>接下來最值得盯的，不是大家怎麼圍觀這 51 萬行碼，而是 Anthropic 會不會收緊 Source Map、調整分發策略、重新檢查 AI 客戶端的打包規範。對台灣開發者來說，這件事最實用的問題只有一個：你的線上包裡，還有多少不該被下載的東西？\u003C\u002Fp>\u003Cp>如果你答不上來，今天就該查。\u003C\u002Fp>","Anthropic 的 Claude Code npm 包因 Source Map 外流，約 51 萬行、1900+ 文件被還原。這次事件把 AI 工具的發布流程與調試資產風險，直接攤在台灣開發者眼前。","www.zhihu.com","https:\u002F\u002Fwww.zhihu.com\u002Fquestion\u002F2022394365436248248",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775185434800-4ex3.png",[13,14,15,16,17,18,19],"Claude Code","Anthropic","Source Map","源碼外流","npm","AI 編程工具","安全事件","zh",1,false,"2026-04-03T03:03:37.396375+00:00","2026-04-03T03:03:37.351+00:00","done","ce0a140e-9c8a-4fc3-8926-e548039bd594","claude-code-source-map-leak-51w-lines-zh","tools","de197745-7ee4-4b70-b33a-797c7c5f9a76","published","2026-04-07T07:41:12.07+00:00",[33,34,35,37,39,41,44],{"name":19,"slug":19},{"name":17,"slug":17},{"name":18,"slug":36},"ai-編程工具",{"name":13,"slug":38},"claude-code",{"name":14,"slug":40},"anthropic",{"name":42,"slug":43},"source map","source-map",{"name":16,"slug":16},{"id":29,"slug":46,"title":47,"language":48},"claude-code-source-map-leak-51w-lines-en","Claude Code源码泄露：51万行代码曝光","en",[50,56,62,68,74,80],{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":28},"d058a76f-6548-4135-8970-f3a97f255446","why-gemini-api-pricing-is-cheaper-than-it-looks-zh","為什麼 Gemini API 定價其實比看起來更便宜","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778869845081-j4m7.png","2026-05-15T18:30:25.797639+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":28},"68e4be16-dc38-4524-a6ea-5ebe22a6c4fb","why-vidhub-huiyuan-hutong-bushi-quan-shebei-tongyong-zh","為什麼 VidHub 會員互通不是「買一次全設備通用」","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778789450987-advz.png","2026-05-14T20:10:24.048988+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":28},"7a1e174f-746b-4e82-a0e3-b2475ab39747","why-buns-zig-to-rust-experiment-is-right-zh","為什麼 Bun 的 Zig-to-Rust 實驗是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778767879127-5dna.png","2026-05-14T14:10:26.886397+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":28},"e742fc73-5a65-4db3-ad17-88c99262ceb7","why-openai-api-pricing-is-product-strategy-zh","為什麼 OpenAI API 定價是產品策略，不是註腳","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778749859485-chvz.png","2026-05-14T09:10:26.003818+00:00",{"id":75,"slug":76,"title":77,"cover_image":78,"image_url":78,"created_at":79,"category":28},"c757c5d8-eda9-45dc-9020-4b002f4d6237","why-claude-code-prompt-design-beats-ide-copilots-zh","為什麼 Claude Code 的提示設計贏過 IDE Copilot","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778742645084-dao9.png","2026-05-14T07:10:29.371901+00:00",{"id":81,"slug":82,"title":83,"cover_image":84,"image_url":84,"created_at":85,"category":28},"4adef3ab-9f07-4970-91cf-77b8b581b348","why-databricks-model-serving-is-right-default-zh","為什麼 Databricks Model Serving 是生產推論的正確預設","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778692245329-a2wt.png","2026-05-13T17:10:30.659153+00:00",[87,92,97,102,107,112,117,122,127,132],{"id":88,"slug":89,"title":90,"created_at":91},"de769291-4574-4c46-a76d-772bd99e6ec9","googles-biggest-gemini-launches-in-2026-zh","Google 2026 最大 Gemini 盤點","2026-03-26T07:26:39.21072+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":128,"slug":129,"title":130,"created_at":131},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":133,"slug":134,"title":135,"created_at":136},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00"]