OpenHands のブログに掲載されたこの記事は、AI エージェントを扱ううえでの重大なセキュリティ上のジレンマと記事が呼ぶものを取り上げている。ある組み合わせの能力を与えられたエージェントは プロンプトインジェクション 攻撃に対して脆弱になり、エージェントに curl へのアクセスを与えるだけで、注入されたコンテンツにさらされると同時に、データを外部へ持ち出す手段も与えてしまう。記事はこれを、通常は人間が見守ることなく動作する OpenHands のような自律性の高いエージェントにとって深刻な問題と捉え、侵害の可能性を減らすための手順を示している。
議論は 2 つの部分から成る。現在のモデルは明白な攻撃をしばしば見抜くが、その防御は LLM の曖昧で非決定的な振る舞いに依存しており、モデルによっても異なるため、それだけに頼ることはできない。そのうえで記事は、このリスクを、インストールスクリプトをシェルにパイプで渡す、見知らぬプロジェクトで npm install を実行するといった、開発者がすでに受け入れている脅威と並べて位置づけ、4 つの系統の緩和策について、それぞれが何を犠牲にするかを比較検討していく。
要点
- Claude Sonnet 4 で動作する OpenHands に、スクリプトを
curlで取得してbashにパイプで渡すよう指示する pastebin のメッセージを閲覧させたところ、エージェントはセキュリティリスクを認識し、コマンドを実行する代わりにユーザーに警告した。2 つ目のテストでは、無害に見えるドメインにユーザーの GitHub トークンを送信することを拒否した。 - 記事はこれをハードなブロックではなくソフトなブロックと呼んでいる。より無害に見える URL を使った場合、エージェントはスクリプトを実行こそしなかったものの、まずその中身を調べるところまで踏み込んだ。著者はこれを、振る舞いが非決定的であることを示すものと受け止めている。
- モデルによって振る舞いは異なる。記事は、Anthropic が Claude のレッドチーミングに多くのリソースを投じていることを評価し、他のモデルで動かした場合の OpenHands は破壊的な操作をより進んで行う可能性があると述べている。
- 記事は、エージェントに対するプロンプトインジェクションを、新しい形をとった古い問題と位置づけている。開発者が
curl | bashのセットアップスクリプトや見知らぬプロジェクトでのnpm installを実行すること(どちらも攻撃者にファイルシステムと環境への無制限のアクセスを与える)になぞらえ、さらに公式インストールスクリプトや npm パッケージが過去に侵害された事例(人気フレームワークの推移的依存関係を通じて到達したものを含む)とも比較している。 - 確認モード(エージェントがほぼあらゆる操作の前に許可を求める方式)は、記事によれば Claude Code と OpenHands CLI の双方が採用しているアプローチであり、記事はこれがローカルのワークステーションでは特に重要だとしている。それでも著者は、これをエージェントの価値を制限する一方でセキュリティをさほど高めない、その場しのぎの策だと判断している。
- セキュリティアナライザー(OpenHands が Invariant Labs と共同で追加したものなど)は、エージェントが実行しようとする操作を潜在的な脅威の観点から評価し、明示的な許可を求めて停止したり、処理の続行を拒否したりできる。記事は、これが意図的なインジェクションに対してだけでなく、エージェントが単に混乱して危険なことを試みた場合にも役立つと述べる一方、アナライザー自体にも問題があると指摘している。
- サンドボックス化:OpenHands のすべての会話は Docker コンテナの中で実行されるため、
rm -rf /でさえエージェント自身の環境を壊すだけで済む。しかし、その環境には外部へ持ち出されたり破壊的に使われたりしうるシークレットがなお含まれている可能性があり、curlとソースコードが利用可能なままであれば、エージェントは独自のロジックを外部へ持ち出せてしまう(サンドボックス化 を参照)。 - ハードポリシー:OpenHands を Kubernetes 上でセルフホストしている組織は、ネットワークポリシーや eBPF のツールを使って、サンドボックス内でエージェントに許される操作を制限できる。特定のサイトのブロック、信頼できるドメインの許可リスト化、
curlのブロックなどである。また、タスクごとに異なるポリシーをエージェントに与えたり、権限を昇格する際に人間の承認を求めさせたりすることもできる。記事は最小権限の原則をエージェントに適用し、こうしたポリシーの構築には手間がかかること、大企業はすでにそこへ投資しているかもしれないが、小規模なスタートアップは一般にそうではないことを指摘している。 - 記事の主な助言は、人間が
git clone、curl、npm installを使う場合と同じく、信頼できるソースだけを使うことである。エージェントの最上位の指示はユーザーが制御しているからだ。 - 著者は、ユーザーが与えていない指示に従って OpenHands を行動させる概念実証の攻撃は目にしたことがあるが、執筆時点で現実の攻撃は確認していないと報告しており、エージェントがより普及し、より強力になるにつれて脅威は増大すると予想している。
背景
この記事はベンダー側の立場から、OpenHands が自社のエージェントについて書いたものであり、緩和策に対する評価(確認モードはその場しのぎ、ハードポリシーはより強力な選択肢)は測定結果ではなく著者の判断である。モデルの振る舞いに関するテストも、体系的な評価ではなく、いくつかの例示的なプロンプトにとどまる。