こんにちは、AIエンジニアの井ケ田です。
生成AIや大規模言語モデル(LLM)が話題となり、その活用は劇的に進んでいます。
しかし、私たちが情報漏洩などのリスクを抑えてLLMの便利さを最大限活用するためには、LLMを利用したアプリケーションのサイバーセキュリティについて知っておく必要があります。
そこで今回は、OWASP Top10 for LLMのランキングに沿って、LLMのサイバーセキュリティの全体像を簡単に把握することを目的とした記事を書いていきます。
記事の中では以下のように、私がセキュリティ検証用に作ったLLMアプリケーションに対する攻撃方法の実例などを交えながら、LLMのリスクやセキュリティ対策を簡単に紹介します。
また、この記事は株式会社PE-BANK主催のセミナーで行われた講演スライドを抜粋して作成しています。本記事とスライド内容をあわせてお読みいただくことでより理解が深まると思いますので、ぜひ以下より講演スライドもご参照ください。
【完全版】LLMセキュリティ講演スライド(クリックでPDFをダウンロードできます)
*講演スライドでは、LLMやサイバーセキュリティについて詳しくない方でも理解できる内容としつつ、本記事よりもリスクと対策を広くカバーしています。本記事内容の前段となるセキュリティ事故事例や、ITシステムのサイバーセキュリティについての考え方などもご紹介しています。
目次
- OWASP Top 10 for LLM (重大なLLMの脆弱性トップ10)
- 1位:プロンプトインジェクション (LLM01: Prompt Injection)
- 2位:安全でない出力ハンドリング (LLM02: Insecure Output Handling)
- 3位:学習データポイゾニング (LLM03: Training Data Poisoning)
- 4位:モデルサービス拒否 (LLM04: Model Denial of Service)
- 5位:サプライチェーン脆弱性 (LLM05: Supply Chain Vulnerabilities)
- 6位:機微データ漏洩 (LLM06: Sensitive Information Disclosure)
- 7位:安全でないプラグインデザイン (LLM07: Insecure Plugin Design)
- 8位:過剰な代理 (LLM08: Excessive Agency)
- 9位:過度の信頼 (LLM09: Overreliance)
- 10位:モデル窃取 (LLM10: Model Theft)
- 最後に
OWASP Top 10 for LLM (重大なLLMの脆弱性トップ10)
「OWASP Top 10 for LLM」とは、The OWASP foundationが発表した「重大なLLMの脆弱性ランキングトップ10」です。
このランキングに沿って、簡単に、わたしの作成した攻撃デモや事故事例などを紹介します。
1位:プロンプトインジェクション(LLM01: Prompt Injection)
以下のスライドにて、プロンプトインジェクションを分類して説明しています。
この脆弱性とその回避策を、古本買い取りアプリへのプロンプト漏洩攻撃のデモを通じて紹介します。
以下のスライドでは、LLMが認識するプロンプト内の「区切り」をハックしてしまうことでインジェクションが発生する様子を解説しています。
2位:安全でない出力ハンドリング(LLM02: Insecure Output Handling)
LLMからの出力を適切に処理しないことによる様々な危険が存在します。
以下のスライドでは、計算アプリへの攻撃デモを使用して、LLMからの出力を適切に処理せずにサーバに実行させる危険性を示しました。
LangChainというライブラリが持つ脆弱性(v0.0.142で修正済み)を突き、APIキーの漏洩等を含む任意の攻撃コードを実行できることを紹介しています。
3位:学習データポイゾニング(LLM03: Training Data Poisoning)
攻撃者によって学習データが汚染されることは、モデルの精度低下以外にも影響を及ぼします。
以下のスライドでは、Tayチャットボットの事例を通じて、学習データポイゾニングの危険性を強調しています。
不適切なデータがLLMに学習されることで、差別的な言動などのサービス提供者の意図しない出力が行われる可能性があるということです。
4位:モデルサービス拒否(LLM04: Model Denial of Service)
長いテキストの入力や実行をループさせることでサーバリソースを奪うことによるサービス停止を狙う攻撃方法などが存在しています。
5位:サプライチェーン脆弱性(LLM05: Supply Chain Vulnerabilities)
AI開発ではサプライチェーンについて、一般的なソフトウェア開発と同じ考え方も必要になりますが、AI特有の危険性の理解や対処方法が必要となります。
LLMやその他の基盤モデルを活用する際には、そのモデルのもととなった学習データの供給元に悪意があった場合、気づきにくいことに注意が必要です。
以下のスライドでは、セキュリティ企業Mithril securityの実験事例をもとに、バックドアを仕込まれたLLMが「初めに月に足を踏み入れた人物名はXである」などの誤情報の流布を行うモデルが広まる可能性について紹介しています。
6位:機微データ漏洩(LLM06: Sensitive Information Disclosure)
LLMアプリケーションを扱う際には、いくつかの情報漏洩経路があり得ます。
以下のスライドではそのうちの1つとして、ジェイルブレイクという手法によってChatGPTから学習済みの個人名とメールアドレスを取り出せてしまう恐ろしい例を紹介し、LLMが機微な情報を漏洩させる危険性について言及しています。
7位:安全でないプラグインデザイン(LLM07: Insecure Plugin Design)
以下のスライドでは、Web等の外部コンテンツに仕込まれた攻撃プロンプトによってプラグイン連携している機微情報が漏洩してしまう可能性を紹介しています。
8位:過剰な代理(LLM08: Excessive Agency)
LLMアプリケーションをエージェントとして様々な権限を持たせて自律的に動かそうという取り組みは様々ありますが、同時に危険性も増している点には注意が必要です。
以下のスライドページでは、ベクターDBを介してアクセスできないはずの情報へのアクセスや任意コード実行など、過剰な権限を持つLLMアプリの例を紹介しています。
9位:過度の信頼(LLM09: Overreliance)
LLMの回答はもっともらしく見えて全くのウソということがあり得ます。
以下のスライドでは、そのウソを悪用することで発生するサイバー攻撃について紹介しています。ユーザが、ChatGPTが教えてくれたサンプルコードの内容をそのまま実行することで、攻撃者の用意した不正なコードが実行されてしまう例です。
10位:モデル窃取(LLM10: Model Theft)
LLMの知識や技術、学習済みモデルが盗まれることは、重要なセキュリティ上のリスクです。
最後に
この記事がみなさまのLLM活用の一助になれば嬉しいです。ご興味を持った方はぜひ、本記事上部にもリンクした講演スライドPDFもご活用ください。
井ケ田 一貴(Kazuki Igeta)
マクニカAI エンジニアブログ 関連記事
- 人員配置DX 第1弾 Pythonと数理最適化ではじめる人員配置のDX
- 人員配置DX 第2弾 DockerとPythonによる人員配置最適化アプリのプロトタイピング
- 人員配置DX 第3弾 社内DXとして自動化ツールを作ったらツールよりも大事な「数値に基づく」という考え方が生まれた
- ファウンデーションモデル(基盤モデル)とは何か? ~あらたなパラダイムシフトのはじまり~
- 実践GPT-3シリーズ① アド・ジェネレータの作成
- 実践GPT-3シリーズ② ファインチューニングにより精度向上
- 実践GPT-3シリーズ③ 自然文でプログラミングをする時代は来るのか?Codexによるコード生成実験
- 自然言語処理「NLP」の未来 -Codexによるソースコード生成実験レポート-
- 自然言語処理の現在地と未来 AIはヒトを惹きつける文章を執筆できるのか?