単体では安全なスキル同士の「組み合わせ」で情報が漏れる(KnotScryer の調査から)
外部コンテンツを読むスキルと、外へ送るスキルを同じエージェントに入れると、読み込んだメールやページに書かれた指示で両者がつながり、情報漏えいやコード実行が起きる。スキルを 1 つずつ検査しても見つからないため、導入済みスキル全体の「どこから読み、どこへ出せるか」を確認する。
分かったこと
- 清華大学などの研究者が、ClawHub で clean 判定の 1 万 3598 スキルから、危険な連携 612 通りを抽出。Hermes・OpenClaw・OpenCode × 3 モデルで試し、平均 79.2% で違反動作が成立(基盤別 71.7%〜86.0%)。
- 攻撃者が操作するのは、上流スキルが読む第三者コンテンツだけ。新しいスキルの追加や改変は不要。
- 実演: メール閲覧と送信のスキルを入れた状態で「メールを確認して必要な対応を」と頼むと、受信メール内の指示で別メールの契約額・取引先名を指定先へ送信。送信スキルを外した対照実験では送信を拒否。
- 612 通りのうち 84 通り(13.7%)は、構成するスキルすべてが Cisco の単体スキャナーで安全と判定されていた。
対策
- 入口と出口を同居させない: メール・Web・Issue など外部コンテンツを読むスキルと、メール送信・HTTP 送信・コード実行などのスキルを同じエージェント(同じセッション)に入れない。必要なら役割ごとにエージェントを分ける。
- 導入済みスキルを「流れ」で棚卸し: 各スキルについて「何を読むか(外部入力か)」「どこへ出せるか(外部送信・実行)」を表にし、外部入力 → 外部出力の経路がつながる組み合わせを洗い出す。
- 出口に人の確認を挟む: 送信・実行系の操作は確認なしで使わせない(ただし エージェントスキルの「確認なしで使わせるツール」欄は制限ではない(6,309 件の調査から) ので、基盤側の権限設定で縛る)。
- 単体の検査(エージェントスキルに隠された指示を見つける(HTML コメント・不可視文字・大量の空行))は引き続き必要だが、それだけでは足りない。
注意点
- 実験は第三者コンテンツと送信先をローカルで模擬したもの。実演は攻撃メールに送信スキル名を書いており、攻撃者が導入済みスキルを知っている前提。
- 試行は最大 2 回のため成功率は下限値。危険な連携全体のうち何割を見つけたかは未評価。