In der sich Landschaft der Large Language Models (LLMs) und des maschinellen Lernens (ML) verschieben neuartige Frameworks und Anwendungen ständig die Grenzen der technologischen Innovation. Im Rahmen der Erforschung dieser Technologien hat das Team von JFrog Security eine Schwachstelle in der Vanna.AI-Bibliothek aufgedeckt.
Diese Bibliothek, die eine Text-zu-SQL-Schnittstelle ermöglicht, wurde als anfällig für eine Schwachstelle bei der Remote-Code-Ausführung durch Prompt-Injection-Techniken identifiziert, die als CVE-2024-5565 bezeichnet wird. Dieser Fall ist ein mahnendes Beispiel für die wachsende Bedrohung durch „Prompt Injection”-Angriffe auf LLMs und zeigt die Möglichkeit auf, „Pre-Prompting”-Schutzmaßnahmen, die zum Schutz dieser Systeme entwickelt wurden, zu umgehen. Die Schwachstelle wurde außerdem auch von Tong Liu auf der Bug Bounty-Plattform Huntrentdeckt und als CVE-2024-5826 veröffentlicht, nachdem die von JFrog gemeldete CVE bereits veröffentlicht worden war.
Pre-Prompting und Prompt-Injection- Details von JFrog
LLM-Modelle sind zwar leistungsfähig und robust, erben aber eine Vielzahl von Verzerrungen und unerwünschten Inhalten aus den unstrukturierten Datensätzen, auf denen sie trainiert werden, wie zum Beispiel Online-Foren und Nachrichtenartikel. Um diese Risiken zu mindern, implementieren die Entwickler Pre-Prompting-Anweisungen – hart kodierte Direktiven, die den Benutzereingaben einen Kontext geben. Das Design von LLMs, bei denen „alles eine Eingabe ist”, macht diese Pre-Prompting-Anweisungen jedoch anfällig für Manipulationen durch Prompt-Injection-Angriffe. Bei diesen Attacken wird die Unfähigkeit von LLM-Modellen ausgenutzt, zwischen Benutzereingaben und vordefinierten Aufforderungen zu unterscheiden, wodurch der Kontext und das Verhalten des Modells effektiv verändert werden können.
Arten von Prompt Injection
Schwachstellen durch Prompt-Injection können als direkt oder indirekt kategorisiert werden. Direkte Prompt-Injektionen treten auf, wenn Benutzereingaben den Prompt direkt beeinflussen, während indirekte Injektionen Benutzereingaben beinhalten, die den Prompt über eine externe Quelle beeinflussen. Die Auswirkungen dieser Schwachstellen sind je nach Integrationsgrad des LLM sehr unterschiedlich. Isolierte Prompt-Injektionen, bei denen das LLM nicht mit aktivierbaren Systemen verbunden ist, stellen ein minimales Risiko dar. Integrierte Prompt-Injektionen, bei denen der LLM mit der Befehlsausführung oder Entscheidungsprozessen verbunden ist, können jedoch zu ernsthaften Sicherheitsproblemen führen.
Technischer Hintergrund von CVE-2024-5565
Vanna.AI, eine Python-Bibliothek, vereinfacht die Generierung von SQL-Abfragen aus natürlichen Sprachbefehlen mittels LLMs und nutzt Retrieval-Augmented Generation (RAG) für höhere Genauigkeit. Sie unterstützt Jupyter-Notebooks, Streamlit-Apps, Flask-Server und Slack-Bots. Die Forscher von JFrog konnten aufzeigen, dass Vanna.AI’s SQL-Visualisierungsfunktion durch die Plotly-Bibliothek anfällig für Prompt-Injection-Angriffe war. Die dynamische Generierung und Auswertung von Plotly-Code über LLM-Prompts ermöglichte eine Remotecodeausführung (RCE), indem vordefinierte Einschränkungen mit manipulierten Prompts umgangen wurden.
CVE-2024-5565 ist eine Sicherheitslücke, die durch die exec-Methode beliebigen Code über Benutzer-Eingaben in der standardmäßig aktivierten Visualisierungsfunktion von Vanna.AI ermöglicht. Die Parameter “question” und “sql” dienen als primäre Angriffspunkte. Durch eine bösartige SQL-Abfrage kann ein Angreifer schädlichen Code in den dynamisch generierten Plotly-Code einschleusen, der dann von der exec-Methode ausgeführt wird, was zu Remote-Code-Ausführung (RCE) führt.
Nach der Entdeckung durch die Sicherheitsforscher haben die Entwickler von Vanna.AI umgehend einen Leitfaden zur Absicherung veröffentlicht, der Nutzern hilft, ähnliche Angriffsversuche zu verhindern.
Risiken und Schutz bei der Integration von LLM-Modellen
Die Integration von LLM-Modulen verbessert die Benutzerfreundlichkeit und Funktionalität von Anwendungen erheblich, birgt jedoch erhebliche Risiken. Ein Beispiel dafür ist die Prompt-Injection-Schwachstelle in Vanna.AI. LLMs haben Schwierigkeiten, Benutzereingaben von vordefinierten Richtlinien zu unterscheiden, was sie anfällig für Manipulationen macht. Daher sind umfassendere Sicherheitsmaßnahmen erforderlich, wie Prompt-Injection-Tracing-Modelle, Output-Integritätsprüfungen und Sandbox-Umgebungen.
Die Erkenntnisse von JFrog betonen die Notwendigkeit ständiger Wachsamkeit und Innovation bei der Sicherung von LLM-Anwendungen. Werkzeuge wie das Static Application Security Testing (SAST) Tool helfen, Prompt-Injection-Schwachstellen zu erkennen und detaillierte Einblicke in Schwachstellen und Datenfluss zu bekommen, um Anwendungen gegen Bedrohungen zu schützen.
Die vollständige Untersuchung von JFrog Security finden Sie hier.