はじめに
こんにちは、QAエンジニアのなかじまです。
昨今、生成AIを利用したサービスや製品に触れる機会が増えてきており、弊社でもTopicScanという生成AIを利用したプロダクトを展開しております。
今回は増えつつある生成AIを利用したサービス・機能に対し、どのような観点を持ってテストを実施していくのが望ましいかを検討した話をしていきます。
生成AI活用に伴うリスクについて
生成AIを利用したサービスというと、簡単、便利という反面で、権利侵害やフェイク情報を含むコンテンツ出力、情報漏洩といったリスクについて注意喚起されて、利用に不安を感じるユーザーも多いと思います。
QAエンジニア視点でも、従来のQAと異なる部分がどういった内容なのか、どう気をつけるべきかなど、キャッチアップすべき内容は山積みです。
何から着手すべきかというところで、とりあえず実際に生成AIを活用した場合、どういったリスクを伴うかをまずは調べるところから始めることにしました。
生成AIを取り巻くセキュリティリスク
今回はWebアプリケーションのセキュリティ向上を目的としたOWASPが公開している生成AIを支える「LLM(大規模言語モデル)」に関する重大セキュリティリスク TOP10のレポート(「OWASP Top 10 for Large Language Model Applications」)を参考に、どのようなリスクが存在するかを確認していきます。
01 Prompt Injection (プロンプトインジェクション)
02 Sensitive Information Disclosure (機密情報の開示)
03 Supply Chain Vulnerabilities (サプライチェーン)
04 Data and Model Poisoning (データおよびモデルポイズニング)
05 Improper Output Handling (不適切な出力処理)
06 Excessive Agency (過剰なエージェンシー)
07 System Prompt Leakage (システムプロンプトの漏洩)
08 Vector and Embedding Weaknesses (ベクトルとエンベディングの脆弱性)
09 Misinformation (誤情報)
10 Unbounded Consumption (無制限の消費)
参考資料
OWASP Top 10 for Large Language Model Applications
ピンとくるものもあれば、ふわっとしたイメージしか沸かないものもあったので、もう少しイメージがつきやすい感じに内容を纏めてみました。
トピック | 概要 |
01_Prompt Injection (プロンプトインジェクション) | 不正なプロンプトを入力して、LLMに意図しない動作を引き起こさせる脆弱性 |
02_Sensitive Information Disclosure (機密情報の開示) | LLMアプリケーションとのやり取りを通じて、機密情報の開示や知的財産への侵害といった問題を引き起こす可能性 |
03_Supply Chain (サプライチェーン) | サプライチェーン(開発に関わるソフトウェアや外部ライブラリ、ツールなど)側に存在する脆弱性 |
04_Data and Model Poisoning (データおよびモデルポイズニング) | 機械学習時の事前トレーニングや、モデル適応のためのファインチューニングなどLLMライフサイクルの様々な段階にて、コンテンツの改ざんや偏り、破損などのリスクを高める有害なデータ(脆弱性、バックドア、バイアス等)を持ち込まれる可能性 |
05_Improper Output Handling (不適切な出力処理) | LLMが生成するアウトプットを不適切に処理や管理をすることでRCEやXSSなどのリスクを生み出す脆弱性 |
06_Excessive Agency (過剰なエージェンシー) | LLMからの予期しない、もしくは曖昧な出力に応答して、有害なアクションを実行させる脆弱性 |
07_System Prompt Leakage (システムプロンプトの漏洩) | モデルの動作を操縦するために使用されるシステムプロンプトに意図せず機密情報が含まれ、攻撃に利用される可能性 |
08_Vector and Embedding Weaknesses (ベクトルとエンベディングの脆弱性) | LLMを備えた検索拡張生成を利用するシステムにおけるベクトルとエンベディングの生成、保存、取得方法における脆弱性が悪用されることで、有害なコンテンツを注入や、モデル出力の操作、機密情報へのアクセスといった渋滞なセキュリティリスクをもたらす可能性 |
09_Misinformation (誤情報) | 事実と異なる、不適切、あるいは安全でないコンテンツをLLMが生成した場合、それらによりセキュリティ侵害、ハルシネーションといった誤情報、著作権や生成AI利用に伴う法令に対する侵害、風評被害に繋がる可能性 |
10_Unbounded Consumption (無制限の消費) | LLMが過度に推論を実行されることで、サービス拒否(DoS)、経済的損失、モデルの盗難などのリスクを引き起こす可能性 |
纏めてみると、従来のWebアプリケーション開発等で行っていたセキュリティ対策をそのまま利用できそうな点も多くあるなと思う一方で、LLMならではのセキュリティリスクも存在しているといった印象を受けました。
また、今回の記事を書くにあたり、1〜2年前にリリースされた同レポートと比較した結果、Top10の変動も大きく、生成AIに関連するセキュリティリスクについては、常に新たな課題が生まれているフェーズとも思える状況といえます。
QAエンジニアとして、これらの情報のキャッチアップを常に意識していく必要があると改めて感じます。
生成AIに対するセキュリティテストに関するトレンドについて
セキュリティリスクの傾向がわかったので、次は実際にどういったテストが必要になっていくか検討しようと思いましたが、まずは先人の知識を参考にということで、生成AIに対するセキュリティテストに関するトレンドについて調べました。
様々なサイトや文献を読み進めるうちに、共通で言及されている内容をトレンドとして絞り込むことにし、それらを「従来のセキュリティ対策から流用出来そうなもの」と「生成AI特有のセキュリティ対策」で切り分けてみました。
従来のセキュリティ対策から流用出来そうなもの
・情報漏洩(個人、機密)
・マルウェア感染
・不正プログラム混入
生成AI特有のセキュリティ対策
・プロンプトインジェクション
・ハルシネーション(誤情報の生成)
・法令違反(著作権など各種権利侵害 / 生成AIに関連する法令)
抑えるべきセキュリティテストについて
セキュリティテストで抑えるべきトレンドが見えてきたので、自社製品にて、どのように生成AIを利用しているかを加味した上で、どういったテストをすべきか検討しました。
テスト事項 | 確認すべきポイント |
データサニタイズ | 弊社製品にて、データ学習は行われていないが、機密情報や個人を特定できる情報の保護(例:学習時に除外、削除、伏せるなど)が行われていることを確認 |
モデル検証や利用プログラムの定期更新 | パッチやセキュリティ修正プログラムの定期的な更新による、新たな脅威への対処が行われているかのチェック |
継続的モニタリングと脆弱性管理 | 将来的に異常な動作や潜在的なセキュリティ侵害をリアルタイムで検出するためチェック体制の確立 |
敵対的テスト | 脆弱性ツールなどを用いて、攻撃に対する堅牢性の確認 |
出力検証 | 従来のテストと異なり、常に同じ結果にはならない生成AIシステムの性質を考慮し、生成AIシステムの処理に関する理解(透明性と解釈可能な状態を確保)と、それに基づいた出力結果の一貫性や正確性を持って保証を行う |
最後に
現在、生成AIに対するテストについては、様々な研究が行われており、今後、様々なテスト技法が生み出されていくと言われています。
その為、常にそれらの情報をキャッチアップして、抑えるべきテスト技法や観点をアップデートしていくことが大切です。
エモーションテックでは顧客体験・従業員体験の改善をサポートし世の中の体験を変えるプロダクトを開発しております。もし興味を持っていただけましたら、ぜひ採用ページからご応募をお願いいたします。