我只用預設的互動模式,每次都手動點確認,需要擔心這個漏洞嗎?
風險相對低。這個漏洞需要兩個條件之一同時成立才能被觸發:使用 --permission-mode bypassPermissions 旗標,或是自己設定過允許 shell 執行的放行規則。如果你完全沒做過這兩件事,單純用預設模式、每次手動核准,日常使用情境下,這道 always-ask 保護原則上還是會正常跳出來。
但即使風險較低,仍然值得花一分鐘確認版本:如果未來你或團隊裡的人為了提升自動化效率而放寬權限設定,版本停留在有漏洞的 2.1.285 或更早,這個防護缺口就會立刻變成實際風險,而不是理論上的問題。
為什麼安全檢查不直接去解析 bash -c 字串裡面實際執行的指令是什麼?
這正是這類檢查機制常見的根本困境:解析 shell 字串裡實際會執行什麼指令,遠比單純比對「程式名稱是不是 rm」複雜得多。一段 bash -c 字串裡可能包含變數替換、管線、條件判斷、巢狀的子 shell,要準確判斷「這段字串展開後最終會不會執行一個危險的 rm」,等同於要完整實作一套 shell 語法解析器,而不是簡單的字串比對。
這也是為什麼這類漏洞容易在各種「以指令字串判斷風險」的工具裡反覆出現——不是開發者疏忽,而是「完整、正確地解析任意 shell 字串」這件事本身的工程成本很高。這次的修復具體怎麼處理這個問題,官方沒有公開太多實作細節,但從已修復的事實來看,至少這個特定的包裝手法已經被納入檢查範圍。
npm 的 latest、next、stable 三個 dist-tag,日常安裝該選哪一個?
這起事件剛好是個現成的對照案例:10 月 2 日當天,latest 跟 next 都已經更新到修復後的 2.1.288,stable 卻還停在三天前(9 月 29 日)發布的 2.1.285。這代表「stable」這個名字給人的直覺印象——應該是經過更久驗證、比較穩當——跟「有沒有拿到最新安全修復」是兩件不一定同步的事。
沒有單一答案適用所有情境:如果你的工作流程對穩定性要求極高、能接受安全修復延後幾天才吃到,繼續釘選 stable 也合理,但要知道這個取捨的存在;如果你在意的是盡快拿到安全性修復,latest 通常比 stable 更新得快。不管選哪一個,實務上更重要的習慣是:定期手動確認目前裝的實際版本號,而不是只看 tag 名稱就假設自己是最新的。
我不是工程師,只是公司裡負責管理同事電腦上 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 字串裡,這道檢查就完全看不到它。
問題出在安全檢查的判斷方式上。這套檢查機制看的是「直接執行的程式名稱」——如果你直接呼叫 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)被修復。
即使你知道這個漏洞已經修復,實際上能不能吃到修復,取決於你怎麼安裝 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 規則——如果兩者都沒有,日常互動模式下的手動核准本來就會擋下這類指令,受影響的風險相對低;如果你為了自動化流程刻意放寬過這些限制,就該優先確認版本是否已經更新。