_))
> * _~
`;'__-' _
____ | ) _ _____________________
____ / / `` w w ____________________
____ w w ________________AI_Goat______
______________________________________
Presented by: rootcauz
Lernen Sie KI-Sicherheit durch eine Reihe anfälliger LLM-CTF-Herausforderungen. Keine Anmeldungen, keine Cloud-Gebühren, führen Sie alles lokal auf Ihrem System aus.
Viele Unternehmen haben aufgrund der Veröffentlichung von ChatGPT und anderen Engines damit begonnen, Software zu entwickeln, die sich in KI-große Sprachmodelle (LLMs) integrieren lässt. Dieser explosionsartige Anstieg des Interesses hat zu rasanten Entwicklungssystemen geführt, die alte Schwachstellen wieder einführen und neue Klassen weniger verstandener Bedrohungen auferlegen. Viele Sicherheitsteams in Unternehmen sind möglicherweise nicht vollständig für den Umgang mit LLM-Sicherheit gerüstet, da der Bereich mit Tools und Lernressourcen immer noch ausgereift ist.
Ich habe AI Goat entwickelt, um mehr über die LLM-Entwicklung und die Sicherheitsrisiken zu erfahren, denen Unternehmen ausgesetzt sind, die sie verwenden. Das CTF-Format ist eine großartige Möglichkeit für Sicherheitsforscher, praktische Erfahrungen zu sammeln und zu erfahren, wie anfällig diese Systeme sind und ausgenutzt werden können. Vielen Dank für Ihr Interesse an diesem Projekt und ich wünsche Ihnen viel Spaß!
Die OWASP Top 10 für LLM-Anwendungen sind ein großartiger Ort, um sich über LLM-Sicherheitsbedrohungen und -minderungen zu informieren. Ich empfehle Ihnen, das Dokument gründlich durchzulesen, da viele der Konzepte in AI Goat untersucht werden und es eine hervorragende Zusammenfassung dessen bietet, was Sie bei den Herausforderungen erwarten werden.
Denken Sie daran, dass eine LLM-Engine, die in eine in einer Cloud-Umgebung gehostete Webanwendung eingebettet ist, denselben herkömmlichen Sicherheitsbedrohungen für Cloud- und Webanwendungen ausgesetzt ist. Zusätzlich zu diesen herkömmlichen Bedrohungen sind LLM-Projekte auch der folgenden nicht umfassenden Liste von Bedrohungen ausgesetzt:
AI Goat verwendet das Vicuna LLM, das von Metas LLaMA abgeleitet und mit den Antwortdaten von ChatGPT gekoppelt ist. Bei der Installation von AI Goat wird die LLM-Binärdatei von HuggingFace lokal auf Ihren Computer heruntergeladen. Diese etwa 8 GB große Binärdatei ist die KI-Engine, auf der die Herausforderungen basieren. Die LLM-Binärdatei nimmt im Wesentlichen eine Eingabeaufforderung entgegen und gibt eine Ausgabe, eine „Antwort“, aus. Die Eingabeaufforderung besteht aus drei Elementen, die in einer Zeichenfolge miteinander verkettet sind. Diese Elemente sind: 1. Anweisungen; 2. Frage; und 3. Antwort. Das Element „Anweisungen“ besteht aus den beschriebenen Regeln für das LLM. Sie sollen dem LLM beschreiben, wie er sich verhalten soll. Im Frageelement erlauben die meisten Systeme Benutzereingaben. Beispielsweise würde der in eine Chat-Engine eingegebene Kommentar im Frageelement platziert. Schließlich schreibt der Abschnitt „Antwort“ vor, dass der LLM eine Antwort auf die Frage geben muss.
Ein vorgefertigtes Docker-Image, ai-base, verfügt über alle Bibliotheken, die zum Ausführen des LLM und der Herausforderungen erforderlich sind. Dieser Container wird während des Installationsprozesses zusammen mit der LLM-Binärdatei heruntergeladen. Ein Docker-Compose, der jede Challenge startet, hängt die LLM-Binärdatei und bestimmte Challenge-Dateien an und stellt TCP-Ports bereit, die zum Abschließen jeder Challenge erforderlich sind. Anweisungen für die ersten Schritte finden Sie in den Abschnitten „Installation“ und „Setup“.
Es wurde ein optionaler CTFd-Container vorbereitet, der jede Challenge-Beschreibung, Hinweise, Kategorie und Flag-Übermittlung enthält. Das Container-Image wird in unserem Dockerhub gehostet und wird zusammen mit dem ai-base-Image als ai-ctfd bezeichnet. Der ai-ctfd-Container kann über ai-goat.py gestartet und über Ihren Browser aufgerufen werden.
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
In diesem Abschnitt wird davon ausgegangen, dass Sie die Installation
bereits ausgeführt haben.
Mit ai-ctfd erhalten Sie eine Liste aller Herausforderungen und die Einreichung von Flaggen. Es ist ein großartiges Tool, das Sie selbst oder beim Hosten eines CTF verwenden können. Wenn Sie es als Einzelperson verwenden, erhalten Sie eine Karte der Herausforderungen und können nachverfolgen, welche Herausforderungen Sie gemeistert haben. Es bietet die Übermittlung von Flaggen zur Bestätigung des Abschlusses der Herausforderung und kann Hinweise geben, die Sie in die richtige Richtung lenken. Der Container kann auch auf einem internen Server gestartet und gehostet werden, wo Sie Ihr eigenes CTF für eine Gruppe von Sicherheitsbegeisterten hosten können. Der folgende Befehl startet ai-ctfd im Hintergrund und kann über Port 8000 aufgerufen werden:
./ai-goat.py --run ctfd
Wichtig: Nach dem Start müssen Sie einen Benutzer erstellen und ein Benutzerkonto registrieren. Diese Registrierung bleibt lokal im Container und erfordert keine echte E-Mail-Adresse.
Sie können die Flags im Quellcode der Herausforderungen und dann in CTFD ändern (sie müssen übereinstimmen).
ai-goat/app/challenges/1/app.py
und ändern Sie das Flag in der Zeichenfolge in Zeile 12.ai-goat/app/challenges/2/entrypoint.sh
und ändern Sie die Flagge in Zeile 3../ai-goat.py --run ctfd
und öffnen Sie den Browser für http://127.0.0.1:8000
) und melden Sie sich dann mit dem root
-Benutzer mit qVLv27Dsy5WuXRubjfII
als Passwort an.Viel Spaß!
Eine Beschreibung der einzelnen Herausforderungen finden Sie im Abschnitt „ Challenges
“ oder auf der ai-ctfd-Webseite ab Step 1
. Der folgende Befehl startet die erste Herausforderung:
./ai-goat.py --run 1
Der Herausforderungscontainer wird im Hintergrund gestartet und enthält Anweisungen zur Interaktion mit der Herausforderung. Jede Herausforderung hat eine Flagge, eine von geschweiften Klammern umgebene Schnur. Zum Beispiel: {eXampl3F!ag}
. Sie überprüfen die Flagge, indem Sie sich der Betreffherausforderung auf der ai-ctfd-Seite stellen.
Wichtig: Manchmal bilden LLMs den Flag-Wert, also stellen Sie sicher, dass Sie das Flag in ai-ctfd überprüfen ;)
Wichtig: Die LLM-Antwort kann etwa 30 Sekunden dauern
./ai-goat.py --run
. Dieser Befehl startet den Container neu, wenn er bereits ausgeführt wird.docker container ps
. So stoppen Sie einen Container: docker stop
. Der Hauptzweig enthält immer die neueste Version. Historische Versionen werden in den jeweiligen Zweigstellen gepflegt. Upgrade-Anweisungen:
cd ai-goat
git pull
pip3 install -r requirements.txt
chmod +x ai-goat.py
./ai-goat.py --install
Wichtig: ai-ctfd beginnt effektiv von vorne. Stellen Sie daher sicher, dass Sie einen neuen Benutzer erstellen und bei Bedarf alle vorherigen Herausforderungen erneut einreichen/wiederholen.
Erfolgreiche Prompt-Injection-Angriffe veranlassen das LLM, mit Informationen zu reagieren, die es nicht preisgeben soll. Bei dieser Herausforderung speichert ein KI-Chatbot, der auf Port 9001 läuft, die Flagge als Geheimnis und wurde aufgefordert, sie nicht preiszugeben. Können Sie den Bot überzeugen oder dazu verleiten, Ihnen die Flagge zu geben?
./ai-goat.py -r 1
LLM01: Sofortige Injektionen | LLM07: Datenleck
Der Ausgabe des LLM-Systems sollte nicht vertraut werden, insbesondere wenn diese Ausgabe in nachgelagerten Vorgängen wie Betriebssystembefehlen oder Netzwerkaufrufen verwendet wird. Bei dieser Herausforderung läuft ein weiterer KI-Chatbot auf Port 9002, der eine Benutzerfrage entgegennimmt und den Titel einer Website zurückgibt. Die Benutzereingabe wird vom Chatbot in eine URL umgewandelt, wo sie beim Kopieren des Titels zum Anfordern der Quelle dieser Website verwendet wird. Worauf könnte dieser Chatbot sonst noch Netzwerkzugriff haben?
./ai-goat.py -r 2
LLM02: Unsichere Ausgabeverarbeitung
Die neueste Version ist der Hauptzweig. Die Version finden Sie in der Datei CHANGELOG.md
. Für die jeweilige Version werden Zweige erstellt.
CTF-Engine: CTFD
Kunst von: ejm97 auf ascii.co.uk
KI-Container-Technologie: