0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code v2.1.221必須アップデート:Bash権限バイパスを修正

0
Posted at

はじめに

Anthropic は Claude Code の新バージョン v2.1.221 をリリースしました。今回のリリースは合計 39 件の変更を含みますが、中でも注目すべきは zsh の [[ ]] 条件式を悪用した Bash ツールの権限チェックバイパスという Critical 級のセキュリティ修正です。

Claude Code は Bash コマンドを実行する前にユーザーへ許可を求める権限モデルを持っていますが、特定の書き方をすることでこのチェックをすり抜けられる不具合が存在していました。これはサンドボックス/権限モデルの信頼性そのものに関わる問題であり、旧バージョンを使い続けること自体がリスクになります。

本記事では、

  • 今すぐ対応すべき Critical / High の修正
  • 開発体験を変える新機能(サンドボックスの認証情報マスキング、VSCode Focus view など)
  • ワークフローに影響する挙動変更(バックグラウンドセッションの commit/push、Gateway API の検証強化)

を中心に整理します。

📌 影響を受ける人

  • macOS/Linux で zsh をデフォルトシェルにして Claude Code を使っている人(全員が対象、特に Critical 修正)
  • Windows で PowerShell 経由のコマンド実行を許可している人
  • CI/スクリプトから -p(print モード)+ --mcp-config で MCP サーバーを併用している人
  • バックグラウンドセッション(自動実行タスク)を運用している人
  • 自前の Gateway 経由で Claude API を呼んでいる人(model フィールドの型に注意)

変更の全体像

39 件の変更を性質ごとに分類すると次のようになります。Critical / High の修正は「今すぐ更新すべき理由」、それ以外は「更新すると得られる改善」として整理できます。

変更内容

severity 別サマリー(Critical/High のみ)

ID 変更内容 severity 対応要否
change-001 Bashツール 権限チェックバイパス修正(zsh [[ ]] 🔴 Critical 必須
change-002 PowerShell 引用符パスの権限チェック誤処理修正 🟠 High 必須
change-003 サンドボックス認証情報に mode: "mask" 追加 🟠 High 任意(推奨)
change-007 print モードで --mcp-config の MCP 接続遅延を修正 🟠 High CI利用者は必須
change-008 バックグラウンドセッションの commit/push 仕様変更 🟠 High 必須

1. Bash ツールの権限チェックバイパス修正(Critical)

⚠️ Breaking Change(セキュリティ)
zsh の [[ ]] 正規表現条件式の中に隠して書かれたコマンドが、権限プロンプトを一切表示せずに実行されてしまう不具合がありました。v2.1.221 でこの抜け道が塞がれ、該当コマンドも通常どおり承認ダイアログが出るようになります。

権限チェックをすり抜けられるということは、Bash ツールの許可設定(allow/deny/ask)がそもそも機能していない状態と同じです。特に自動承認(auto モード)や CI での無人実行を行っている場合、意図しないコマンドが無許可で実行されるリスクがありました。

2. Windows PowerShell の引用符パス誤処理修正(High)

引用符("')を含むファイルパスを PowerShell 権限チェックが正しく解釈できず、本来なら承認が必要なコマンドが判定をすり抜ける可能性がありました。Windows で Claude Code を使っているチームは特に確認しておきたい修正です。

3. サンドボックス認証情報の mode: "mask"(High・Linux/WSL)

新しいサンドボックス設定モード mask が追加されました。エージェントプロセスは実際の API キーではなくセンチネル(ダミー)値を読み、サンドボックスプロキシが外部への送信(egress)時にだけ本物の値へ置換します。

💡 Tips
macOS では現時点でファイルマスキングが未対応で、指定しても deny にフォールバックします。Linux/WSL 環境から先に試すのがおすすめです。extract 正規表現を使えばファイル全体でなく特定範囲だけをマスクすることもできます。

4. print モードでの MCP 接続タイミング修正(High)

非対話の -p(print モード)で --mcp-config を指定した際、MCP サーバーの接続が初回ターンに間に合わず、ツール呼び出しがプレーンテキストとしてそのまま出力されてしまう不具合が修正されました。CI パイプラインやスクリプトから MCP を併用している場合は影響が大きいため、該当する構成では動作確認をおすすめします。

5. バックグラウンドセッションの成果物の扱いが変更(High)

バックグラウンドセッションの終了時挙動が次のように変わりました。

項目 旧挙動 新挙動
作業の保全 明示的な保証なし 必ず commit / push を実行
ドラフト PR タスクが必要とする場合のみ作成
git 運用ルール 未考慮 CLAUDE.md の指示に従う
完了報告 作業の保存先(ブランチ/PR)を必ず報告

バックグラウンド実行を業務フローに組み込んでいる場合、CLAUDE.md の Git ワークフローセクションを整備しておくと挙動を制御しやすくなります。

6. Gateway API の model フィールド検証を厳格化(Medium・破壊的変更)

model フィールドに数値やオブジェクトなど非文字列値を渡していたクライアントは、今後リクエストが 400 エラーで拒否されます。自前のラッパーやプロキシから Gateway を呼んでいる場合はリクエスト生成部分の型を確認してください。

その他の主な改善(Medium/Low)

  • VSCode Focus view: ツール実行ログを折りたたみ、ターン単位のサマリー表示に切り替え可能(Ctrl+Alt+F
  • claude-api スキルに prompt-audit サブコマンド: 旧モデル世代向けの記述をプロンプト/ツール説明から検出
  • Google Vertex AI でツール検索を再有効化(Claude 4.5 世代以降): 多数の MCP ツールを接続する構成でコンテキスト削減の恩恵を受けられる
  • auto モードの権限チェックがキャッシュ効率化: プロンプトキャッシュのコスト削減
  • Windows 起動処理を kernel32 ネイティブ呼び出しに変更: powershell.exe を監視するエンドポイントセキュリティ製品の警告が出なくなる

影響と対応

  1. 今すぐ v2.1.221 以降へ更新する(Critical のセキュリティ修正のため、これが最優先)
  2. zsh を使っている場合は特に優先度高で更新する。旧バージョンのまま許可ルールに依存した運用を続けない
  3. Windows で PowerShell 経由の権限チェックを使っている場合は、更新後に引用符を含むパスの承認プロンプトが正しく出るか確認する
  4. CI / スクリプトで -p --mcp-config を使っている場合、更新後に MCP ツール呼び出しが正常にツール呼び出しとして機能するか(テキスト化されていないか)確認する
  5. バックグラウンドセッションを運用しているなら、CLAUDE.md の Git 運用ルール(ブランチ命名、PR 作成基準など)を明記し直す
  6. 自前クライアントから Gateway API を叩いている場合、model フィールドが常に文字列であることをコード側で保証する
  7. Linux/WSL でサンドボックスを使っているなら、認証情報ファイルの mode: "mask" 移行を検討する(macOS は現時点で deny フォールバックのみ)

コード例

サンドボックス設定: 認証情報ファイルへの mode: "mask" 適用

Before(認証情報をそのまま渡す設定、または deny で完全ブロック)

sandbox:
  credentialFiles:
    - path: "~/.config/myapi/credentials.json"
      mode: "deny"   # コマンドから一切参照不可

After(センチネル値に置換し、egress 時のみ実値へ復元)

sandbox:
  credentialFiles:
    - path: "~/.config/myapi/credentials.json"
      mode: "mask"
      # 特定キーだけをマスクしたい場合は extract で範囲を絞れる
      extract: "\"api_key\"\\s*:\\s*\"([^\"]+)\""

Gateway API: model フィールドの型に関する Before/After

Before(非文字列でも下流へ転送されていた)

{
  "model": 123,
  "messages": [{ "role": "user", "content": "Hello" }]
}

After(v2.1.221 以降は 400 で拒否される)

// HTTP 400 Bad Request
{
  "error": {
    "type": "invalid_request_error",
    "message": "model must be a string"
  }
}
// 正しいリクエスト
{
  "model": "claude-sonnet-5",
  "messages": [{ "role": "user", "content": "Hello" }]
}

まとめ

  • Claude Code v2.1.221 の最重要ポイントは zsh [[ ]] を悪用した Bash 権限チェックバイパスの修正(Critical)。権限モデルの信頼性に直結するため、全ユーザーが速やかに更新すべき
  • Windows PowerShell の引用符パス誤処理修正も High severity で、Windows ユーザーは併せて確認が必要
  • 新機能としてはサンドボックス認証情報の mode: "mask"(Linux/WSL)が特に有用で、生の API キーをエージェントプロセスに触れさせずに済む構成が可能になった
  • バックグラウンドセッションの commit/push 挙動、Gateway の model フィールド検証強化など、運用フローに影響する変更もあるため CLAUDE.md やクライアントコードの見直しを推奨する
  • その他 VSCode の Focus view、prompt-audit サブコマンド、Vertex AI のツール検索再有効化など、日々の開発体験を改善する変更も多数含まれている

セキュリティ修正が中心のリリースであるため、他の更新を後回しにしてでも まずはバージョンアップを優先してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?