企業では様々な生成AIサービスの利用、生成AIを組み込んだアプリケーションの開発やその検討が進んでいます。現在は主に業務改善目的での社内利用に限定した形態が多く、社外からの攻撃に注意が向くことなく利用や検討が進んでいるケースを目にします。しかし、企業の生成AI活用状況を踏まえると、これら脅威の考慮が必要な状況が見えてきました。本記事では国内企業の生成AI活用状況を踏まえながら、企業の考慮が漏れがちな、企業が考慮すべき脅威とその対策について解説します。
<関連記事>
国内企業における生成AI活用:現状と展望
生成AIの技術は目覚ましい進歩を遂げ、様々な分野での活用が期待されています。特に、国内企業においては、LLM(大規模言語モデル)と呼ばれるテキスト生成AIの活用や検討が盛んです。企業のLLMの活用は大きく、以下の3つに分かれます。
既存サービスの活用
OpenAI社が提供するChatGPTやGPT-4等の既存サービスをそのまま利用するケースです。これらのサービスでは、高度な文章生成や翻訳機能等を提供しており、議事録の作成やキャッチコピー作成の支援等、簡易なタスクでの活用目的であれば導入コストを抑えながら、短期間で生成AIの恩恵を受けることができます。
自社データや最新情報の活用
LLMと、自社のデータやインターネット上の最新情報を組み合わせるために、LLMを組み込んだアプリケーション(以降、LLM統合アプリケーションと記載します)を独自に開発するケースです。これは、自社のニーズに特化した機能を実現し、より高度な活用で業務改革を目指すものです。例えば、システムのユーザマニュアルを活用して利用者の質問に答えるチャットボットや、営業データを基に顧客に最適な商材を提案する営業システム等が開発されています。
他システムとの連携
テキストの入出力のみで完結する単一のタスクではなく、他のシステムと連携して、より複雑なタスクを自動でこなせるようにするケースです。テキストのみでなく音声や画像等を組み合わせたマルチモーダルな活用も考えられ、ビジネスモデルを変革できる可能性を秘めています。
今後は他システムと連携する活用が進んでいくと予想していますが、国内企業では現在、既存サービスの利用や、自社データや最新情報を活用するLLM統合アプリケーションの開発が主流です。後者はRAG(Retrieval-Augmented Generation:検索拡張生成)と呼ばれるLLM統合アプリケーションの形態ですが、RAGにはアーキテクチャの特徴を踏まえると、考慮すべき脅威が存在します。
RAG(Retrieval-Augmented Generation:検索拡張生成)
RAGは、社内のナレッジやインターネット等の情報源から検索した情報を、出力となる文章の生成に活用することで、LLMの出力を最適化する利用形態です。膨大な量のデータに基づいてトレーニングされ、何百億を超えるパラメータを使用するLLMを再トレーニングすることなく、LLM の出力を改善できる、費用対効果の高いアプローチです。具体的には、図 1のようなステップで動作します。
RAG(Retrieval-Augmented Generation:検索拡張生成)のイメージ
LLMの課題とRAGの登場背景
LLMには、これまでに述べたような活用や今後の期待がある一方で、以下のような既知の課題が存在します。
- 知識の偏り: 学習データに含まれる情報に基づいて文章を生成するので、データの偏りがそのまま反映されてしまう可能性がある
- ハルシネーション: 創造的な文章生成能力を持つ一方で、事実誤認や論理矛盾、また、答えのない虚偽の文章を作成することがある
- 説明責任の欠如: どのようにして文章を生成しているのか、その内部処理の可視性が低く、サービス提供者が説明責任を果たすことが困難
RAGでは、社内の文書やインターネット等の情報源から関連情報を検索して文章の生成に活用することで、これらの課題を補っています。まず、社内の情報やインターネット上の最新情報を活用することで、LLMの知識の偏りを減らすことができます。また、出力に参照元を含めることで、利用者にとっての可視性や信頼性を高めることができ、利用者がさらに詳しい説明や詳細を必要とする場合は、自分で調べることができるようになります。
RAGで考慮すべき脅威
RAGはLLMの課題を補うものですが、セキュリティ観点では新たな脅威への考慮が必要となります。LLMは自然言語のプロンプト[1]によって柔軟に操作できますが、その特徴を悪用するプロンプト(敵対的プロンプト[2])の標的となり得ます。しばしば言及される攻撃に、プロンプトインジェクション(Prompt Injection:PI)があり、PIは攻撃者が直接プロンプトを入力することを想定しています。従って、企業がLLMを利用するためのインターフェースを社内の利用者に限定して公開している場合、攻撃者がPIを試行するためには、社内ネットワークに侵入する、正規の利用者になりすます等の何らかの前提条件が必要となります。
しかしRAGに代表されるLLM統合アプリケーションの場合、利用者とLLMとの間に、最終的に入力するプロンプトの生成過程が存在します。仮に攻撃者がこの生成過程に介入できるとしたら、攻撃者がLLM統合アプリケーションのインターフェースに直接アクセスすることなくプロンプトを入力できるようになります。このような攻撃主手法は、間接プロンプトインジェクション(Indirect Prompt Injection)と呼ばれています。
間接プロンプトインジェクション(Indirect Prompt Injection)
間接プロンプトインジェクションの基本的な実行イメージを図 2に示します。標的とするLLM統合アプリケーションが取得する可能性のあるデータに対して、プロンプトを戦略的に挿入することによって、攻撃者がリモートでLLM統合アプリケーションを悪用できるようにします。
RAGに対する間接プロンプトインジェクションのイメージ
間接プロンプトインジェクションの手法
攻撃者が敵対的プロンプトを間接的にLLM統合アプリケーションに挿入する手法には、大きくPassive/Activeの2種類、さらに利用者を誘導する、利用者やLLM統合アプリケーションのセキュリティ機構に気づかれない/検知されないようにする等のテクニックがあり、それらを組み合わせた攻撃手法が報告されています。攻撃者が選択可能な手法の組み合わせは、標的となるアプリケーションの仕様によって異なります。
受動的手法(Passive Methods)
LLM統合アプリケーションが情報源から情報を取得する際に、プロンプト挿入を試みる手法です。例えば、検索エンジンを標的とする場合は、WebサイトやSNSの投稿等に、プロンプトを事前に配置します。他にも、コード生成を支援するアプリケーションを標的とする場合は、リポジトリを介して利用可能なコード内にプロンプトを配置する、等の手法が考案されています。
能動的手法(Active Methods)
攻撃者が能動的にプロンプトをLLMに送り付ける手法です。例えば、SPAMメール対策製品にLLMが利用されている場合に、プロンプトが含まれる電子メールを送り付ける等の手法が考案されています。
利用者の誘導(User-Driven Injections)
攻撃者が利用者を騙して、悪意のあるプロンプトを入力させる手法です。攻撃者のWebサイトを訪れた利用者を騙して、悪意のあるプロンプトを標的とするアプリケーションに入力するよう誘導する手法や、ソーシャルエンジニアリングを併用する手法等が考案されています。
インジェクションの隠蔽(Hidden Injections)
攻撃者が標的とする利用者や、標的とするアプリケーションのセキュリティ機構に、悪意のあるプロンプトが検出されることを回避するために、ステルス性を高める手法です。プロンプトをエンコードする、最初の小さなインジェクションの後で別の情報源から大きなペイロードを取得する、プロンプトを画像に隠す等の手法が考案されています。
間接プロンプトインジェクションの具体事例
より具体的に攻撃のイメージを持っていただくために、実際に提供されているサービスの脆弱性を悪用する間接プロンプトインジェクションの手法をいくつかご紹介します。
受動的手法x利用者の誘導の事例:Amazon Q for BusinessでのData Exfiltration
現在は修正済みですが、Amazon Q for Business(カスタマイズ可能な生成AIを活用したアシスタント)には、プレビュー版のリリース当初、クリック可能なハイパーリンクをレンダリングする機能がありました。この機能を悪用し、マークダウンタグを介して情報を窃取する手法が報告されています(図 3)。
攻撃者が用意した悪意のあるプロンプトを含むファイルを利用者にアップロードするよう誘導し、利用者が過去に入力した文章を外部サイトへ漏洩させます。
Rehberger氏による攻撃デモ[3]
受動的手法x利用者の誘導xインジェクションの隠蔽の事例:Writer.comでのData Exfiltration
現在は修正済みですが、Writer.com(データファイルのアップロード、リンクの共有、質問の投稿を通じてニーズに合わせたコンテンツを生成)には、マークダウン画像やクリック可能なリンクをレンダリングする機能がありました。この機能を悪用して情報を窃取する手法が報告されています(図 4)。
攻撃者は、利用者がレポートを作成する際に有用となるような記事を予め用意し、その記事内に悪意のあるプロンプトを秘匿して仕込んでおくことで、利用者がアップロードした情報を外部サイトへ漏洩させます。
Greshake氏による攻撃デモ[4]
終わりに
LLM統合アプリケーションは、自社のニーズに特化した機能を実現してより高度にLLMを活用するために、また、LLMの課題を補うために採用が進んでいる形態ですが、一方で攻撃者に悪意のあるプロンプトを挿入される接点が広がる形態でもあります。今回ご紹介した間接プロンプトインジェクションは、企業が独自のアプリケーションを開発する場合、その仕様、取り扱う情報源、またインターネットへの到達性を含むアーキテクチャ等によって、攻撃者が敵対的プロンプトを仕込む経路やリスク、またそのインジェクションの成立可否が異なります。LLM統合アプリケーションを開発される際の脅威リスクを評価される場合は、是非ご相談ください。
<関連サービス>
参考文献:arxiv.org/pdf/2302.12173.pdf
[1] 本稿では、LLMに対してテキストデータで入力する、LLMが出力を生成するための指示や条件を指す
[2] LLMを悪用するために細工した入力のことを敵対的プロンプト(Adversarial Prompting)と呼ぶ
[3] 出所: AWS Fixes Data Exfiltration Attack Angle in Amazon Q for Business · Embrace The Red
[4] 出所: Data exfiltration from Writer.com with indirect prompt injection (substack.com)