悪意あるAI「エージェントスキル」、検知を回避してすり抜ける

AIコーディングエージェントを使って開発する人々は、npmやPyPIからパッケージを取得するのと同じ感覚で、公開マーケットプレイスから機能を取得しています。こうした追加機能は「エージェントスキル」と呼ばれています。それぞれが、Claude CodeやOpenAI Codexといったツールが新しい機能を必要とする際に読み込む、平易な英語による指示・スクリプト・ファイルの小さなパッケージです。あるマーケットプレイスでは、2025年後半にこの形式が登場してからわずか数ヶ月で、掲載スキル数が4万件を超えました。その大半はコミュニティ由来のもので、審査を受けたものはありませんでした。

Image

この利便性には、昔からおなじみの代償が伴います。スキルが一度インストールされると、それはエージェントの権限で実行されます。その権限は、開発者のファイル、認証情報、パッケージマネージャー、ターミナル、そして外部サービスにまで及びます。汚染されたバンドルは、これらすべてを認証情報の窃取、ソースコードの吸い上げ、バックドアの設置へと向けることができます。危険な部分は指示文の中に直接潜んでいることもあれば、バンドルされたスクリプトの中に隠れていることもあり、あるいは両方に分散していることもあります。

これはすでに現実に起きています。ClawHavocと呼ばれるキャンペーンは、単一のマーケットプレイスに300件を超える悪意あるスキルを仕込みました。指示ファイルは、ありふれたセットアップ手順を装いながら、エージェントに情報窃取型マルウェアを取得・実行させるものでした。その後、この窃取ツールはブラウザの認証情報、キーチェーンのパスワード、SSHキー、暗号資産ウォレットを狙って動き出しました。

これまでの防御策は、スキルスキャナーに依存しています。これらのツールはインストール時にバンドルをチェックし、ブロックか許可かの判定を返します。中には正規表現、YARA、ASTルールをファイル全体に適用するものもあります。また、可読なコンテンツを大規模言語モデルに渡して判断を仰ぐものもあります。両方を組み合わせているものもいくつか存在します。

香港科技大学の研究者たちは、こうしたスキャナーがどこまで通用するのかを検証したいと考えました。そこで彼らはSkillCloakと呼ばれるシステムを構築しました。SkillCloakは、スキルの悪意ある挙動を完全に機能させたまま、その見た目だけを変える仕組みです。手口は2つあります。1つ目は、疑わしいコマンドトークン、認証情報のパス、URLを等価な形式に書き換え、エージェントが実行時にひそかに再構成するというものです。2つ目は、実際のペイロードをスキャナーが読み飛ばすディレクトリに詰め込み、見た目には無害なカバーを提示しておき、エージェントがスキルを実行した時点で元の状態を再構築するというものです。

この実験では、あるマーケットプレイスのアーカイブから抽出した1,613件の実在する悪意あるスキルを対象に、幅広いスキャナー群を試しました。すべてのサンプルには、いずれかの検出器がすでに検出済みの所見が含まれており、各回避手法に実際に消去すべき検出シグナルを与える形になっています。

パッキングの手口は、90%を超える確率であらゆるスキャナーをすり抜けました。書き換えの手口は、ほとんどの静的スキャナーの80%以上を突破しました。ルールと大規模言語モデルを組み合わせたあるハイブリッドツールでは96%に達し、しかも偽装されたスキルは本番環境のエージェントで実行しても問題なく機能し、オリジナルと同じ処理を最後までやり遂げました。

同じ研究チームは、これとは異なる種類の防御策も打ち出しました。彼らのツールSkillDetonateは、疑わしいスキルをサンドボックス内で実行し、オペレーティングシステムの境界でその挙動を監視します。認証情報の窃取を行うには、何らかの機密情報を読み取り、どこかへ送信する必要があります。ドロッパーであれば、ペイロードを書き込むか実行する必要があります。こうした動作は、それを引き起こしたバンドル自体がどれほど無害に見えても、システムコールとして表面化します。

この仕組みを成立させているのは2つのアイデアです。1つ目の「オンデマンド・クロージャー・リフト」は、スキルが実行中に自ら生成する指示を捕捉し、それを同じセッションに戻して読み込ませることで、デコード処理の後になって初めて現れる多段階のペイロードであっても実行され、検知対象になるようにします。2つ目の「マーカーベースのテイント解析」は、機密情報が読み取られるたびにラベルを付与し、それをファイル、プロセス、ネットワーク通信、さらにはエージェント自身の言語コンテキストにまたがって追跡することで、base64やgzipのようなエンコード処理も確実に捕捉範囲に収めます。

注入されたペイロードによる合成ベンチマークでは、SkillDetonateは攻撃の97%を検出し、オリジナル、難読化、パッキングのいずれの形態でも検出精度は安定していました。しかも誤検知率は2%近くに抑えられており、インストール時に一度だけ実行されるゲートとしては十分に低い水準です。実在する悪意あるスキルに対するテストでも、このツールは87%を維持し、SkillCloakの手口を用いても安定した検出精度を保ちました。同じテストで最も優れていた静的スキャナーは、書き換えの手口が使われた途端、約99%からわずか10%程度にまで落ち込みました。

ただし、この仕組み全体には共通する一つの限界があります。SkillDetonateが検知できるのは、エージェントが実際に実行することを選んだ挙動だけです。エージェントがスキップした指示の裏に潜んでいるペイロードは決して発火せず、サンドボックスが検知できるものは何も表面化しません。巧妙な攻撃者であれば、プロンプトインジェクションを用いて、解析中にエージェントを悪意あるパスから逸らすことさえ可能です。これは、実環境に存在するスキルが見逃される最大の要因であり、次に取り組むべき課題を明確に示しています。

振る舞いベースのアプローチには、より多くの時間が必要です。各スキルの実行・観測には約2分半かかり、静的スキャンに比べると何倍もの時間を要します。ただし、インストール時に一度だけ実行されるゲートとしては、この時間的コストは、バイトレベルのツールが見逃してしまう検出範囲を手に入れられると考えれば十分に見合うものです。

この物語のより大きな構図は、何十年にもわたるマルウェア対策の歴史と重なります。バイトレベルの検査は、挙動を維持したまま外見だけを変えてくる攻撃者に敗れ続けてきました。そしてその答えは長らく、コードが実行時に何をするかを監視することにありました。エージェントスキルは、その同じ戦いを新たな領域に持ち込んでいます。そこでは一つの英語の文章そのものが武器になり得て、攻撃を実行する主体は、時として言葉で説得すれば思いとどまらせることさえできるモデルなのです。

翻訳元: https://www.helpnetsecurity.com/2026/07/09/malicious-ai-agent-skills-scan/

ソース: helpnetsecurity.com