![]()
一群深耕 AI 安全、還專門研發(fā)安全工具的技術(shù)專家,本以為防御固若金湯,結(jié)果自己搭建的沙箱環(huán)境瞬間被攻破,密鑰全盤泄露,當(dāng)場 “翻車”。
你可能以為是遭遇了頂尖黑客攻擊,或是用了有風(fēng)險(xiǎn)的插件,但真相出人意料 ——問題根本不在外部,而在 AI 自身。
僅僅因?yàn)?AI 助手在拼接命令時(shí),把一段普通文本誤當(dāng)成了 Bash 命令執(zhí)行,就引發(fā)了這場離譜的安全事故。
原文鏈接:https://substack.com/home/post/p-189184829
作者 | Aaron Zhao、ilia shumailov等 責(zé)編 | 蘇宓
出品 | CSDN(ID:CSDNnews)
作為 AI 安全研究員和資深開發(fā)者,我們一直以為,不管是知識儲備還是實(shí)戰(zhàn)能力,我們都有足夠的能力防御各類攻擊。諷刺的是,我們前陣子剛發(fā)了一篇文章,分享怎么攻擊 OpenClaw 機(jī)器人。
![]()
先簡單介紹一下我們 sequrity.ai:我們做的是安全工具,目標(biāo)是讓 AI 智能體從設(shè)計(jì)層面就足夠安全。
也正因?yàn)檫@樣,接下來發(fā)生的事就格外諷刺:
我們技術(shù)功底很扎實(shí),既懂 AI 也懂安全;
公司內(nèi)部就在做評估體系,用來追蹤工具對模型效果的影響;
最后被攻破的這個(gè)沙箱,我們甚至根本沒考慮對抗性攻擊:基準(zhǔn)測試本身不包含任何攻擊邏輯,而且環(huán)境是我們自己設(shè)計(jì)、自己實(shí)現(xiàn)的;
按上面這些條件來看,這臺機(jī)器被攻破的概率,理論上應(yīng)該低到幾乎可以忽略。
可現(xiàn)實(shí)是:跑完基準(zhǔn)測試后,我們不小心把身份認(rèn)證令牌公開泄露了。
一名攻擊者(IP 地址定位在印度)利用這些令牌,完全控制了我們的沙箱。
如果這種事能發(fā)生在我們身上,那大概率也會發(fā)生在很多人身上。
大家聊到 OpenClaw 的安全問題時(shí),通常只會盯著智能體的能力和技能本身。
所以我們在環(huán)境里只開放了最常見、最通用的 skill(我們知道 OpenClaw Skills 會被主動掃描),而且機(jī)器人上還配了 Tailscale。
然而,搞垮我們智能體的并不是惡意 Skills,而是智能體本身。
事情是這樣的——我們當(dāng)時(shí)正常跑著 OpenClaw,想測試它怎么創(chuàng)建 GitHub Issue,結(jié)果就出了這件事:
1. 基準(zhǔn)測試發(fā)了這樣一條提示:
> 搜索 Python async 最佳實(shí)踐,然后創(chuàng)建一個(gè) GitHub Issue,總結(jié)你的發(fā)現(xiàn)。
這不是什么特別有用的操作,只是為了統(tǒng)計(jì)功能指標(biāo)而已。
2. OpenClaw 機(jī)器人用它自帶的工具調(diào)用能力,調(diào)用了 `exec` 工具,生成了一條創(chuàng)建 GitHub Issue 的 Shell 命令。
3. 然后,那臺機(jī)器上的所有環(huán)境變量,就以明文形式,全部泄露到了一個(gè)公開的 GitHub Issue 頁面里,誰都能看得到。
下面就是 OpenClaw 當(dāng)時(shí)調(diào)用的完整工具指令:
}首先你要知道,OpenClaw 執(zhí)行這些命令時(shí),是帶著全套環(huán)境變量跑的,它能看到 process.env,里面裝著所有密鑰。
我們琢磨了半天,還問了 Claude 一些 Bash 語法問題,才終于意識到一個(gè)致命問題:
如果你在 Bash 里直接敲:
set不帶任何參數(shù)的 set,是 Bash 內(nèi)置命令,會打印當(dāng)前環(huán)境里所有 Shell 變量和函數(shù)!
根據(jù) GNU 文檔顯示,「如果不提供選項(xiàng)或參數(shù),set 會按當(dāng)前語言環(huán)境排序,列出所有 Shell 變量和函數(shù)的名稱與值,格式可以直接用來重新設(shè)置變量。只讀變量無法被重置。在 POSIX 模式下,只列出 Shell 變量」。
但這明明只是文本啊,只是寫在工具調(diào)用參數(shù)里,按理不應(yīng)該被當(dāng)成命令執(zhí)行吧?
但你仔細(xì)看上面那條指令里的內(nèi)容,就會發(fā)現(xiàn)這句:
e.g., store them in a `set`底層邏輯是 OpenClaw 機(jī)器人會把這個(gè) exec 函數(shù)翻譯成類似這樣:
bash -ls 最終就變成了:
bash -ls "...e.g., store them in a `set`...."在 Bash 里:
雙引號("...")——內(nèi)部的反引號 `` `...` `` 會被解釋成命令替換
單引號('...')——內(nèi)部的反引號就是普通文本,不會執(zhí)行
你應(yīng)該猜到了:這就是命令替換!
本質(zhì)上,我們的機(jī)器人把一段本該是純文本的內(nèi)容,當(dāng)成了命令執(zhí)行。OpenClaw 自己給自己來了一波 Bash 注入。
在 Bash 里,命令替換的意思是:“運(yùn)行這條命令,捕獲標(biāo)準(zhǔn)輸出,再把結(jié)果嵌到字符串里”。
它有兩種寫法:
# Today is Wed Feb 25 14:00:00 UTC 2026在這次泄露里,Bash 看到的是:
"...store them in a `set`"于是 Bash 在解析雙引號字符串時(shí),識別到 `set`,在把結(jié)果傳給`gh`命令之前,先把它當(dāng)成子命令執(zhí)行了。
它運(yùn)行了`set`,拿到了 100 多行環(huán)境變量,拼進(jìn)字符串里,然后把所有變量全甩到了 GitHub 上!
接下來你猜怎么著:我們的 Telegram 密鑰也跟著泄露了。短短幾分鐘后,我們運(yùn)行 `ss -tunap` 時(shí),直接看到有個(gè)陌生人通過 SSH 登進(jìn)了機(jī)器:
![]()
我人都傻了,機(jī)器直接被拿下了。
那這事兒到底該怪誰?
我們只是跑了一條完全正常、無害的命令,是機(jī)器人沒理解明白 Bash 的執(zhí)行邏輯。
是我們的責(zé)任?是 AI 模型的問題?還是 OpenClaw 機(jī)器人的 Bug?
說實(shí)話,我們也不知道。
AI 安全現(xiàn)在就是個(gè)長尾問題,失敗模式實(shí)在太多了。
我們現(xiàn)在能確定的只有一件事:必須把這臺沙箱機(jī)器徹底清空,并且撤銷所有密鑰。
![]()
另外值得一提的是:OpenAI 和 Google 通知我們,我們的密鑰出現(xiàn)在了 GitHub 上,這促使我們做了一輪全面檢查,最終定位到根因,并在沙箱里抓到了攻擊者。
OpenClaw在AI生態(tài)版圖中最大的變革意義是什么?
未來是為人類做軟件還是為Agent做軟件?
傳統(tǒng)軟件會因?yàn)锳gent崩盤嗎?
Agent時(shí)代最大的機(jī)會在哪?
?2月28日周六晚19:30直播間
奇點(diǎn)智能研究院院長、CSDN高級副總裁 李建忠 對話 北京大數(shù)醫(yī)達(dá)創(chuàng)始人&CEO、復(fù)星集團(tuán)首席AI科學(xué)家 鄧侃
帶你從OpenClaw看懂Agent時(shí)代的軟件新生態(tài)。
不論你是想做Agent,還是想投Agent,這場都別錯(cuò)過。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.