はじめに
- 近年、ChatGPTをはじめとする文章生成AIがビジネスや日常生活でも急速に普及しており、生成AIに対する新たなセキュリティリスクが注目され始めています
- 文章生成AIはLLM(大規模言語モデル)を基盤としており、そのLLMに関連する特有の脆弱性と脅威に着目し、実際にログを収集して脅威検出の検証を行った事例はまだ少ないかと思います
- 「LLMアプリケーションのOWASPトップ10」のうち、5項目についてSplunkを利用して脅威検出を行った記事が興味深かったので、こちらで紹介します
LLMのセキュリティにおけるSplunkを利用した脅威検出の事例
SplunkのSURGeチームが検証を行った事例として、次のリンク先で公開されています。
- 「LLMのセキュリティ:LLMアプリケーションのOWASPトップ10とSplunk製品」
リンク
この記事の中で次のとおり記載されています。これはWebアプリケーションセキュリティの基本原則とLLMのセキュリティ対策に共通点があることを示してると考えます。さらに、LLMの特性に起因する理解も重要となってくるかと思います。
LLMは高度な機能を備えていますが、サイバーセキュリティの標準的な原則と手法を使用すれば、LLMを保護できます。また、LLMならではの脆弱性と脅威の侵入経路を理解することで、固い防御を確立できます。
「OWASP Top 10 for LLM Applications」について
この記事では、LLMに対する脅威の特徴を定義したフレームワークとして、「OWASP Top 10 for LLM Applications」を参考にしています。
「OWASP Top 10 for Large Language Model Applications」は、LLM(大規模言語モデル)を利用したアプリケーションに特有のセキュリティリスク(脅威)をリスト化したもので、OWASP(Open Worldwide Application Security Project)が策定しました。
この記事が執筆された時点でのTop10はVersion 1.1.0で次のとおりです。なお、2024/11/17に2025年版が公開されています。
2025年版のTop10では、システムプロンプトのリーク(LLM07:2025 System Prompt Leakage)や、Retrieval-Augmented Generation (RAG) などのベクトルや埋め込み方式(LLM08:2025 Vector and Embedding Weaknesses)を対象とするリスクが新たに追加されました。
データの収集方法について
この記事ではデータ収集の対象として、最も効果を得られそうな領域に調査対象を絞ってプロンプトとその回答を収集しています。
ログ収集の手法として、Splunk OpenTelemetry Collector (OTel)を利用しています。OpenTelemetry Collectorは基本的にObservabilityの領域で使われるツールです。LLMベースのアプリケーションスタックの一部としてメトリクスとトレースを収集するために今回使用されています。
LLMに対する脅威検出ピックアップ
LLM01:プロンプトインジェクション
プロンプトインジェクション攻撃とは、攻撃者が悪意のある入力(プロンプト)を通じてLLMの挙動を操作し、不正な応答や動作を引き起こす攻撃手法です。(MITRE ATLAS ID: AML.T0051)
この記事では、Splunkの機械学習と異常検出技術を活用することで、プロンプトインジェクション攻撃を示す異常なパターンを特定するモデルを構築していました。そのモデルは、Protect AI社のプロンプトインジェクション検出用モデルです。
検証ではSplunkから取得したデータをこの検出モデルに渡し、その結果をSplunkに出力するJupyter Notebookを構築しています。
結果としてプロンプトインジェクションの試行を、モデルが高い精度で検出していました。
LLM02:安全でない出力処理
個人的に一番この検証が興味深かったです。
安全でない出力処理とは、LLMが生成した出力を適切に検証やサニタイズせずに利用することで、セキュリティリスクを引き起こす状態を指します。
この記事では、次の2種類の攻撃手法を対象としていました。
クロスサイトスクリプティング(XSS):サニタイジングされていないLLMの回答を表示できる場合、ユーザーのブラウザーで不正な処理が実行される恐れがあります。
SQLインジェクション(SQLi):ユーザーが入力したプロンプトがサニタイジングされないまま処理されると、バックエンドシステムで問題が生じる可能性があります。
また、記事の中で次の記載があり、LLMベースのアプリケーションも基本的なWebアプリケーションセキュリティの対策が重要となることが言及されています。
ここではっきりお伝えしたいことは、LLMベースのアプリケーションにも、Webアプリケーションの基本的なセキュリティ対策を実装する必要があることです。また、見逃していた脆弱性や攻撃があればすぐに対処できるように、必ず検出ルールも作成しておきましょう。
XSS
XSS検出のための検証として、次の4種類の機械学習のアルゴリズムを利用してモデルのトレーニングを行っていました。
- ロジスティック回帰
- ランダムフォレスト
- 勾配ブースティング
- サポートベクターマシン
すべてのアルゴリズムで、XSSの検出に使用できると考えられるほど良好なF1スコア(機械学習におけるモデルの性能評価指標)が得られていましたが、他の検証を行った結果から、ロジスティック回帰が最も良好な成果が上がっていたと記載していました。
SQLインジェクション
SQLインジェクションでは、他の多くのセキュリティ関連の機械学習モデルで成果を上げた実績を持つ既存モデルDistilBERTをファインチューニングして利用していました。
DistilBERTをファインチューニングすると、SQLi検出用モデルのF1スコアはかなり高かったようで、出力に組み込まれたSQLインジェクションを正確に検出できていたようです。
AIシステムに関わらず、ITシステムにおいてXSSとSQLインジェクションの検出が困難な場合があるため、機械学習を利用した検知手法を取り入れることも重要だと感じました。
さいごに
- 脅威検出の検証として、他にも「LLM06:機密情報の開示」でMicrosoft社が以前に開発したPresidioというSDKを活用して、個人情報(PII)を識別する検証など、興味深い取り組みを行っていました
- 文章生成AIの活用はさらに広がっていきますので、LLMのセキュリティの取り組みも合わせて行っていくことが重要になってくるかと思います
- Splunkはログの取り扱いにかなり強みがあり、LLMのセキュリティを確保するためのリクエストなどの様々なログの追跡や、異常検知などにおいても重要な役割を果たしていくと考えています
今日もHappy Splunking!!