6月30日、The Hacker Newsが「GuardFall Exposes Open-Source AI Coding Agents to Decades-Old Shell Injection Risks」と題した記事を公開した。オープンソースのAIコーディングエージェント11種のうち10種が、数十年前から知られるシェルインジェクション手法によって安全チェックを突破される脆弱性を抱えている——セキュリティ企業Adversa AIが発表したこの研究は「GuardFall」と名付けられており、合計約548,000のGitHubスターを持つツール群に影響する。
「テキストで検査、シェルで実行」という根本的なズレ
問題の本質はシンプルだ。多くのAIコーディングエージェントは、シェルコマンドを実行する前に危険なパターンのブロックリストと照合する。しかしフィルターはテキストとしてコマンドを検査し、実際に実行するのはbashだ。bashはテキストを変換してから実行するため、フィルターとシェルは実質的に「別のもの」を見ている。
最も単純な例を挙げると、r''m という文字列はテキストマッチャーから見れば rm ではない。しかしbashは空のクォートを除去して rm として実行する。同様の手法はほかにも存在し、base64エンコードしたコマンドをシェルにパイプする手法や、find や dd といった一般的なツールを破壊的なフラグと組み合わせる手法なども機能する。
Adversa AIはこれを「バグではなく、危険な慣習であり問題のクラスだ」と表現している。ブロックリストのパターンを追加しても根本的な解決にはならず、追跡・パッチ適用できる単一のCVEが存在しない点が厄介だ。この構造は、後述するTrustFallやAgentjackingといった今年の一連の研究にも共通して見られるものである。
テスト対象11ツール中10ツールが突破された
攻撃が成立するには2つの条件が揃う必要がある。
- AIが悪意あるコマンドを出力すること。露骨な
rm -rfは拒否されるが、ビルドファイルやツールの「ドキュメント応答」の中に埋め込まれた同じコマンドは通常の手順として実行されてしまう - エージェントが自動実行モード(
--auto-execや--auto-run等のフラグが有効、またはコンテナサンドボックスが無効)で動いていること。自動化パイプラインではこの構成が珍しくない
実際のテストにはClaude Sonnet 4.6が使用された(※元記事に記載されているバージョン番号をそのまま引用している)。
脆弱性が確認されたのは opencode、Goose、Cline、Roo-Code、Aider、Plandex、Open Interpreter、OpenHands、SWE-agent、Hermes の10ツール。HermesについてはGitHubのissueトラッカーにも問題が記録されている。これら10ツールの合計GitHubスター数は2026年5月時点で約548,000に上る。
唯一防御に成功したのは 「Continue」 のみ。Continueは、bashが実際にコマンドを分解するのと同じ方法でコマンドを解析したうえで判定し、破壊的なコマンドのハードブロックリストを保持する。ただしデフォルトのエディタモードでは全ペイロードを防いだが、コマンドライン自動実行モードでは一部が通り抜けた(最も破壊的なものはハードブロックで止まった)。Adversa AIはこの防御設計を「移植可能」と評価しており、「経験あるエンジニアなら約2日で再実装できる」としている。
これらのエージェントが危険な理由
AIコーディングエージェントはシェルコマンドをユーザーのフルアカウント権限で実行する。罠を仕掛けたリポジトリや依存パッケージを読み込ませれば、隠された命令が ~/.ssh のSSHキーや ~/.aws のクラウド認証情報を含むホームディレクトリ全体を標的にできる。
この攻撃経路はAgentjacking(Webページ経由でAIコーディングエージェントを乗っ取る手法)やAutoJack(単一のWebページから自動実行を誘発する手法)と組み合わせることで、より広範な被害につながりうる。いずれも「信頼できないテキストが、ガードがbashの挙動を理解する前に本物のシェルに到達する」という共通構造を持つ。
今すぐできる対策
Adversa AIが挙げる緩和策は以下のとおり。いずれも完全な解決策ではないが、リスクを下げる効果はある。
$HOMEを使い捨てのフォルダに向けることで、SSHキーやAWS認証情報を届かない場所に置く--auto-exec、--auto-run、--auto-test、dangerously-skip-permissionsなどの自動実行フラグは、人間が介在できない場合以外は無効にする- フォークからのプルリクエストに対してエージェントを実行しない
- リポジトリ内の設定ファイル(
.aider.conf.yml等)は信頼できないコードとして扱う。悪意ある設定ファイルは最初の編集承認時に攻撃を引き起こせる
今年続く一連の発見の一部
GuardFallは今年の類似研究の流れの中に位置する。Adversa AI自身のTrustFallはClaude Code、Cursor、Gemini CLI、Copilot CLIに影響を与えるリモートコード実行の脆弱性を報告したもので、Claude Codeのdenyルールバイパスも別途明らかにされている。これらの研究はいずれも、AIエージェントが「テキスト処理系としての自分」と「シェルを動かす環境」の境界を正確に把握できていないという同一の問題を異なる角度から突いている。
詳細はGuardFall Exposes Open-Source AI Coding Agents to Decades-Old Shell Injection Risksを参照していただきたい。