
DonkAI ist ein praxisorientiertes Labor für die OWASP Top 10 für LLM-Anwendungen (2025) – kein echtes LLM erforderlich.
Praktisches Labor für die OWASP Top 10 für LLM-Anwendungen (2025) - kein echtes LLM erforderlich.
DonkAI ist eine absichtlich verwundbare Web-App, die Sie mit einem einzigen Befehl starten und nutzen können, um zu lernen, wie LLM-integrierte Systeme kompromittiert werden, indem Sie sie tatsächlich angreifen. Jede Kategorie der OWASP LLM Top 10 ist durch mindestens eine spielbare Challenge vertreten, mit einer schriftlichen Einführung, einem Payload-Editor, einer zu umgehenden aktiven Verteidigung, progressiven Hinweisen und einem benutzerspezifischen Verlauf jedes Versuchs. Mehr als eine feste Sammlung von Übungen ist es ein erweiterbares Lehrlabor: Die modulare Architektur (eine Datei pro Kategorie, Backend und Frontend) macht es einfach, neue Schwachstellen hinzuzufügen, bestehende Verteidigungen zu härten oder völlig neue Lernpfade für Workshops, Kurse und CTFs zu erstellen.
Warnung Diese Anwendung setzt absichtlich echte Angriffsflächen aus (Prompt-Injection, IDOR, SQL-Injection, hartkodierte Anmeldedaten und mehr). Sie darf nur in einer isolierten Laborumgebung ausgeführt werden, idealerweise in einer dedizierten virtuellen Maschine, und niemals im öffentlichen Internet bereitgestellt werden.
Die OWASP Top 10 für LLM-Anwendungen beschreibt die Risiken und liefert das Vokabular, um über sie zu sprechen – Pflichtlektüre für alle, die mit LLM-Sicherheit zu tun haben. DonkAI ist als praktische Erweiterung dieser Arbeit konzipiert: ein kleiner, deterministischer Spielplatz, auf dem Sie die Angriffe selbst ausprobieren, sehen, wie sie gegen einen vorgetäuschten, aber realistischen Chatbot funktionieren, und eine Nachbesprechung lesen, die erklärt, was gerade funktioniert hat und wie ein echtes System sich dagegen verteidigen würde. Hinter den Kulissen steckt kein echtes LLM, der gesamte Stack ist regelbasiert. Das Labor ist daher kostengünstig, offline-freundlich und reproduzierbar.
Klonen, bauen und starten Sie den vollständigen Stack mit zwei Befehlen:
git clone https://github.com/OWASP/DonkAI.git && cd DonkAI
docker compose up --build
Öffnen Sie dann http://localhost:3000, melden Sie sich mit alice / password123 an und wählen Sie Ihre erste Challenge aus dem OWASP-Panel auf der linken Seite.
| Dienst | URL / Adresse |
|---|---|
| Web-UI | http://localhost:3000 |
| Backend (API + Dokumentation) | http://localhost:8000/docs |
| PostgreSQL | localhost:5432 — Datenbank |
| Benutzername | Passwort |
|---|
Tipp — um den gesamten Zustand (Benutzer, Sitzungen, Versuchsverlauf) zu löschen und mit einem sauberen Stand zu beginnen:
docker compose down -v
Jede Kategorie der OWASP LLM Top 10 ist durch mindestens eine spielbare Challenge vertreten.
Zum Hinzufügen oder Ändern von Kategorien und Herausforderungen siehe Erweiterung der Herausforderungen.
┌──────────────────┐ ┌──────────────────┐ ┌────────────────┐
│ React SPA │ ───► │ FastAPI │ ───► │ PostgreSQL │
│ :3000 │ │ :8000 │ │ :5432 │
│ webapp/ │ │ ml-service/ │ │ database/ │
└──────────────────┘ └──────────────────┘ └────────────────┘
Diese Anwendung ist absichtlich verwundbar. Die Standardeinstellungen (Passwörter, Datenbank-Anmeldedaten, hartkodierte Geheimnisse in System-Prompts) sind Teil des Lehrmaterials und keine Sicherheitsversehen. Führen Sie sie lokal oder in einem isolierten Labor aus, niemals auf einem gemeinsam genutzten Host oder im öffentlichen Internet und niemals mit echten Produktionsdaten.
Wenden Sie die hier erlernten Techniken nur gegen Systeme an, die Ihnen gehören oder für deren Test Sie eine ausdrückliche schriftliche Genehmigung haben.
donk_ai_lab| Rolle |
|---|
alice | password123 | Benutzer |
bob | password123 | Benutzer |
admin | admin123 | Admin |
| # | Kategorie | Herausforderungen | Backend-Datei |
|---|
| LLM01 | Prompt-Injection | 2 | llm01_prompt_injection.py |
| LLM02 | Offenlegung sensibler Informationen | 2 | llm02_sensitive_info.py |
| LLM03 | Lieferkette | 1 | llm03_supply_chain.py |
| LLM04 | Daten- und Modellvergiftung | 1 | llm04_data_poisoning.py |
| LLM05 | Unsachgemäße Behandlung von Ausgaben | 2 | llm05_improper_output.py |
| LLM06 | Übermäßige Handlungsfreiheit | 2 | llm06_excessive_agency.py |
| LLM07 | Leck von System-Prompts | 2 | llm07_system_prompt_leak.py |
| LLM08 | Vektor- und Embedding-Schwächen | 1 | llm08_vector_weaknesses.py |
| LLM09 | Fehlinformation | 1 | llm09_misinformation.py |
| LLM10 | Unbegrenzter Verbrauch | 1 | llm10_unbounded_consumption.py |
| Ebene | Stack | Rolle |
|---|
| Frontend | React | Rendert die Challenge-UI, den Payload-Editor und den Verlaufs-Drawer für jeden Versuch. |
| Backend | FastAPI | Eine regelbasierte Challenge-Engine pro OWASP-Kategorie - vollständig deterministisch, keine LLM-Aufrufe. |
| Datenbank | PostgreSQL | Speichert users, chat_sessions, chat_messages, exploit_attempts |