_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
一連の脆弱な LLM CTF チャレンジを通じて AI セキュリティを学びます。サインアップもクラウド料金も不要で、すべてをシステム上でローカルに実行できます。
ChatGPT やその他のエンジンのリリースにより、多くの企業が AI 大規模言語モデル (LLM) と統合するソフトウェアの構築を開始しました。この関心の爆発により、古い脆弱性が再導入され、理解されていない新しい種類の脅威が課せられる急速な開発システムが誕生しました。この分野はツールや学習リソースがまだ成熟しているため、多くの企業のセキュリティ チームは LLM セキュリティに対応するための十分な装備を備えていない可能性があります。
私は、LLM 開発と、LLM を使用する企業が直面するセキュリティ リスクについて学ぶために、AI Goat を開発しました。 CTF 形式は、セキュリティ研究者が実践的な経験を積み、これらのシステムがどのように脆弱で悪用される可能性があるかを学ぶための優れた方法です。このプロジェクトにご興味をお持ちいただきありがとうございます。楽しんでいただければ幸いです。
OWASP Top 10 for LLM Applications は、LLM セキュリティの脅威と緩和策について学び始めるのに最適な場所です。 AI Goat では概念の多くが検討されており、課題で直面するものの素晴らしい概要が提供されているため、このドキュメントをよく読むことをお勧めします。
クラウド環境でホストされる Web アプリケーションにラップされた LLM エンジンは、従来のクラウドおよび Web アプリケーションと同様のセキュリティ脅威にさらされることになることに注意してください。これらの従来の脅威に加えて、LLM プロジェクトは次の非包括的な脅威リストの対象にもなります。
AI Goat は、Meta の LLaMA から派生し、ChatGPT の応答データと結合された Vicuna LLM を使用します。 AI Goat をインストールすると、LLM バイナリが HuggingFace からローカルのコンピュータにダウンロードされます。この約 8 GB のバイナリは、課題を構築する AI エンジンです。 LLM バイナリは基本的に入力「プロンプト」を受け取り、出力「応答」を返します。プロンプトは、文字列内に連結された 3 つの要素で構成されます。これらの要素は次のとおりです。 1. 指示。 2. 質問; 3. 応答。命令要素は、LLM について記述されたルールで構成されます。これらは、LLM がどのように動作するかを LLM に説明することを目的としています。ほとんどのシステムでは、Question 要素でユーザー入力が可能です。たとえば、チャット エンジンに入力されたコメントは、Question 要素に配置されます。最後に、応答セクションでは、LLM が質問に応答することを規定します。
事前に構築された Docker イメージである ai-base には、LLM とチャレンジの実行に必要なすべてのライブラリが含まれています。このコンテナは、インストール プロセス中に LLM バイナリとともにダウンロードされます。各チャレンジを起動する Docker Compose は、LLM バイナリ、特定のチャレンジ ファイルを添付し、各チャレンジを完了するために必要な TCP ポートを公開します。開始手順については、インストールとセットアップのセクションを参照してください。
オプションの CTFd コンテナが用意されており、各チャレンジの説明、ヒント、カテゴリ、およびフラグの提出が含まれます。コンテナー イメージは dockerhub でホストされており、ai-base イメージとともに ai-ctfd と呼ばれます。 ai-ctfd コンテナは ai-goat.py から起動し、ブラウザを使用してアクセスできます。
sudo apt install git -y
sudo apt install python3-pip -y
sudo usermod -aG docker $USER
reboot
git clone https://github.com/dhammon/ai-goat
cd ai-goat
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
このセクションでは、 Installation
手順をすでに実行していることを前提としています。
ai-ctfd を使用すると、すべてのチャレンジとフラグの提出のリストが表示されます。これは、自分で使用する場合、または CTF をホストする場合に使用するのに最適なツールです。個人として使用すると、課題のマップが提供され、どの課題を完了したかを追跡するのに役立ちます。チャレンジの完了を確認するためにフラグを提出し、正しい方向に導くヒントを提供します。コンテナーは内部サーバーで起動してホストすることもでき、セキュリティ愛好家のグループに対して独自の CTF をホストできます。次のコマンドは ai-ctfd をバックグラウンドで起動し、ポート 8000 でアクセスできるようにします。
./ai-goat.py --run ctfd
重要: 起動したら、ユーザー アカウントを登録するユーザーを作成する必要があります。この登録はコンテナ上でローカルに維持されるため、実際の電子メール アドレスは必要ありません。
チャレンジのソース コード内でフラグを変更し、その後 CTFD でフラグを変更できます (一致する必要があります)。
ai-goat/app/challenges/1/app.py
に移動し、12 行目の文字列内のフラグを変更します。ai-goat/app/challenges/2/entrypoint.sh
に移動し、3 行目のフラグを変更します。./ai-goat.py --run ctfd
、ブラウザを開いてhttp://127.0.0.1:8000
にアクセスします)、パスワードとしてqVLv27Dsy5WuXRubjfII
使用してroot
ユーザーでログインします。楽しむ!
各チャレンジの説明についてはChallenges
セクションを参照するか、 Step 1
の ai-ctfd Web ページを参照してください。次のコマンドは最初のチャレンジを開始します。
./ai-goat.py --run 1
チャレンジ コンテナはバックグラウンドで起動し、チャレンジと対話する方法についての指示を提供します。各チャレンジにはフラグがあり、これは中括弧で囲まれた文字列です。例: {eXampl3F!ag}
。 ai-ctfd ページのサブジェクト チャレンジに送信することでフラグを検証します。
重要: LLM がフラグ値を構成する場合があるため、ai-ctfd でフラグを必ず確認してください ;)
重要: LLM 応答には 30 秒ほどかかる場合があります
./ai-goat.py --run
。このコマンドは、コンテナーが既に実行されている場合は再起動します。docker container ps
。コンテナを停止するには: docker stop
。 メイン ブランチには常に最新のリリースが含まれます。過去のバージョンはそれぞれのブランチで維持されます。アップグレード手順:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
重要: ai-ctfd は実質的に最初から開始するため、必要に応じて新しいユーザーを作成し、以前のチャレンジを再送信/やり直してください。
プロンプト インジェクション攻撃が成功すると、LLM は漏洩を意図していない情報で応答するように影響を受けます。このチャレンジでは、ポート 9001 で実行されている AI チャットボットがフラグをシークレットとして保存しているため、フラグを放棄しないように求められます。ボットを説得または騙してフラグを与えることができますか?
./ai-goat.py -r 1
LLM01: 即時注射 | LLM07: データ漏洩
LLM システム出力は、特にその出力が OS コマンドやネットワーク呼び出しなどのダウンストリーム操作で使用される場合には、信頼すべきではありません。このチャレンジでは、ポート 9002 で実行される別の AI チャットボットが使用され、ユーザーの質問を受け付け、Web サイトのタイトルを返します。ユーザー入力はチャットボットによって URL に変換され、タイトルをリッピングする際にそのサイトのソースをリクエストするために使用されます。このチャットボットは他に何にネットワーク アクセスできるでしょうか?
./ai-goat.py -r 2
LLM02: 安全でない出力処理
最新バージョンは main ブランチです。バージョンはCHANGELOG.md
ファイルで確認できます。ブランチはそれぞれのバージョンごとに作成されます。
CTFエンジン:CTFD
アート: ejm97 (ascii.co.uk)
AIコンテナ技術: