AI News HubLIVE
站内改写2 分で読了

バックグラウンドAIエージェントがセキュリティ境界問題になるとき

本記事では、Claude Codeの機能(バックグラウンドセッション、スーパーバイザープロセス、CLAUDE_CONFIG_DIR環境変数)を悪用し、一度のローカルコード実行後にMarkdownとJSONファイルのみで永続的で不可視のC2エージェントを作成する方法を解説する。

ソースHacker News AI著者: lucasluitjes

現代の開発環境には、セキュリティチームがまだ完全に理解していない強力なAIエージェントツールが多数存在する。Claude Codeはその中でも最も能力が高いツールの一つであり、コードの実行、ファイルの読み取り、インターネットからのコンテンツ取得、コマンドの実行が可能で、さらに端末の寿命を超えて持続するバックグラウンドセッションを管理するスーパーバイザープロセスも備えている。開発者にとって強力なこれらの機能は、攻撃者にとっても興味深い。本記事では、Claude Codeのさまざまな機能を利用して、ターゲットマシンで一度ローカルコードを実行するだけで、MarkdownとJSONファイルのみを使用してほぼ不可視の永続的C2エージェントを作成する方法を示す。

バックグラウンドセッション機能はv2.0.60で導入され、ユーザーが他の作業を続けながら長時間実行タスクをバックグラウンドで実行できるようになった。v2.1.139以降、バックグラウンドセッションは「スーパーバイザープロセス」によって管理され、端末を閉じたり、SSH接続を終了したり、新しいシェルセッションを開始したりしても影響を受けない。著者はv2.1.144のデーモンプロセスをリバースエンジニアリングし、これが小さなローカル制御プレーンとして機能し、UnixドメインソケットまたはWindows名前付きパイプを介してクライアントと通信することを明らかにした。制御ソケットはセッションの一覧表示、アタッチ、停止などの操作を処理し、rvソケットとptyソケットはそれぞれライフサイクルイベントと端末転送を処理する。通信プロトコルは制御メッセージに改行区切りのJSONを使用し、PTYデータにはバイナリフレーミング形式が用いられる。

さらに重要な隠蔽メカニズムは、CLAUDE_CONFIG_DIR環境変数にある。この変数をカスタムパスに設定すると、バックグラウンドセッションのデータ、ログ、状態がそのパスに保存され、デフォルトの~/.claudeには保存されない。ユーザーがclaude agentsを実行すると、~/.claude内のセッションしか表示されないため、攻撃者のセッションは完全に隠蔽される。現時点では、この変数にいくつかの不整合があり、例えばClaudeはディレクトリ内に.claude.jsonファイルを期待するが、デフォルトではこのファイルは~/.claudeではなく~/に置かれている。

攻撃の本当の「ペイロード」は、悪意のあるコードではなく、エージェントの動作を定義する平文英語の指示である。例として、個人タスクアシスタントに偽装したC2エージェントが提示されており、リモートサーバーからタスクを取得し、ローカルのファイル検索、パスワード抽出、ブラウザブックマークの読み取りなどを実行し、結果を報告する。このようなセマンティックペイロードは、従来の悪意あるバイナリファイルがないため検出が非常に困難である。

この発見は、AIエージェントツールがもたらすセキュリティ境界の問題を浮き彫りにしている。従来のセキュリティ対策は実行可能ファイルやスクリプトの検出に重点を置いていたが、テキストベースの指示によるエージェント動作は見落とされがちである。セキュリティチームはこれらのツールの脅威モデルを再評価し、エージェントの機密操作を監視・制限する方法を検討する必要がある。AIエージェントツールの普及に伴い、このような攻撃は新たな常態となる可能性があり、企業は事前に防御策を講じるべきである。