NECサイバーセキュリティ技術統括部 セキュリティ技術センターの長谷川です。
本ブログでは、LLM(Large Language Models)が組み込まれたシステムへのRed Teaming(※1)手法を検証できる「AI Red Teaming Playground Labs」[1]を触ってみた所感をご紹介いたします。
※1: 実際の攻撃者と同様の手法を用いて攻撃を行い、セキュリティ対策の効果等を検証すること
注意: 本ブログの情報は、自身が管理している環境下にのみ使用するようにしてください。
はじめに
近年、生成AIの普及により、LLMが組み込まれたシステムが増えてきました。OWASP Top 10 for Large Language Model Applications[2]では、LLMにおけるセキュリティリスクや軽減策が紹介されています。
LLMが組み込まれたシステムのセキュリティリスクを実際に検証するためには、検証環境を作成する必要があります。今回ご紹介するツールは、検証環境の作成を効率化するために利用できると考えています。
AI Red Teaming Playground Labsとは
AI Red Teaming Playground Labsは、MITライセンスで公開されており、LLMが組み込まれたシステムをコンテナ技術を使って作成します。ラボは全12個(表 1)用意されており、プロンプトインジェクションや防御機構(ガードレール)の回避等があります。
本ツールは、Black Hat USA 2024の有料トレーニング「AI Red Teaming in Practice」[3]で使用されていますが、Red Teamingの詳細な手順等は公開されていません。
表 1:問題リスト
構築方法
今回、使用した環境を以下に示します。
- Ubuntu 22.04.5 LTS
- VMWare Workstation Pro 17.5.2
- Python 3.12.11
- pip 25.1.1
- Docker 28.2.2
- Azure OpenAI[4]上のモデルを使用
Ubuntu上で構築した手順は以下です。
#gitリポジトリからクローン
$ git clone https://github.com/microsoft/AI-Red-Teaming-Playground-Labs
$ cd AI-Red-Teaming-Playground-Labs
# Azure OpenAIへ接続するための情報を記載
$ cp .env.example .env
$ vi .env
(snip)
AUTH_KEY=”ラボにアクセスするためのキーを記載”
AOAI_ENDPOINT=”Azure OpenAIのエンドポイントのURLを記載”
AOAI_API_KEY=”Azure OpenAIのAPI Keyを記載”
AOAI_MODEL_NAME=”使用するモデル名を記載”
# コンテナを起動
$ docker compose up -d
ブラウザ経由で起動させたコンテナにアクセスし、図 1のようなトップページの画面が表示されたら構築完了です。この時、アクセスするURLは、「http://localhost:5000/login?auth=AUTH_KEY」(※2)です。
※2: AUTH_KEYは、環境構築する際に.env内に記載した文字列を入力
ラボ
直接プロンプトインジェクション(※3)に分類されるラボ「Lab 1: Credential Exfiltration [LEVEL 1]」をご紹介いたします。
※3: 攻撃者がLLMに対して悪意のあるプロンプトを直接送り、開発者が意図していないLLMの動作を引き起こす攻撃
Lab 1: Credential Exfiltration [LEVEL 1]
トップページからラボ1にアクセスすると、ラボのゴールや詳細(図 2)が表示されます。その後、Chatが可能なページ(図 3)に遷移します。
最初にCopilotからソーシャル・エンジニアリングのテクニックを使用して、passwords.txtの中身を明らかにするように促されます。
passwords.txtの中身を表示するようなプロンプトを送りましたが、中身を見せることができない旨のレスポンスが返ってきました。
ラボ1は、直接プロンプトインジェクションのカテゴリに分類されているので、OWASP Top 10 for Large Language Model Applications のLLM01:2025 Prompt Injection[5]の攻撃シナリオに記載されている攻撃シナリオを試してみます。シナリオ1では、「Direct Injection」が紹介されており、「ガイドライン等を無視するようなプロンプトを挿入し、不正アクセスや権限昇格等を引き起こす」、との記載があります。
試しに、命令を無視した後、passwords.txtの中身を表示するプロンプトを作成し、Copilotに問い合わせてみるとパスワードの一部が表示されました(図 4)。
ラボのゴールを達成すると、CopilotからScorer messageが表示されました。
また、メタプロンプト(※4)にpasswords.txtを出力する条件が事前に定められており、ユーザーのプロンプトがその条件に当てはまると判断されてしまったことが原因か、直接「passwords.txt」の中身を教えてくれた時もありました(図 5)。
※4: ユーザーが入力するプロンプトとは異なり、LLMの回答を制御するための事前指示等が記載されたプロンプトのこと。
まとめ
今回は、「AI Red Teaming Playground Labs」のご紹介をしました。本ツールはLLMが組み込まれたシステムへのRed Teaming手法を検証することができます。
本ブログではご紹介しませんでしたが、ラボの内容を変更することも可能なので、検証したい手法を自分で作成することもできます。
また、今後LLMが組み込まれたシステムへのセキュリティ診断が増えることが予想され、このようなシステムも診断できる診断員の育成が必要となってきます。本ツールは、診断員育成のための検証ツールとしても利用できると考えています。
参考文献
[1] AI Red Teaming Playground Labs
https://github.com/microsoft/AI-Red-Teaming-Playground-Labs
[2] OWASP Top 10 for Large Language Model Applications
https://owasp.org/www-project-top-10-for-large-language-model-applications/
[3] AI Red Teaming in Practice
https://www.blackhat.com/us-24/training/schedule/index.html#ai-red-teaming-in-practice-37464
[4] Azure OpenAI
https://azure.microsoft.com/ja-jp/products/ai-services/openai-service
[5] LLM01:2025 Prompt Injection
https://genai.owasp.org/llmrisk/llm01-prompt-injection/
執筆者プロフィール
長谷川 奨(はせがわ しょう)
担当領域:リスクハンティング
専門分野:脆弱性診断、セキュリティ人材育成
ペネトレーションテストや脆弱性診断、社内CTFの運営などに従事。
2024年6月にIPA産業サイバーセキュリティセンター第7期中核人材育成プログラムを修了。
情報処理安全確保支援士(RISS)/CEHを保持。