LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

社内向けAIチャットサービスの脆弱性を診断してみた

こんにちは。診断技術開発グループの山根です。

私の所属する診断技術開発グループでは、セキュリティ診断の対象に関する新たな技術について調査を行っています。これまでにGoogleが開発したオープンソースの通信プロトコル「gRPC」や、Metaが開発したコンピュータ言語「GraphQL」などに対する診断をサービス化してきました。

昨今、生成AIを用いたシステム開発が増加しつつあるため、生成AIを用いたシステムに対する診断を行うサービスを開発し、「生成AI活用システム リスク診断サービス」として提供開始しました。

今回は、その新サービスの実証実験として、社内向けAIチャットサービスである「LACGAI」の診断を行った際の診断の内容や、見つかった脆弱性についてご紹介します。

LACGAIについて

LACGAIは、ChatGPTと同じようなUIの社内向けチャットアプリケーションです。社員がコストやセキュリティを意識することなく、気軽に生成AIサービスを試せる場として作成しました。プロンプト事例集も搭載されているため、社員の間で利用ノウハウの共有も行えます。

LACGAIの開発者が執筆した、生成AIのアーキテクチャ「RAG」に関する記事がありますので、興味のある方はこちらもあわせて参照ください。

診断の進め方

では、生成AIを用いたチャットアプリに対してどのような診断を行えばよいでしょうか。

一般的に、このようなチャットアプリはクライアントが入力したプロンプトを受け取り、生成AIを利用するためのAPIキーや、生成AIの応答をシステムの用途に合わせて制御するシステムプロンプトを付与します。それをAzure OpenAI Serviceのような生成AIサービスのAPIに送り、得られた結果をクライアントに返す構成です。

また、チャットアプリによっては、プロンプト以外に画像を入力できたり、LangChainなどのミドルウェアを用いて生成AIの応答をSQLのクエリに変換し、DBに問い合わせを行うことで「金額1,000円以下の商品を3つ紹介して」といったプロンプト入力の条件検索ができる機能があったりするかもしれません。

生成AIを用いたチャットアプリの処理の流れと、起こりうる問題点を示したのが以下の図となります。「生成AIを用いたシステムの診断サービス」と聞くと、AIモデル側の問題が見つかると思うかもしれませんが、図のようにアプリケーション側の実装に問題点が見つかることも十分にあり得ます。

生成AIを用いたチャットアプリを使用した際に起こりうる問題点

今回の診断では、プロンプト入力の箇所にフォーカスを当て、クライアントからアプリケーションへ送られるプロンプト送信のリクエストを改ざん・再送し、攻撃文字列を含んだプロンプトの送信やプロンプトの大量送信を行いました。

診断項目

次に、生成AIを用いたサービスで見るべき診断項目について説明します。診断項目を作成するにあたって、OWASP TOP10 for Large Language Model Applicationsなどを参考にしています。

OWASP Top 10 for Large Language Model Applications | OWASP Foundation

1. Prompt Injection

プロンプトに細工した入力を渡すことで、機密情報の窃取やコンテンツポリシーの回避ができないかを確認します。また、画像やURLなどで外部ソースを渡せる際はIndirect Prompt Injectionを試みます。

2. Prompt Leak

プロンプトに細工した入力を渡すことで、システムプロンプトの内容が窃取できないか確認します。

OWASP TOP10 for Large Language Model Applicationsで本項目はPrompt Injectionに含まれるのですが、診断項目としては別としています。

3. Insecure Output Handling

プロンプトに細工した入力を渡し生成AIの出力を操作することで、出力が検証されずに他のコンポーネントに渡される際に発生する問題点(クロスサイトスクリプティング、SQLインジェクションなど)を確認します。

4. Model Denial of Service

大量のプロンプトを送信するほか、繰り返し命令を含む入力をプロンプトに渡すことでサービスを停止させたり、API呼び出しに過剰な金額の請求を発生させたりすることができないかを確認します。

見つかった脆弱性

それでは、実際にLACGAIを診断して見つかった脆弱性について紹介します。

想定を超えたリクエストによるサービス停止

脆弱性の概要

プロンプト送信リクエストを大量に送信することで、チャットの応答が長時間返されない状況が発生しました。さらに他ユーザでアクセスした場合も、一時的にシステムが利用できなくなる状態が確認されました。

考えられるリスク

悪意のある第三者が大量にリクエストを送信することにより、他のユーザがサービスを利用できない状態とすることが可能となります。

対策

本問題点について開発者に報告したところ、ユーザごとのリクエスト数を制限する処理自体は実装されていたものの、その処理に不具合があったようで、すぐに修正対応しました。

不適切なコンテンツの表示

脆弱性の概要

Jailbreakの手法を用いたプロンプトを送信することで、例えば「マルウェアの製造方法」のような不適切なコンテンツの表示が可能でした。

考えられるリスク

この問題により、悪意のある第三者によって当該サービスや運営事業者の評判失墜、信用の低下に悪用される可能性があります。とはいえ今回は社内でのみ利用可能なアプリのため、社外の方からの評判失墜や信用の低下につながるリスクは生じないと考えます。

対策

Azure OpenAI ServiceのContent filtersを利用することで、不適切なコンテンツ(Hate、Sexual、Self-harm、Violence等)のフィルタリングが可能となります。こちらも別途開発者に対応してもらい、ひとまずコンテンツフィルタに引っかかった際にUI上で内容を表示できるようになりました。

Azure OpenAI Service のコンテンツのフィルター処理 - Azure OpenAI | Microsoft Learn

また、Content filtersではJailbreak riskの判定も可能であり、こちらの項目を設定することでJailbreakへの対策もできます。こちらも現在開発者が検討しているところです。

診断を終えて

今回、社内サービスであるLACGAIの診断を行い、2点の問題点が見つかる結果となりました。社内のサービスなので悪用されるリスクはほぼ無いと思われますが、これが社外のサービスだとサービスの停止や信用失墜につながる可能性があります。

生成AIを用いたチャットアプリの公開を考えており、セキュリティが不安だと思われる方は、Webアプリケーション診断とともに生成AIシステムに特化した脆弱性診断を実施することをおすすめします。実施を検討される際は、ぜひラックまでご相談ください。

「生成AI活用システム リスク診断」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ