大文字の「AI」が曲線と光の点で表示されている

出典:Nico El Nino(Alamy Stock Photoより)

人工知能(AI)コーディングエージェントに対する新たなタイプの攻撃により、攻撃者がユーザーをだましてAIに危険な行為を許可させ、最終的にはソフトウェアサプライチェーン攻撃につながる可能性があることが明らかになりました。

この攻撃は「lies-in-the-loop(LITL)」と呼ばれ、AIに対して、実際よりもはるかに安全だと信じ込ませることで、危険な行動を取らせるものです。この手法を実現したCheckmarx Zeroの研究者が、本日発表したレポートで明らかにしました。

彼らはこの攻撃を、リモートコード実行(RCE)をプロンプトインジェクション攻撃によって実現するものと位置付け、Anthropic社のAIコードアシスタントClaude Codeで実証しました。このエージェントは「ユーザーの安全性を重視し、脆弱性報告を真剣に受け止める」という評判があるため選ばれたと、CheckMarx Zeroの研究者Ori Ron、Dor Tumarkin、Darren Meyerがレポートに記しています。

しかし、この攻撃は「エージェントツールと人間の過ちの交差点」を悪用するものであり、安全性やセキュリティ上の理由でAIの行動を承認する「人間が介在する(HITL)」インタラクションに依存するすべてのAIエージェントに適用可能です。

「LITLは人間とエージェントの間の信頼を悪用します」と研究者は記しています。「結局のところ、人間はエージェントが提示する内容にしか反応できず、エージェントがユーザーに提示する内容は、エージェントに与えられたコンテキストから推測されるのです。」

この攻撃は、エージェントに対して嘘をつき、命令的かつ明示的な言葉で偽の安全なコンテキストを提供させることが容易であることを示しています。「この挙動こそ、Claude Codeが人間による許可プロンプトで防止しようとしているものです」と研究者はレポートで述べています。

コンセプトの実証

攻撃が機能することを証明するため、CheckMarx ZeroのチームはClaude Codeに任意のコマンドを自分たちのマシン上で実行させようとしました。まず「calc」という無害なコマンドを使い、Windowsマシンで電卓を起動することに成功しました。これにより、ターゲットユーザーが実行できる他のコマンドも実行可能であることが示されました。

しかし、CheckMarx ZeroがAnthropicに連絡したところ、同社は「このようなコマンドにはユーザー確認プロンプトが表示されるため、セキュリティ上の脆弱性とはみなさない。もしプロンプトをバイパスする方法が見つかれば問題となる」と回答しました。

研究チームは次に、「calc」コマンドインジェクションでHITLメカニズムを突破すべく、AnthropicがClaude Codeベストプラクティス文書で推奨しているカスタムスラッシュコマンドを使い、AIエージェントに嘘をつくという手法を取りました。

「このコマンドはGitHubのイシューを読み取り、特定し、(許可があれば)コードをテストして修正案を提示します」とレポートにあります。研究者はまずGitHubイシューを作成して嘘をつき、AIエージェントにそのイシューの対応を依頼しました。

これにより、研究者のコマンドラインインジェクションがターミナルウィンドウの上部から意図的に押し出されるほど長い応答が返され、ユーザーが全体を確認しない限り疑わしい内容が隠されてしまいました。「ユーザーが自分自身に害を与えるにはEnterを押すだけでよい」とレポートに記されています。

この攻撃は、Claude Codeにおけるプロンプトインジェクションのリスクを明確に示しています。「GitHubイシューのような公開オンラインリソースを使えば、悪意ある攻撃者によってメッセージが改ざんされ、ユーザーへの承認プロンプトの主題がかなり巧妙に隠されてしまう可能性があります。」

研究者はこの結果を再度Anthropicに提出しましたが、同社は「ユーザーが許可プロンプトを確認する責任があるため、脆弱性ではない。許可を与える前にプロンプト全体をスクロールして読むべきだ」と主張し続けました。

開発者による攻撃テスト

研究者はさらにコマンドを注入するため、レポートによると「かなりスクロールしないと絶対に見つけられないほど長いコメント」を作成し、再び嘘をつくことにしました。この3回目の攻撃を複数の開発者(同意済み)でテストし、またしても成功しました。

「たとえcalcを探してスクロールしても気づきにくく、予期していなければ非常に巧妙に隠されています」と彼らは述べています。「成功したフィッシングキャンペーンの手法を取り入れ、ターゲットユーザーのコードに深刻なコマンドインジェクションの脆弱性があると偽って(皮肉にも)緊急性を演出すれば、テストしたすべての開発者(もちろん同意の上で)に対して有効でした。」

最終的に研究者は、この攻撃を使って悪意のあるnpmパッケージをGitHubリポジトリに提出できることを示し、AIコーディングツールを操作することでより大規模なソフトウェアサプライチェーン攻撃につながる可能性を示しました。

AIエージェントのセキュリティは依然として不透明

組織は従業員の日常業務の一環としてAIエージェントをますます導入しており、CheckMarx Zeroによれば、すでに79%の組織がAI支援コーディングエージェントを何らかのワークフローに導入しています。そのうち3分の1以上が開発者向けであり、これらのツールの利用におけるセキュリティはソフトウェア開発における重要な懸念事項であると研究者は述べています。

「これは、ユーザーとエージェントが、たとえ協力し明示的な許可があっても、あらゆる種類の汚染されたコンテンツにさらされることがいかに危険かを示していると思います」とレポートは述べています。「さらに、完全自動化のためにユーザーが排除された場合、攻撃者が非常に単純なエージェントを騙すだけでよくなるため、これらの問題はさらに深刻化します。」

このような攻撃を防ぐため、研究者はエージェント型AIツールの利用者に対し、エージェントや外部コンテンツに対して常に疑いの目を持つこと、またLLMエージェントによる全自動化の誘惑に抵抗することを推奨しています。

さらに、セキュリティチームは組織のAIエージェント導入を慎重に管理し、ユーザー教育を徹底するとともに、適切なコントロールによって多層防御を実現し、リスクのある行動や悪意のある行動の「影響範囲」を限定するべきだとレポートは述べています。

翻訳元: https://www.darkreading.com/application-security/-lies-in-the-loop-attack-ai-coding-agents

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です