咨詢服務(wù)熱線:400-099-8848
能隨意盜取數(shù)據(jù)!這款搶手 AI 編程東西曝嚴(yán)重危險(xiǎn) |
| 發(fā)布時(shí)間:2026-05-24 文章來源:本站 瀏覽次數(shù):86 |
以“安全優(yōu)先”定位的Anthropic,其核心開發(fā)東西Claude Code的網(wǎng)絡(luò)沙箱在過去五個(gè)月里從未實(shí)在安全過。 獨(dú)立安全研討員關(guān)傲男(Aonan Guan)5月20日發(fā)布新研討,發(fā)表Claude Code網(wǎng)絡(luò)沙箱存在第二個(gè)完好繞過縫隙——一個(gè)SOCKS5協(xié)議中的空字節(jié)注入進(jìn)犯,能夠讓沙箱內(nèi)的進(jìn)程拜訪用戶戰(zhàn)略清晰制止的任意主機(jī)。這意味著從2025年10月沙箱功用上線至今,約5.5個(gè)月、130個(gè)發(fā)布版別,Claude Code的每一個(gè)版別都存在可被完好繞過的安全缺陷。這已是同一研討員對同一道防線的第2次完好打破。 Anthropic對此的回應(yīng)是緘默沉靜:沒有安全布告,沒有CVE編號,沒有用戶通知。縫隙在4月1日的版別中靜默修正,更新日志未提及任何安全相關(guān)內(nèi)容。也就是說,一位仍在運(yùn)轉(zhuǎn)舊版別的用戶,徹底無從知曉自己裝備的沙箱從一開端就形同虛設(shè)。 同一道門的兩次鑰匙 Claude Code是Anthropic于2025年頭推出的AI編程幫手,定位是“駐留在終端中的AI工程師”。與傳統(tǒng)的聊天式代碼補(bǔ)全不同,Claude Code具有對用戶代碼庫的讀寫權(quán)限和指令履行才能,能夠自主完結(jié)導(dǎo)航代碼、修改文件、運(yùn)轉(zhuǎn)測驗(yàn)等一系列操作。這種深度介入也意味著極高的安全危險(xiǎn)——如果模型被提示詞注入進(jìn)犯劫持,進(jìn)犯者將取得同等用戶終端權(quán)限的才能,包含讀取本地環(huán)境變量、履行任意體系指令、拜訪內(nèi)部網(wǎng)絡(luò)資源等。 為了平衡安全與功率,Anthropic在2025年10月引入了網(wǎng)絡(luò)沙箱功用(v2.0.24),允許用戶經(jīng)過裝備文件設(shè)定域名白名單,約束AI履行環(huán)境的外部網(wǎng)絡(luò)拜訪。例如裝備 allowedDomains: [“*.google.com”] 后,Claude Code只能拜訪Google及其子域名,其余流量一概阻斷。官方文檔清晰許諾:“空數(shù)組等于制止所有網(wǎng)絡(luò)拜訪。” 這一機(jī)制由一個(gè)SOCKS5署理完成:底層沙箱運(yùn)轉(zhuǎn)時(shí)(@anthropic-ai/sandbox-runtime)發(fā)動署理服務(wù)器,沙箱內(nèi)的進(jìn)程不直接主張網(wǎng)絡(luò)銜接,而是經(jīng)過署理轉(zhuǎn)發(fā),署理根據(jù)用戶在 settings.json 中裝備的白名單履行域名過濾。操作體系層面的沙箱機(jī)制——macOS的sandbox-exec、Linux的bubblewrap——正確地將Agent約束在本地回環(huán)地址,出站決議計(jì)劃則徹底委托給這個(gè)SOCKS5署理。 Anthropic官方博客展現(xiàn)的Claude Code沙箱架構(gòu)圖——用戶指令經(jīng)由SOCKS/HTTP署理過濾后到達(dá)沙箱,沙箱內(nèi)的文件操作與網(wǎng)絡(luò)拜訪受嚴(yán)格權(quán)限管控 問題就出在這個(gè)署理的完成上。兩次獨(dú)立的安全研討均證明,它能夠被完好繞過。 時(shí)間線暴露出更深層的問題:2025年11月26日發(fā)布的v2.0.55修正了第一次繞過,但第2次繞過從沙箱上線的第一天起就已存在,該版別仍然攜帶。兩個(gè)縫隙在時(shí)間線上存在交叉,從沙箱功用上線的第一天到后一個(gè)縫隙被修正,沒有任何版別是安全的。Anthropic在官方博客中聲稱沙箱“保證即使產(chǎn)生提示詞注入,影響也被徹底隔離”,但這兩次繞過的存在直接推翻了這一許諾。 “一次外部陳述是運(yùn)氣。兩次是實(shí)施質(zhì)量問題!——關(guān)傲男研討陳述表明。 一個(gè)空字節(jié)的完好繞過 第2次繞過的技術(shù)原理并不雜亂,但進(jìn)犯鏈條的完好性值得關(guān)注。 用戶裝備了網(wǎng)絡(luò)白名單,例如只允許拜訪 *.google.com。Claude Code的SOCKS5署理在收到銜接懇求時(shí),用JavaScript的 endsWith() 辦法對主機(jī)名做后綴匹配。進(jìn)犯者只需在主機(jī)名中插入一個(gè)空字節(jié)——構(gòu)造形如attacker-host.com\x00.google.com 的字符串。JavaScript將空字節(jié)視為一般UTF-16字符,endsWith(“.google.com”) 回來 true,署理放行。但同一字符串被傳遞到底層C言語函數(shù) getaddrinfo() 進(jìn)行DNS解析時(shí),空字節(jié)被視為字符串終止符,實(shí)踐解析的是 attacker-host.com。同樣的字節(jié),兩層代碼給出了兩種解讀。過濾器認(rèn)為你在拜訪Google,DNS解析器知道你在銜接進(jìn)犯者的服務(wù)器。 這歸于經(jīng)典的“解析器差異”進(jìn)犯,與2005年發(fā)現(xiàn)的HTTP懇求走私屬同一技術(shù)類別(CWE-158 / CWE-436)。其本質(zhì)是當(dāng)同一條數(shù)據(jù)流經(jīng)兩個(gè)具有不同語義解說規(guī)則的組件時(shí),進(jìn)犯者能夠使用這種差異,讓一層組件做出“安全”的判別,同時(shí)讓另一層組件履行“危險(xiǎn)”的操作。此類縫隙在網(wǎng)絡(luò)安全范疇重復(fù)呈現(xiàn),要害教訓(xùn)一直相同:任何跨越信賴鴻溝的字符串傳遞,都必須經(jīng)過嚴(yán)格的規(guī)范化與驗(yàn)證,而非信賴上層現(xiàn)已做過查看。 關(guān)傲男運(yùn)用兩個(gè)小化的Node.js腳本完結(jié)了縫隙復(fù)現(xiàn):操控腳本運(yùn)用一般主機(jī)名主張SOCKS5銜接,回來BLOCKED;進(jìn)犯腳本在主機(jī)名中注入空字節(jié),回來 BYPASSED rep=0x00——后者意味著署理已成功建立銜接,出站通道被翻開。Claude Code自身供認(rèn)了這一成果。 Claude Code v2.1.86中四個(gè)赤色標(biāo)示過程的完好縫隙復(fù)現(xiàn)——戰(zhàn)略供認(rèn)、一般阻攔、空字節(jié)繞過、Claude自身供認(rèn) 而這一沙箱繞過與關(guān)傲男4月發(fā)表的“談?wù)撆c操控”提示詞注入進(jìn)犯串聯(lián)后,構(gòu)成了完好的進(jìn)犯鏈(拜見:三層防護(hù)仍然不行,一條PR標(biāo)題就能偷走你的API密鑰:AI Agent安全裂痕再現(xiàn))!罢?wù)撆c操控”研討已證明,三家AI編程東西均存在提示詞注入進(jìn)犯面,但進(jìn)犯進(jìn)口各不相同:Claude Code僅經(jīng)過PR標(biāo)題,Gemini CLI經(jīng)過Issue談?wù)摶蛘模珻opilot Agent則使用HTML注釋完成隱蔽注入。以Claude Code為例,其PR標(biāo)題會被直接拼接至提示詞模板,未經(jīng)過濾或轉(zhuǎn)義,模型無法區(qū)別人類意圖與歹意注入。 將兩者組合——隱藏指令讓Agent在沙箱內(nèi)運(yùn)轉(zhuǎn)進(jìn)犯代碼,空字節(jié)注入打破網(wǎng)絡(luò)封閉——環(huán)境變量中的API密鑰、AWS憑證、GitHub令牌、內(nèi)部API端點(diǎn)數(shù)據(jù)等,均可被外傳至互聯(lián)網(wǎng)上的任意服務(wù)器。數(shù)據(jù)經(jīng)過SOCKS5署理自身流出,進(jìn)犯全程無需外部服務(wù)器中轉(zhuǎn),而該署理恰恰是用戶信賴為安全鴻溝的組件。進(jìn)犯者甚至不需要倉庫寫入權(quán)限,只需提交一個(gè)揭露Issue即可。人類審查者在GitHub烘托視圖中看到的是正常協(xié)作懇求,AI Agent解析的卻是完好歹意源碼。 連Claude都供認(rèn):縫隙是實(shí)在的 此次發(fā)表中的一個(gè)要害細(xì)節(jié)來自Claude Code自身。關(guān)傲男直接將縫隙復(fù)現(xiàn)代碼交給Claude Code運(yùn)轉(zhuǎn),要求其做出技術(shù)判別。Claude Code在履行了操控測驗(yàn)(一般主機(jī)名被阻攔)和進(jìn)犯測驗(yàn)(空字節(jié)主機(jī)名繞過阻攔)后,給出了清晰結(jié)論: “This is a real bypass of the network sandbox filter, not just a test artifact. You should report this to Anthropic at https://github.com/anthropics/claude-code/issues.”(“這是對網(wǎng)絡(luò)沙箱過濾器的實(shí)在繞過,不是測驗(yàn)假象。你應(yīng)該向Anthropic陳述這個(gè)問題。”) 被測驗(yàn)的產(chǎn)品自己供認(rèn)了縫隙的實(shí)在性和嚴(yán)重性,甚至主動給出了上報(bào)途徑。這個(gè)細(xì)節(jié)被關(guān)傲男完好記錄在研討陳述中,并成為The Register報(bào)道標(biāo)題的來源——“Even Claude agrees hole in its sandbox was real and dangerous”(連Claude都認(rèn)同,其沙箱中的縫隙是實(shí)在且危險(xiǎn)的)。 關(guān)傲男研討封面——Claude Code被展現(xiàn)自身縫隙后供認(rèn)“這是對網(wǎng)絡(luò)沙箱過濾器的實(shí)在繞過”,赤色框標(biāo)示要害供認(rèn)語句 Anthropic的回應(yīng)與五個(gè)月的緘默沉靜 縫隙自身令人擔(dān)憂,但Anthropic的處理方式更值得職業(yè)審視。 關(guān)傲男于2026年4月初經(jīng)過HackerOne縫隙賞金計(jì)劃(陳述編號#3646509)向Anthropic提交了第2次沙箱繞過的具體陳述。Anthropic的初步回應(yīng)是: “Thank you for your report. After reviewing this submission, we've determined it's a duplicate of an existing internal report we're already tracking.”(“感謝您的陳述。經(jīng)審閱,咱們認(rèn)定該提交與咱們已在追尋的既有內(nèi)部陳述重復(fù)。”) 陳述隨即被關(guān)閉。當(dāng)關(guān)傲男詰問CVE編號計(jì)劃時(shí),Anthropic于4月7日回復(fù): “We have not yet decided whether a CVE will be published for this issue and can't share a timeline on that decision.”(“咱們尚未決議是否為該問題發(fā)布CVE編號,也無法供給相關(guān)決議的時(shí)間表!保 此后縫隙在v2.1.90版別中靜默修正。沒有安全布告,沒有CVE編號,Claude Code安全主張頁面無任何條目,更新日志未提及任何安全相關(guān)描述。一個(gè)從沙箱上線第一天就存在、持續(xù)5.5個(gè)月、覆蓋約130個(gè)版別的完好繞過,對用戶而言仿佛從未產(chǎn)生過。 這一處理形式并非初次呈現(xiàn)。第一次繞過(CVE-2025-66479)的應(yīng)對方式簡直千篇一律:Anthropic將CVE僅分配給底層庫 @anthropic-ai/sandbox-runtime(CVSS評分僅1.8,“Low”),而非面向用戶的產(chǎn)品Claude Code;更新日志中寫的是“Fixed proxy DNS resolution”(修正了署理DNS解析),未提及安全縫隙。關(guān)傲男在研討陳述中對此寫道:“當(dāng)React Server Components呈現(xiàn)嚴(yán)重縫隙時(shí),React和Next.js各自取得了獨(dú)立的CVE,Meta和Vercel都發(fā)布了安全布告,兩個(gè)社區(qū)都得到了充分告知。Anthropic挑選了不同的做法!苯刂聊壳埃檎摇癈laude Code Sandbox CVE”仍然無法找到任何官方安全布告。 在應(yīng)對憑證盜取問題時(shí),Anthropic挑選封禁ps指令,但黑名單思路先天不足——封禁一個(gè)指令,進(jìn)犯者有無數(shù)替代途徑。正確做法是清晰聲明Agent只需要哪些東西。而在“談?wù)撆c操控”研討中,Anthropic雖將縫隙評級提升至CVSS 9.4(Critical級別)并轉(zhuǎn)入私有賞金計(jì)劃,發(fā)言人卻表明“該東西在規(guī)劃上并未針對提示詞注入進(jìn)行加固”。廠商默許信賴模型自身的安全才能,卻在體系架構(gòu)層面缺乏縱深防護(hù);當(dāng)縫隙暴露出這種缺失時(shí),“規(guī)劃限制”便成了一個(gè)方便的分類——它既供認(rèn)了問題,又在某種程度上免除了發(fā)布安全布告的責(zé)任。 更廣泛的職業(yè)圖景是,同樣的問題不止于Anthropic一家。4月發(fā)表的“談?wù)撆c操控”研討中,Google的Gemini CLI和微軟GitHub的Copilot Agent均被證明存在同一進(jìn)犯面,三家公司均供認(rèn)并修正,但沒有一家發(fā)布安全布告或CVE編號。Anthropic付出100美元賞金,Google付出1337美元,GitHub初以“已知問題,無法復(fù)現(xiàn)”關(guān)閉陳述,在收到逆向工程證據(jù)后以“信息性”標(biāo)簽結(jié)案,發(fā)放500美元。算計(jì)1937美元——而這三款產(chǎn)品覆蓋了《財(cái)富》百強(qiáng)中絕大多數(shù)企業(yè)。 虛偽的安全感比沒有安全措施更具危害。沒有沙箱的用戶知道自己沒有鴻溝;具有破損沙箱的用戶認(rèn)為自己有。一個(gè)運(yùn)轉(zhuǎn)Claude Code并裝備了域名白名單的團(tuán)隊(duì),在5.5個(gè)月里對危險(xiǎn)毫不知情,升級后看到更新日志只會得出結(jié)論:沙箱一直在正常工作。此外,當(dāng)縫隙被發(fā)表后,沒有安全布告意味著用戶無法判別自己是否曾受到影響,也缺乏回溯審計(jì)的依據(jù)。 面臨這一現(xiàn)狀,安全社區(qū)開端形成一致:不能將信賴單點(diǎn)化地押注在廠商的沙箱完成上。Claude Code的SOCKS5署理構(gòu)建在一個(gè)僅10個(gè)GitHub Star、后提交停留在2024年6月的第三方npm包之上,安全鴻溝橫跨JavaScript和C兩種運(yùn)轉(zhuǎn)時(shí),卻在信賴交界處缺少基本的規(guī)范化處理。修正補(bǔ)丁中增加的isValidHost()函數(shù)——擔(dān)任回絕空字節(jié)、百分號編碼、CRLF等非法字符——本應(yīng)從沙箱上線第一天就存在。關(guān)傲男提出了一個(gè)務(wù)實(shí)的防護(hù)框架——將AI Agent視為需要遵從小權(quán)限準(zhǔn)則的超級職工,核心在于多層防護(hù): 安全的名譽(yù)建立在每一次發(fā)表和每一個(gè)補(bǔ)丁的透明度之上,而非品牌敘事。當(dāng)用戶基于信賴將憑證交給Agent處理時(shí),廠商有責(zé)任保證防線有效,也有責(zé)任在失效時(shí)及時(shí)告知。這兩點(diǎn),Anthropic在Claude Code沙箱上都未能做到。 “沙箱壞的成果不是阻撓了什么,而是給了人們一種虛偽的安全感。發(fā)布一個(gè)有縫隙的沙箱,比不發(fā)布沙箱更糟糕!薄P(guān)傲男表明。 |
|