Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
學會用 Claude,每件事都做得更好
claudeskill-me.com
最新
skill-creator 的評測系統到底準不準?實測它的 A/B 比較跟描述優化,看它漏掉了什麼  ·  你的 rm -rf 保護可能從沒生效過:用 bash -c 包一層,Claude Code 的安全提示直接被繞過  ·  Claude Mods 不是另一種 Plugin——它能畫 Pane、能攔截畫面渲染,一般外部擴充功能完全做不到  ·  執行 /compact 之後,Claude 突然不會用 Skill 了?不是故障,官方設計就是不會自動補回來  ·  Claude Code 現在支援 AGENTS.md 了,但網路上一半文章說的規則是過時的——CLAUDE.local.md 會讓它悄悄失效  ·  Hook 明明顯示「blocking error」,檔案卻還是被改了?PostToolUse 跟 PreToolUse 的「阻擋」根本不是同一件事
advanced

你的 rm -rf 保護可能從沒生效過:用 bash -c 包一層,Claude Code 的安全提示直接被繞過

30 秒速讀
rm 藏在字串參數裡,檢查機制根本看不到它——這句話講的不只是一個 bug,更是任何以指令字串比對做安全判斷的機制,共同的結構性弱點。

完整解析 +
01 · 為什麼發生?

我只用預設的互動模式,每次都手動點確認,需要擔心這個漏洞嗎?

風險相對低。這個漏洞需要兩個條件之一同時成立才能被觸發:使用 --permission-mode bypassPermissions 旗標,或是自己設定過允許 shell 執行的放行規則。如果你完全沒做過這兩件事,單純用預設模式、每次手動核准,日常使用情境下,這道 always-ask 保護原則上還是會正常跳出來。

但即使風險較低,仍然值得花一分鐘確認版本:如果未來你或團隊裡的人為了提升自動化效率而放寬權限設定,版本停留在有漏洞的 2.1.285 或更早,這個防護缺口就會立刻變成實際風險,而不是理論上的問題。

02 · 運作原理是什麼?

為什麼安全檢查不直接去解析 bash -c 字串裡面實際執行的指令是什麼?

這正是這類檢查機制常見的根本困境:解析 shell 字串裡實際會執行什麼指令,遠比單純比對「程式名稱是不是 rm」複雜得多。一段 bash -c 字串裡可能包含變數替換、管線、條件判斷、巢狀的子 shell,要準確判斷「這段字串展開後最終會不會執行一個危險的 rm」,等同於要完整實作一套 shell 語法解析器,而不是簡單的字串比對。

這也是為什麼這類漏洞容易在各種「以指令字串判斷風險」的工具裡反覆出現——不是開發者疏忽,而是「完整、正確地解析任意 shell 字串」這件事本身的工程成本很高。這次的修復具體怎麼處理這個問題,官方沒有公開太多實作細節,但從已修復的事實來看,至少這個特定的包裝手法已經被納入檢查範圍。

03 · 如何應用

npm 的 latest、next、stable 三個 dist-tag,日常安裝該選哪一個?

這起事件剛好是個現成的對照案例:10 月 2 日當天,latest 跟 next 都已經更新到修復後的 2.1.288,stable 卻還停在三天前(9 月 29 日)發布的 2.1.285。這代表「stable」這個名字給人的直覺印象——應該是經過更久驗證、比較穩當——跟「有沒有拿到最新安全修復」是兩件不一定同步的事。

沒有單一答案適用所有情境:如果你的工作流程對穩定性要求極高、能接受安全修復延後幾天才吃到,繼續釘選 stable 也合理,但要知道這個取捨的存在;如果你在意的是盡快拿到安全性修復,latest 通常比 stable 更新得快。不管選哪一個,實務上更重要的習慣是:定期手動確認目前裝的實際版本號,而不是只看 tag 名稱就假設自己是最新的。

04 · 我該怎麼做?

我不是工程師,只是公司裡負責管理同事電腦上 Claude Code 安裝的人,這件事對我有什麼實際影響?

如果你負責的是團隊內部的工具安裝與版本管理,這起事件給出一個很具體的檢查清單:先確認團隊成員目前安裝的 Claude Code 版本是否在 2.1.288 或之後;再確認有沒有任何自動化腳本或 CI 流程用了 --permission-mode bypassPermissions 或放寬過 shell 權限規則——這些流程是風險最高、最該優先更新的對象。

另外值得記住的一點是,如果團隊的安裝腳本是釘選 stable 這個標籤,不能假設它永遠等於「最新且安全」,這次事件就是一個三天的落差活生生的案例。比較保險的做法是在版本管理流程裡,額外加一步手動核對實際版本號,而不是只信任標籤名稱。

完整內容 +

Claude Code 對 rm -rf / 這類指向關鍵路徑(檔案系統根目錄、/usr、/etc、家目錄、工作目錄及其上層目錄)的刪除指令,有一道「always-ask」的強制安全提示——理論上,不管你用什麼權限模式,這類指令都該先跳出確認視窗。但這道防護有一個從 2026 年 9 月 23 日就被回報、直到 10 月 2 日才修復的繞過方式:只要把 rm -rf 包進 bash -c 或 sh -c 字串裡,這道檢查就完全看不到它。

繞過的機制:檢查看到的是 bash,看不到藏在字串裡的 rm

問題出在安全檢查的判斷方式上。這套檢查機制看的是「直接執行的程式名稱」——如果你直接呼叫 rm -rf /,程式名稱就是 rm,觸發保護;但如果你把同一個指令包成 bash -c 'rm -rf /' 或 sh -c "rm -rf /",檢查機制看到的執行程式名稱是 bash 或 sh,而真正要執行刪除的 rm -rf / 只是藏在一段字串參數裡——技術文章的說法很直接:「rm 藏在字串參數裡,檢查機制根本看不到它」。

這個漏洞至少從 v2.1.280 就存在(在 Windows 10 的 Git Bash 環境下測試確認),於 2026 年 9 月 23 日被回報。觸發條件需要兩個其中一個同時成立:使用 --permission-mode bypassPermissions 旗標,或是你自己設定過允許 shell 執行的放行規則。單純用預設互動模式、每次都手動核准的使用者,不受這個漏洞影響。

同一個版本還修了另一個相關的繞過:輸出重導向

除了 bash -c 包裝之外,還有一個獨立但性質類似的繞過方式:針對 / 或家目錄的危險 rm 指令,如果同時夾帶了把輸出重導向到 ~ 或萬用字元路徑的語法(類似 rm -rf / > ~/某檔案 的結構),同樣會讓這個指令失去原本該有的 always-ask 保護。這個問題跟 bash -c 繞過一起,在 v2.1.288(2026 年 10 月 2 日,UTC 18:30 推上 npm)被修復。

最容易被忽略的細節:npm 的 stable 標籤落後了三個版本

即使你知道這個漏洞已經修復,實際上能不能吃到修復,取決於你怎麼安裝 Claude Code。報導指出,截至 2026 年 10 月 2 日 UTC 21:05,npm 上 latest 跟 next 兩個 dist-tag 都已經指向修復後的 2.1.288,但 stable 標籤仍然停在 9 月 29 日發布的 2.1.285——落後修復版本整整三個版次。任何固定釘選 stable 這個標籤安裝的使用者,實際上還在跑有漏洞的版本,而且沒有任何明顯提示告訴你這件事。

該怎麼確認自己有沒有受影響

第一步是確認目前安裝的版本號,比對是不是 2.1.288 或更新;如果是透過 npm 安裝、又沒有特別指定版本或標籤,先確認你拿到的究竟是哪個 dist-tag 對應的版本,不要假設「我裝的是正式版,應該是最新的」——這次的落差正好說明「stable」這個名稱本身不保證是最新修復過的版本。第二步是檢視自己有沒有使用 --permission-mode bypassPermissions,或是在設定裡放行了 shell 相關的 ask 規則——如果兩者都沒有,日常互動模式下的手動核准本來就會擋下這類指令,受影響的風險相對低;如果你為了自動化流程刻意放寬過這些限制,就該優先確認版本是否已經更新。

資料來源:Claude Code 2.1.288 Fixes Dangerous rm Bypass, but npm Stable Lags、Claude Code 2.1.288 fixes an rm guard a bash -c wrapper walked past, but stable is on 2.1.285
圖解
bash -c 包裝繞過檢查,與 npm stable 落後的修復缺口安全檢查只看最外層程式名稱,bash -c 把 rm -rf 藏進字串;修復已發在 latest,但 stable 標籤仍停在 2.1.285The bash -c Wrapper Bypass — and Why the Fix Still Missed Some UsersCommand typedbash -c 'rm -rf /'program name = bashAlways-ask checkinspects program name onlysees "bash" → not criticalrm -rf / runsno confirmation promptv2.1.280 – v2.1.287Exploitable only with --permission-mode bypassPermissions or shell-allow rules (default manual approval unaffected)npm dist-tags on Oct 2, 2026 (fix shipped in 2.1.288)latest2.1.288 — fixedsafenext2.1.288 — fixedsafestable2.1.285 — still vulnerable3 releases behind the fixPinning to "stable" felt like the cautious choice — and left the hole openClaude Skill Me · claudeskill-me.com
歡迎截圖分享,轉載請註明來源
提問
請至少輸入 10 個字
相關文章
設了 Auto Mode 就以為安全了?權限模式跟沙盒邊界是兩道完全不同的防線,混為一談會出事
advanced · 09/28
Hook 明明顯示「blocking error」,檔案卻還是被改了?PostToolUse 跟 PreToolUse 的「阻擋」根本不是同一件事
practice · 09/28
為什麼一句「hi」就吃掉 2 萬多個 Token?拆解 Claude Code 的固定啟動開銷
advanced · 09/05
Subagent 不是更聰明的小 Claude——它解決的是隔離問題,不是能力問題
advanced · 08/31
相關新聞
更多相關主題