AIエージェントの拡張機能「Agent Skills」に潜むセキュリティ脅威と対策
公開日
セキュリティ
大規模言語モデル(LLM)をベースとした自律型エージェントの普及に伴い、エージェントに特定の専門能力をオンデマンドで追加できる拡張フレームワーク「Agent Skills」が注目を集めています。自然言語で記述されたプロンプトを読み込ませるだけで複雑なタスクを実行可能にするこの仕組みは、利便性が高い一方で、従来のソフトウェア開発とは異なる独自のセキュリティ上の懸念事項を抱えています。
本記事では、中国科学院などの研究チームが発表した学術論文「Towards Secure Agent Skills: Architecture, Threat Taxonomy, and Security Analysis」に基づき、Agent Skillsのアーキテクチャに潜む構造的な弱点、想定される17の脅威シナリオ、実際に発生したインシデント例、および推奨される具体的な対策について解説します。
Agent Skillsの構造とセキュリティ上の弱点
Agent Skillsは、プログラムの知識がなくても自然言語(Markdown形式のSKILL.mdファイル)でエージェントの動作を定義できるファイルシステムベースのパッケージ規格です。しかし、この設計の自由度の高さが、セキュリティ境界の曖昧さを生む要因となっています。
Agent Skillsの基本設計とChatGPT Plugins・MCPとの比較
従来のAI拡張機能である「ChatGPT Plugins」や「Model Context Protocol (MCP)」は、構造化されたAPIスキーマを介して動作するため、データと命令の境界が明確でした。これに対し、Agent Skillsはプロンプトと実行スクリプトを単一のディレクトリに混在させるため、境界線の維持が困難です。
以下の表は、各拡張フレームワークにおけるセキュリティ特性の比較をまとめたものです。
| 評価項目 | ChatGPT Plugins | MCP(Model Context Protocol) | Agent Skills |
|---|---|---|---|
| データと命令の境界 | 適切に分離 | 部分的に分離 | 分離なし |
| 実行環境 | 外部サーバー | ローカル/リモート混在 | ローカル |
| サンドボックス化 | 適切に実施 | 部分的に実施 | 実施なし |
| 権限の範囲 | 厳格に制限 | ユーザー権限 | ユーザー権限 |
| 配布時の審査 | 必須 | なし | なし |
| 開発に必要な専門知識 | 高い(API開発) | 中程度 | 低い |
表1 拡張フレームワーク間におけるセキュリティ特性の比較(一部抜粋)
段階的読み込みと信頼モデルに潜む「同意のギャップ」
Agent Skillsは、コンテキストウィンドウの消費を抑えるために、以下の3段階で情報を読み込みます。
- 起動時にすべてのスキルの名称と概要(メタデータ)をシステムプロンプトに読み込む。
- ユーザーの要求に応じて、適切なスキルのプロンプト(
SKILL.md)の内容をコンテキストに読み込む。 - プロンプトに従い、付属の実行スクリプトや参照ファイルを読み込み、実行する。
この仕組みにおいて問題となるのが「同意のギャップ(Consent Gap)」です。ユーザーがインストール時に許可した権限の範囲と、実行時にスキルが実際に行うアクションとの間に乖離が生じます。一度インストールされたスキルは、個別の確認なしにローカルファイルへの書き込みやネットワーク接続などの操作を継続的に実行できてしまいます。
3つの攻撃レイヤーに分類される17の脅威シナリオ
本セクションで紹介する脅威分類は、公開されているセキュリティアドバイザリや実証研究、および数万件規模のスキルを対象に実施された静的・動的解析の結果を基に体系化されたものです。
Agent Skillsにおける脅威は、その発生段階と影響範囲に応じて3つのレイヤー、7つのカテゴリ、17の具体的なシナリオに分類されます。
【Agent Skillsにおける脅威タクソノミの全体像】
レイヤー1:配信と信頼の確立(Delivery & Trust)
├── T1:サプライチェーン攻撃(タイポスクワッティング、リポジトリ乗っ取りなど)
└── T2:同意の悪用(同意のギャップ、事後改ざん)
レイヤー2:実行時攻撃(Runtime Attack)
├── T3:プロンプトインジェクション(直接インジェクション、間接インジェクション)
├── T4:コード実行(悪意あるスクリプト、未固定の依存関係の悪用)
└── T5:データ漏洩(認証情報の収集、環境変数の不正取得)
レイヤー3:持続性と横展開の影響(Persistent & Lateral Impact)
├── T6:持続性の確保(メモリファイルの汚染、設定ファイルの改ざん)
└── T7:複数エージェントへの伝播(他の協調エージェントへの感染) 1. 配信と信頼確立における脅威
このレイヤーは、悪意あるスキルがユーザーの環境に導入され、信頼を獲得する段階で発生する脅威です。
- サプライチェーン攻撃(T1): 有名なスキルと類似した名称を登録して誤認を誘う「タイポスクワッティング」や、ダウンロード数や評価を不正に操作して上位に表示させる「ランキング操作」が含まれます。
- 同意の悪用(T2): インストール時の審査がないことを悪用し、最初は無害なツールとして登録されたスキルが、インストール後に悪意あるコードをダウンロードするように書き換えられるケースがあります。
2. 実行時における脅威
スキルが有効化され、エージェントがその指示に従って動作する段階で発生する直接的な攻撃です。
- プロンプトインジェクション(T3):
SKILL.mdの指示文にエージェントを誤誘導する記述を混入させる手法(直接的インジェクション)や、外部から取得したファイルやWebページに悪意ある指示を含める手法(間接的インジェクション)があります。 - コード実行(T4): プロンプトを介してローカルシェルコマンドを直接実行させたり、外部の未検証なサーバーからコードをダウンロードして実行させたりします。
- データ漏洩(T5): 開発環境に保存されているAPIキー、SSHプライベートキー、ブラウザの保存パスワード、環境変数などを探索し、外部のサーバーへ転送します。
3. 持続性と横展開における脅威
単一のセッションに留まらず、システムの長期的な汚染や他のシステムへの波及をもたらす脅威です。
- 持続性の確保(T6): エージェントが起動時に読み込む設定ファイル(
settings.jsonなど)や記憶保持用のファイルを書き換え、アンインストール後も悪意ある挙動が持続するように細工します。 - 複数エージェントへの伝播(T7): 協調動作を行うマルチエージェント環境において、汚染されたエージェントが別のエージェントに悪意あるプロンプトを送信し、組織内の他のシステムへ影響を拡大させます。
5つのセキュリティインシデント事例
上記で解説した脅威は、実際の開発エコシステムにおいて類似の被害が複数確認されています。
悪意あるスクリプトの実行:MedusaLockerとClawHavoc
- MedusaLocker ransomware Skill (T4.1, T2.1): 2025年12月、画像フォーマットの「GIF変換ツール」と称するスキルが公開されました。このスキルは、表向きは正常に画像を変換する一方で、バックグラウンドでランサムウェア(MedusaLocker)をローカル環境にダウンロードして実行し、ユーザーのファイルを暗号化する動作が確認されました。
- ClawHavoc Campaign (T5.1, T1.1, T1.2): 2026年1月、特定のコミュニティマーケットプレイスに登録されていたスキルの約5分の1に相当する1,184個のスキルが、同一の攻撃キャンペーンによって侵害されていることが判明しました。これらのスキルは、認証情報を標的としたインフォスティーラー(Atomic macOS Stealerなど)をデプロイし、APIキーや仮想通貨ウォレットのデータを窃取していました。
設定の不正改ざんと依存関係の悪用:Claude CodeのCVEとSafeDepの検証
- Claude Codeの脆弱性 (T5.1, T6.2): 2026年2月に公開された脆弱性(CVE-2025-59536およびCVE-2026-21852)では、悪意あるリポジトリを読み込むだけで、ユーザーの設定ファイルが不正に書き換えられ、APIキーが外部に送信されたり、任意のコマンドが実行されたりするリスクが示されました。
- SafeDepによる遅延型依存関係攻撃の検証 (T4.2): 検証において、スキルのスクリプト内にバージョンが固定されていない外部パッケージを依存先として定義しておく手法が実証されました。インストール時点では無害なパッケージであっても、後に攻撃者がパブリックレジストリ(PyPIなど)に同名で悪意あるバージョンをアップロードすることで、実行時に自動でマルウェアがインストールされる仕組みです。
データの不正転送:Mitigaによるサイレント漏洩の検証
- Mitiga Silent Egress (T5.3, T1.2): 検証用として登録された開発向けユーティリティスキルにおいて、開発者が気づかないうちにプロジェクト全体のソースコードをわずか4回の対話で外部に転送する動作が実証されました。この挙動はエージェントの通常の通信と区別が難しく、ログにも痕跡が残りにくい特性があります。
以下の表は、これらの実例と対応する脅威カテゴリをまとめたものです。
| インシデント名 | 該当する脅威カテゴリ(ID) | 主な影響 |
|---|---|---|
| MedusaLocker Skill | T4.1(悪意あるスクリプト), T2.1(同意のギャップ) | 隠密裏にランサムウェアを実行しファイルを暗号化 |
| ClawHavoc Campaign | T5.1(認証情報の窃取), T1.1(タイポスクワッティング), T1.2(ランキング操作) | 1,184個のスキルを介した広範囲な情報窃取 |
| CVE-2025-59536 / CVE-2026-21852 | T5.1(認証情報の窃取), T6.2(設定の改ざん) | Claude Codeの設定書き換えによるリモートコード実行とキー漏洩 |
| SafeDep PEP 723 検証 | T4.2(遅延型依存関係攻撃) | ライブラリの自動更新機能を利用したマルウェアの導入 |
| Mitiga Silent Egress 検証 | T5.3(コードベースの漏洩), T1.2(ランキング操作) | 監査ログに残らないサイレントなソースコードの外部転送 |
表2 主要なセキュリティインシデントと脅威マップ(一部抜粋)
安全な導入と開発のための対策案
Agent Skillsの利便性を維持しつつセキュリティリスクを低減するためには、開発、配信、運用の各段階において適切な保護機能の実装と管理体制の構築が必要です。
開発者およびプラットフォームが実装すべき保護機能
- スキルの署名と認証(T1対策): 検証された開発者のみがスキルを公開できるようにし、スキルの改ざんを防ぐために暗号化署名を必須とすることが推奨されます。
- きめ細かな権限管理(T2対策): スマートフォンアプリの権限モデルのように、ファイル操作や外部通信などの特定のアクションが発生する都度、ユーザーに明示的な許可を求める仕組みが必要です。
- 依存関係の厳格な固定(T4対策): スキルで使用する実行スクリプトの依存パッケージは、必ず特定のバージョン(ハッシュ値を含む)に固定し、実行時の意図しない外部取得を防ぎます。
企業ユーザーにおける利用ガイドライン
- 導入時のコードレビュー:
自然言語で書かれた
SKILL.mdであっても、ソースコードと同様の管理対象として扱い、安全性が確認されるまではローカル環境への展開を控える必要があります。 - サンドボックス環境での実行: エージェントを本番環境や機密データにアクセス可能な環境で稼働させる場合は、仮想マシンやコンテナ技術を用いて、インターネットやローカルファイルシステムから隔離された状態で実行させることが望まれます。
- 不審な通信の監視: エージェントが行う外部へのデータ転送量を監視し、意図しない大容量のデータ送信や、未承認のドメインへのアクセスを検知する体制を整えます。
まとめ
Agent Skillsは、AIエージェントの機能を容易に拡張できる優れた仕組みですが、自然言語によるプロンプトの解釈や、ローカルでのスクリプト実行といった基本設計そのものに起因する脆弱性を抱えています。現状の「信頼できる提供元からのみインストールする」といった限定的なアプローチでは、巧妙化するサプライチェーン攻撃やプロンプトインジェクションに十分に対処できません。
今後、このエコシステムを安全に発展させるためには、規格の標準化団体やプラットフォーム開発者が主導となり、構造化された権限管理や、実行環境の分離といったセキュリティ機能をあらかじめ組み込んだ仕様へとアップデートしていくことが求められます。
Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!
参考資料: