![]()
2026年3月31日凌晨4:23,安全研究員Chaofan Shou(@Fried_rice)在推特上敲下一行鏈接時,Anthropic的工程師們還在睡覺。6小時后他們醒來,發現自家保險柜的門大敞著——不是被黑客炸開,是他們自己忘了鎖。
那扇"門"是一個59.8MB的文件,叫cli.js.map。它混在Claude Code CLI 2.1.88版本的npm包里,被全球開發者隨手下載。里面藏著Anthropic的完整源代碼、未發布功能,以及足夠讓競爭對手抄三年的工程秘密。
3400億美元估值的AI安全標桿,栽在了一個初中級工程師都該知道的配置項上。
59.8MB的"地圖",把王宮畫成了公開景點
Source map(源映射文件)是前端工程的基礎概念。你把代碼壓縮成亂碼上線,但調試時需要知道第47行報錯對應原始文件的哪個位置——source map就是那張對照表。生產環境必須剔除,這是行業共識,就像出門要關燈一樣基礎。
Anthropic最近把Claude Code CLI從Node.js遷移到了Bun運行時。Bun有個已知bug:默認生成巨型source map,且不會自動排除。Anthropic的工程師要么不知道,要么沒檢查,在.npmignore文件里漏寫了兩行:
# Standard security practice for npm packaging*.mapdist/*.map
就這兩行。沒有技術難點,沒有邊緣案例,沒有"當時我們面臨兩難抉擇"的悲情敘事。純疏忽。
這個59.8MB的地圖文件里,有一條鏈接指向Anthropic自有的Cloudflare R2存儲桶。不需要社會工程學,不需要0day漏洞,不需要 nation-state 級別的資源——需要的是一個會npm install的人,和好奇心。
代碼里的" duck ",寫滿了工程師的狼狽
泄露的代碼被全球開發者扒了個底朝天。GitHub上迅速出現大量fork,Anthropic后來發了8000多份DMCA下架通知,但代碼已經被復制了41500多次。鏡像站點遍布各地,內部邏輯永久進入了公共領域。
開發者們像考古學家一樣清理現場,發現的細節比泄露本身更耐人尋味:
// Found inside the leaked codebase:// A workaround using hex to encode the word "duck"http:// because the raw string collided with Anthropic's own internal CI pipeline checks.const targetAnimal = String.fromCharCode(0x64, 0x75, 0x63, 0x6b);
這段注釋沒有刪。工程師用十六進制編碼"duck"這個詞,因為原始字符串會撞上他們自己的CI檢查。換句話說,安全流程成了需要繞過的東西,而繞過方式被寫進了注釋,連同自嘲一起提交了。
更扎眼的是這個類型定義,在代碼庫里被高頻使用:
type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS = {sessionId: string;eventTrigger: string;// ...};
類型名本身就是一句求生欲極強的免責聲明。能看出工程師被自己的安全審查壓得喘不過氣,不得不在變量名里發誓"我確認這不是代碼或文件路徑"。流程異化到這種程度,人就會和流程對抗,而對抗的痕跡成了泄露后的公開笑料。
編譯開關背后的"影子功能"
比狼狽代碼更敏感的,是藏在編譯時標志(compile-time flags)后面的未發布功能。這些功能被刻意隱藏,沒有對外披露,現在被強制公開。
具體有哪些,原文沒有完整列舉,但泄露的性質很明確:Anthropic的路線圖、技術債務、內部爭議,全部攤在了對手面前。競爭對手可以精確推算他們的工程節奏,安全研究者可以逐行審計他們聲稱的"AI安全"實現,投機者可以搶先復制尚未發布的產品形態。
Anthropic發言人的官方定性是"打包錯誤"(packaging error)。這個措辭輕巧得像把車禍說成"位移意外"。
事實是系統性失效:Bun的已知bug沒人跟蹤,發布流程沒有自動檢查source map,代碼審查沒發現59.8MB的異常體積,R2存儲桶的權限配置依賴 obscurity(隱蔽式安全)而非 principle。
任何一個環節正常工作,都不會發生這件事。
"AI安全"公司的安全悖論
諷刺的不是事故本身,是事故的主體。Anthropic的核心賣點是"AI安全"——他們花大量篇幅論述如何對齊模型、如何防止濫用、如何負責任地部署。他們的招聘頁面、融資路演、政策游說,全部圍繞這個敘事構建。
現在這幅圖景出現裂痕:一個連基礎工程安全都做不好的組織,正在向全世界保證他們能駕馭更復雜的AI風險。這不是"他們也會犯錯"的寬容時刻,是"他們聲稱的專業能力與實際表現"之間的落差。
類比一下:一家宣傳"極致食品安全"的餐廳,被拍到廚師上完廁所不洗手。顧客有理由懷疑,他們宣傳的HACCP體系、冷鏈監控、溯源系統,到底有多少是真實的,有多少是PPT。
科技行業的特殊性在于,工程文化很難偽裝。代碼泄露是CT掃描,能照出組織真實的肌肉紋理。Anthropic的掃描結果顯示:高壓下的工程師在繞過自己的流程,已知的技術債務沒人清理,發布環節缺乏自動化防護。
這些和AI安全沒有直接關系,但和"一家聲稱能解決AI安全的公司是否可信"高度相關。
41500次fork之后
事故已經發生, Anthropic 的應對是標準的危機公關:DMCA轟炸、聲明淡化、內部調查。但41500次fork是個冰冷的數字,意味著法律手段只能清理表面,無法收回已經擴散的內容。
更長期的影響在技術層面。競爭對手獲得了Anthropic的架構設計、依賴選擇、抽象層級——這些信息原本需要大量逆向工程才能獲取,現在免費下載。未發布功能的曝光可能迫使Anthropic提前或推遲路線圖,打亂產品節奏。
對行業而言,這是一次昂貴的公共教育。npm包的體積檢查、source map的自動剔除、存儲桶的權限審計——這些 checklist 上的項目,現在有了3400億美元量級的案例背書。其他團隊的安全評審會上,"Anthropic那件事"會成為標準引用。
對Anthropic自己,真正的修復不是加兩行.npmignore,是回答一個組織問題:為什么多個防線同時失效?CI流程為什么成了需要繞過的障礙?工程師為什么覺得在類型名里寫免責聲明比推動流程改進更安全?
這些問題沒有技術捷徑。它們關于權力結構、激勵機制、心理安全感——關于一家快速膨脹的公司,是否在文化上跟上了估值的增長。
Chaofan Shou發現泄露的那個凌晨,他在推特上寫了一句簡單的廣播。沒有夸張,沒有得意,就是一個鏈接和一句話。6小時后Anthropic的工程師醒來,面對的不僅是公關噩夢,是一面鏡子。
現在這面鏡子擺在所有人面前:如果你今天檢查自己團隊的npm包,會找到什么?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.