0
1

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のdeny rulesが50コマンドで無効化される——hookで防ぐ方法

0
Last updated at Posted at 2026-04-12

Claude Codeのdeny rules(禁止ルール)に、深刻な脆弱性が見つかった。

50個以上のサブコマンドを連結すると、すべてのdeny rulesが無効化される。

Adversa AIの調査で判明した。内部的に50サブコマンドの上限があり、50を超えるとセキュリティチェックがスキップされて「ユーザーに確認」にフォールバックする。自律運行中(--dangerously-skip-permissions等)ではそのまま実行される。

何が起きるか

settings.jsonにこう書いてあるとする:

{
  "permissions": {
    "deny": ["Bash(rm *)"]
  }
}

rm -rf /important-data は単体ではブロックされる。しかし:

true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; true; rm -rf /important-data

これはブロックされない。50個のtrue(何もしないコマンド)の後に危険なコマンドを置くだけで、deny rulesを完全にバイパスできる。

同時期に起きた実被害

この脆弱性と同じ4月に報告された実害:

deny rulesを設定していても安全ではない。

パッチ状況

Anthropicはv2.1.90(4月6日リリース)でこの脆弱性を修正した。v2.1.90以上にアップデートしていれば、deny rules自体は正常に動作する。

ただし、deny rulesには構造的な限界がある:

  • パターンマッチングに依存するため、コマンドの書き方を変えるだけで回避される可能性がある
  • 新しいバイパス手法が見つかるたびにアップデートが必要

hookはdeny rulesの上位互換として、コマンドの内容を自由にスクリプトで検査できる。アップデートを待たずに自分で防御ロジックを書ける。

hookで防ぐ

PreToolUse hookはdeny rulesとは別の仕組みで動く。サブコマンド数の制限を受けない。

#!/bin/bash
# subcommand-chain-guard.sh
THRESHOLD=${CC_SUBCOMMAND_LIMIT:-20}
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
[ -z "$CMD" ] && exit 0

SUBCOMMAND_COUNT=$(echo "$CMD" | tr ';' '\n' | tr '&' '\n' | tr '|' '\n' | grep -c '[^ ]' 2>/dev/null || echo 1)

if [ "$SUBCOMMAND_COUNT" -gt "$THRESHOLD" ]; then
    echo "BLOCKED: Command contains $SUBCOMMAND_COUNT subcommands (limit: $THRESHOLD)." >&2
    echo "  Claude Code ignores deny rules after 50 subcommands." >&2
    exit 2
fi

# 50個のtrue + 危険コマンドのパターンも検出
NOOP_COUNT=$(echo "$CMD" | grep -oE '\btrue\b|^:|;\s*:' | wc -l 2>/dev/null || echo 0)
if [ "$NOOP_COUNT" -gt 10 ]; then
    echo "BLOCKED: Suspicious no-op padding detected ($NOOP_COUNT no-ops)." >&2
    exit 2
fi

exit 0

settings.jsonに追加:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "bash ~/.claude/hooks/subcommand-chain-guard.sh"
      }]
    }]
  }
}

ワンコマンドで導入

cc-safe-setup(664個以上のhook)にこのhookが含まれている:

npx cc-safe-setup

個別にインストールする場合:

npx cc-safe-setup --install-example subcommand-chain-guard

キャッシュ破壊でトークンが数倍消費される問題
deny rulesバイパスだけでなく、git statusがキャッシュを壊す構造的問題も発見されている。Cache Breakage Fixで原因と対策をまとめた。

自分の環境が脆弱か確認する
Security Checkupで6つの質問に答えるだけで、deny rulesバイパスを含むClaude Codeの脆弱性を診断できる(無料)。


📖 トークン消費に困っているならClaude Codeのトークン消費を半分にする——800時間の運用データから見つけた実践テクニック(¥2,500・はじめに+第1章 無料)

📖 AIで事業を回す実体験を全記録Claude Code×個人事業 800時間の全記録(¥800・第2章まで無料)


⚠️ 新CVE公開(2026年4月): CVE-2026-21852でプロジェクト内の.claude/settings.jsonからAPIキーが窃盗される脆弱性が判明。npx cc-safe-setupはユーザーレベル設定のみを使用するため、この攻撃に免疫がある。詳細: Opus 4.7 Survival Guide(48問題追跡中)

⚠️ Opus 4.7をお使いの方へ(2026年4月)
Opus 4.7で安全分類器の不具合・トークン消費急増が報告されています。Safety Scannerで設定を無料チェック。対策はSurvival Guideを参照。


📚 主張と実態の乖離の事例の整理と防衛の手順 (2026 年 5 月 22 日発売)

本記事の「deny rules が50コマンド以上の連結で無効化される」 (Adversa AI の発見) は、 安全の規則の主張 (deny の場で阻止) と実態 (50件の上限で素通り) の乖離の最強の独立検証の事例。 Anthropic 自身が v2.1.136settings.autoMode.hard_deny を追加で正式に認知。 本書は同型の許可規則の素通りの系統を、 業界の独立検証の合図 (4件以上の業界の媒体の独立検証) と並べて整理。

5/22 発売の Claude Code Claim-Verify Handbook で、 同型の主張と実態の乖離の事例を 130 件 (本文 15 件 + 付録 D 115 件) に整理した試し読み (無料、 約 9,900 字、 日本語) を公開済。 14 件の防衛の手順と 5 件の自動の点検の道具 (4 件は cc-safe-setup の枝で取り込み待機、 1 件は本書の付録の標準の道具、 合計 165 件以上の試験が全件通過) も収録。

購入の検討の判断の助け (Should I buy the Claim-Verify Handbook?) の対話型の道具で、 無料の hook の解説で十分の場合の判定の経路も整理しています。


📚 関連の参考資料 (2026年5月28日追加)

本記事の内容と関連する整理を、 公開済の素材で articulate しています。

  • 6月15日に予定された課金分離(当日に一時停止・再実施に備える)の判定の枠組み: Migration Playbook v2 (Gumroad、 $19) ——14日後の決定の整理、 9集積の文脈、 130件の claim-verify divergence の事例。 60秒の購入判定の道具で事前判定が可能

  • 月次の追補の継続: Claude Code 事故まとめ(無料・月次) ——5月から12月の8ヶ月の章本文 (cache_control / 副の作業者 / AGENTS.md / Pro Max / 権限 / Skills / v2.1.150 / AUP false-positive)

  • 9集積の枠組みの英語の長編 Gist: The 9-Cluster Framework: Mapping the Structural Failure Surface of Claude Code Operator Defense ——約3,300単語、 全件の集積の mechanism / symptom family / defense path の整理。 cluster 9 (Usage Policy classifier over-trigger on Opus、 25+件の起票) の対話型診断道具: 4問の質問→推奨経路の道具

  • 約800件の MIT ライセンスの hook: cc-safe-setup (GitHub) ——9集積に対応する hook を整備した累計


800時間の Claude Code 運用データから、トークン消費の削減・複数ベンダー(Claude / Codex / Gemini / Copilot)の並行運用・事故の検知と復旧・サブエージェントの沈黙の失敗対策など、主題別の手引きを公開しています。気になる人は著者の本の一覧から、価格と評価を見て選べます。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?