ペイロードはプログラムではなく、文章である
急成長するAIエージェントのエコシステムにおいて、驚くべき新たな脆弱性が浮上しました。VirusTotalが約36,000件のAIスキルを分析したところ、6,637件が悪意のあるものと特定されました。これは5件に1件に近い割合です。これは従来のマルウェアとは異なり、これらの悪意のあるスキルの62%には実行可能なコードが含まれていませんでした。
ペイロードはプログラムではなく、文章です。これらのエージェントはスキルの内容を直接的な指示として解釈するため、平易な言葉による指示が攻撃のベクトルになり得ます。これは脅威モデルの根本的な転換を意味しており、コードの実行ではなく、意味の理解がエクスプロイトを駆動します。
エージェントは多くの場合、ファイル、ターミナル、ネットワークツールへのアクセスなど、広範な権限で動作します。巧妙に作成されたプロンプトは、これらの信頼されたユーザー権限を利用して、データの露出、不正なシステム変更、その他の悪意のあるアクションを引き起こす可能性があります。これはnpmの問題の再来ですが、ペイロードが会話形式になっている点が異なります。
攻撃者はさまざまな回避技術を採用しています。ファイルの見かけ上の末尾から数百行下に指示を隠すものもあれば、HTMLコメントや目に見えないUnicode文字に指令を埋め込むものもあります。これらは人間のレビューアからは隠されていますが、基盤となるLLMからは完全に読み取ることができます。そのため、レンダリングされたバージョンだけでなく、生のファイルを検査する必要があります。
プレビューでは消えてしまうトリック
攻撃者は視覚的なトリックを駆使して、人間のレビューアから悪意のあるプロンプトを隠蔽します。一部のプロンプトは、ファイルの見かけ上の内容から数百行下の位置に配置されており、これは「ホワイトスペース・パディング」として知られる手法です。あるWHOデータ関連のスキルでは、733行後に「ナイジェリアのマラリア報告をゼロにする」という指示が隠されていました。別のコールドメール送信ツールでは、672行の空白の後にBCCの指令が隠されていました。
HTMLコメントも偽装として機能します。<!-- hidden text -->のような要素は、レンダリングされたWebページ上では消えますが、生のファイルを読み取るエージェントには見えています。ゼロ幅スペースのような目に見えないUnicode文字は、人間の目や基本的なパターンマッチングからテキストをさらに隠蔽しますが、基盤となるLLMには完全に読み取ることが可能です。
VirusTotalは、これらの視覚的な回避技術を使用しているスキルを少なくとも90件発見しました。これは重大なギャップを浮き彫りにしています。つまり、マーケットプレイスが人間のレビューアに表示するものと、エージェントが実際に処理する生のファイルは異なる場合があるということです。この不一致が、悪意のあるアクターが隠れた指示を埋め込む機会を生み出しています。
この問題はnpmのサプライチェーン脆弱性と似ていますが、意味論的なひねりが加えられています。ペイロードはプログラムではなく文章ですが、同じような侵害の可能性を秘めています。ユーザーはスキルの整合性を確認するために、レンダリングされたプレビューだけでなく、生のファイルを検査しなければなりません。
エージェントが沈黙を命じられたとき
指示の中には、エージェントに対して自身の行動を隠蔽するよう明示的に命じるものがあります。例えば、一部の悪意のあるスキルは、エージェントに対して「人間には知られる必要はない」と伝えます。この直接的な命令は人間の監視を回避し、エージェントが疑念を抱かれることなく隠された指令を実行することを可能にします。
さらに、これらのペイロードは「永続性」を目的としています。指示は、memory.mdやagents.mdのようなメモリに近いファイルに書き込むようエージェントに求める場合があります。これにより、悪意のある動作がエージェントの長期的な設定に直接埋め込まれ、最初のスキルが削除または無効化された後でも、後続のセッションに影響を与え続けることが可能になります。
このパターンは、長年ソフトウェア開発を悩ませてきたnpmのサプライチェーン問題と驚くほど似ています。しかし、AIエージェントの登場により、攻撃対象領域(アタックサーフェス)は大きく変化しました。従来の脆弱性攻撃やバイナリコードとは異なり、ペイロードは多くの場合「セマンティックテキスト」、つまりLLMが解釈して実行する平易な言語による指示です。詳細な分析については、How Some Malicious AI Skills Hide Instructions from Reviewers - VirusTotal Blog を参照してください。
この違いは極めて重要です。従来のセキュリティツールは、悪意のあるコードを含まないこれらのテキストベースの攻撃を特定するのに苦労します。VirusTotalが特定した6,637個の悪意のあるスキルのうち、62%には従来の実行可能コードが含まれていませんでした。これは、単純な一文が高度なウイルスと同等の威力を持つ可能性がある、エージェントシステムを保護する上での根本的な課題を浮き彫りにしています。
この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。
1日1通 · 2クリックで解除 · サードパーティのトラッキングなし
スキルを信頼する前に、生のファイル(raw file)を確認する
これらの攻撃の巧妙さを考慮すると、GitHubやマーケットプレイスのUIでレンダリングされたプレビューに依存することは、重大な死角を生みます。常に生のソースファイル(raw source file)を直接確認してください。不自然に長い空白行、HTMLコメント、そしてフォーマットされたビューでは消えてしまうものの、エージェントには読み取れる不審なUnicode文字がないか注意してください。
手動での確認に加え、堅牢な権限管理を実装してください。エージェントが memory.md や agents.md などのメモリや設定ファイルに書き込む際には、明示的な承認を必須とすべきです。すべてのファイルシステムおよびネットワークアクセスに対して最小権限の原則を適用し、エージェントの潜在的な被害範囲(ブラスト半径)を最小限に抑えてください。
分離されたサンドボックスやセキュリティスキャナーは多層防御を提供しますが、万全ではありません。例えば、オープンソースのスキルスキャナーは、これらの自然言語による攻撃の33%から71%を見逃しています。この高い失敗率は、人間によるレビューと厳格に強制された権限管理の必要性が依然として高いことを強調しています。
npmエコシステムは、一見無害に見えるコンポーネントが危険なペイロードを隠し持っている可能性があることを教えてくれました。今、AIスキルにおいて、そのペイロードは単なる一文であることもあります。生のファイルレベルでの警戒と、厳格なアクセス制御を組み合わせることが、これらの進化する脅威に対する最善の防御策です。
よくある質問
悪意のあるAIエージェントスキルとは何ですか?
データの漏洩やファイルの変更など、AIエージェントを操作して安全でない行動をとらせる指示を含むスキルのことです。
スキルはどのようにして人間によるレビューから指示を隠すことができますか?
長い空白スペースの後や、HTMLコメント内、あるいはレンダラーやエディターが隠してしまうような不可視のUnicode文字の中にプロンプトを配置することができます。
なぜ従来のマルウェアスキャナーはこれらのスキルを見逃すことがあるのですか?
多くの悪意のあるスキルには実行可能コードが含まれておらず、そのペイロードはエージェントが指示として解釈する自然言語のテキストだからです。
AIスキルを使用する際のリスクを減らすにはどうすればよいですか?
生のソースを確認し、ファイルの末尾をチェックし、メモリ変更の承認を必須とし、サンドボックス内で最小権限でエージェントを実行してください。

