Connect with us

Ein Prompt-Injection-Angriff, den man nicht verhindern kann: Wunschdenken oder echte Sorge?

Vordenker

Ein Prompt-Injection-Angriff, den man nicht verhindern kann: Wunschdenken oder echte Sorge?

mm
A digital 3D render of a dark server room with a computer monitor displaying a

In diesem Artikel möchte ich den Leser in ein Gedankenexperiment einbeziehen. Ich werde argumentieren, dass in der nicht allzu fernen Zukunft ein bestimmter Typ von Prompt-Injection-Angriff effektiv unverhindertbar sein wird. Mein Argument wird spekulativer als konkreter Natur sein, also versuche ich nicht, Sie von etwas zu überzeugen. Stattdessen lade ich Sie ein, diese Gedanken zu erforschen. Bevor ich beginne, wie es jeder überzeugende Schriftsteller tun würde, möchte ich über Schach und Schach-Engines sprechen.

Überschachliche Schach-Engines und eine Behauptung über menschliche Erfahrung

Eine der schöneren Aspekte von Schach, die in anderen Disziplinen fehlt, ist die Fähigkeit, die Qualität oder Stärke eines Spielers objektiv zu messen. Das ELO-Rating-System, das für diesen Zweck verwendet wird, hat seine Fehler, aber es bietet eine sehr gute grobe Schätzung, die über die Zeit hinweg gültig ist. Ein Rating von 2700 oder höher wird allgemein als weltklasse (Top 30 der Welt) anerkannt. Der beste Spieler der Welt liegt knapp unter 2850. Kein Mensch hat jemals ein Rating von 2900 erreicht.

In den mittleren 90er Jahren sahen wir den ersten AI-Engine (Deep Blue), der ein weltklasse-Niveau erreichte. Die praktische Implikation dieses Meilensteins war die weite Verbreitung von Engines bei Spielern aller Ebenen für Übung und Analyse. Tatsächlich wurde die Verwendung von Engines für die weltbesten Spieler unerlässlich. Es gab sogar ein spezielles Format namens “Fortgeschrittenes Schach”, in dem Menschen mit einem Engine an ihrer Seite konkurrierten, und die Kombination aus Mensch und Maschine galt als überlegen gegenüber der Maschine allein.

Es dauerte etwa 20 Jahre und einige entscheidende Fortschritte im Deep Learning und Reinforcement Learning, bis Schach-Engines das überschachliche Niveau (ungefähr 3200 ELO) erreichten. Aber sobald diese Sphäre um 2017 durchbrochen wurde, geschah etwas sehr Überraschendes. Tatsächlich geschahen zwei Dinge. Das Erste war völlig erwartet; Engines wurden zur de facto-Quelle von “Ground Truth” in 99% aller Positionen. In der Praxis bedeutete dies, dass wir in die “Ära des blinden Vertrauens” in den Engine eintraten. Heute ist es praktisch unmöglich für einen Menschen, einen signifikant besseren Zug als den Engine vorzuschlagen. So unterhaltsam “Fortgeschrittenes Schach” war, ist es jetzt ein sinnloses Übung; Menschen würden fast nichts zum Spiel beitragen. Aber das Zweite war für die meisten Schachspieler schockierend. Diese überschachlichen neuronalen (d. h. Deep-Neural-Network-) Engines spielten manchmal in einem Stil, der am besten als “romantisch” beschrieben werden kann. Mit anderen Worten, sie machten Züge, deren Wert erst viel, viel später, weit jenseits dessen, was ein Mensch oder ein weltklasse-Engine berechnen konnte, geschätzt werden konnte. Es fühlte sich sehr so an, als ob die Engines eine “Intuition” oder ein “Gefühl” für bestimmte Positionen entwickelt hatten. Abgesehen davon, dass diese Intuition etwas ist, das ein Mensch nie erfassen oder imitieren könnte.

Anders ausgedrückt kann ein überschachlicher neuronaler Engine Züge machen, die jenseits des kognitiven Horizonts eines Menschen liegen. Dies ist der kritische Punkt hier; das Problem ist nicht das der Erklärbarkeit. Vielmehr kann ein Mensch einfach nicht verstehen, warum ein Engine einen Zug empfiehlt, ohne die Position auszuspielen und das Ergebnis viele Züge später zu beobachten, d. h. die gesamte Traektorie möglicher Spielabläufe abzuspielen. Als Ergebnis haben wir eine unüberwindliche Lücke in der Fähigkeit. Es ist objektiv optimal, die Engine-Ausgabe ohne Überprüfung zu akzeptieren. Ich kann meine Behauptung wie folgt zusammenfassen:

Schach ist ein Beweis dafür, dass überschachliche KI-Systeme in einigen Bereichen effektiv autonom agieren würden. Es wäre optimal, dem KI-System zu ermöglichen, Entscheidungen ohne menschliche Überprüfung zu treffen.

Da meine Behauptung einem als offensichtlich oder unbedeutend erscheinen mag, möchte ich einige Nuancen hervorheben. Angenommen, wir haben ein KI-System, das ein überschachliches Niveau bei einer komplexen, kritischen Aufgabe mit konkreten, unwiderruflichen Konsequenzen zeigt. Es gibt zwei Implikationen meiner Behauptung:

  1. Das System würde ohne menschliche Überprüfung Entscheidungen für die Aufgabe treffen, trotz des inhärenten Risikos
  2. Die Erkenntnisse, die aus der Überwachung eines solchen Systems gewonnen werden, würden eine schädliche Entscheidung nicht verhindern; der Schaden wäre bereits angerichtet

System-Ausgabe-Überprüfung und -Überwachung sind genau die letzten beiden Verteidigungsschichten gegen Prompt-Injection-Angriffe. Daher könnte unser hypothetischer Prompt-Injection-Angriff diese Schichten einfach dadurch umgehen, dass er das entsprechende System angreift.

Dies ist ein sehr realistisches Szenario in meinem Kopf. Ein überschachliches KI-System in einem bestimmten Bereich ist keine allgemeine KI, und die meisten Experten glauben, dass solche Systeme direkt vor uns liegen. Wir mussten auch nicht annehmen, dass die Entscheidungen zeitkritisch sind, sondern nur, dass die Aufgabe komplex genug ist, um menschliche Überprüfung unmöglich zu machen.

Natürlich haben wir bisher nur zwei Verteidigungsschichten umgangen, und zum Glück für uns wurden mehrere andere entwickelt. Um den Rest anzugehen, lassen Sie uns in die Kernaspekte eintauchen, die Prompt-Injection-Angriffe schwer zu verteidigen machen.

Was ist Prompt-Injection?

Prompt-Injection ist eine Manipulation eines Large Language Model (LLM) durch speziell gestaltete Eingaben, die das LLM dazu veranlassen, die Absichten des Angreifers unbewusst auszuführen. Es kann als soziale Ingenieurskunst für KI betrachtet werden. Wesentlich ist, dass es kein konventioneller Software-Fehler ist. Ein Prompt-Injection-Angriff nutzt eine inhärente LLM-Schwachstelle aus. Da LLMs sowohl System- als auch Benutzereingaben als Textsequenzen verarbeiten, können sie nicht von sich aus zwischen legitimen und schädlichen Anweisungen unterscheiden. Die Schwachstelle ist daher effektiv von-Design und nicht von-Zufall.

Prompt-Injection-Techniken

Prompt-Injection wird allgemein als #1-Risiko für LLM-Anwendungen angesehen. Es gibt mehrere Gründe, warum dies der Fall ist. Der offensichtlichste Faktor ist die Vielfalt der Injection-Techniken, die entwickelt wurden. Wenn man sie grob in vier Kategorien unterteilt, gehören die bekanntesten Techniken zu:

  • Syntax-basiert: Verwendung spezieller Zeichen, Emojis oder alternativer Sprache
  • Indirekt: Verwendung externer Quellen (Abrufen von einer Website), Kodierung (Base 64) oder multimodale Referenz (Text in einem Bild)
  • “Lass uns so tun, als ob”: Einführung eines manipulativen Stils durch z. B. Rollenspiele, hypothetische, emotionale Appelle, ethische Rahmung und Format-Wechsel
  • Brachial: Expliziter Versuch, die Anweisungen des Modells durch Brute-Force, Verstärkung oder negative Prompt zu “überwältigen”

Die Vielfalt allein stellt bereits eine Herausforderung für Anwendungs-Entwickler dar, aber diese Angriffe haben sich auch schnell weiterentwickelt. Die linke Seite des Diagramms unten soll den Stand der Technik für Anfang 2023 beschreiben, während die rechte Seite die Natur der heutigen Angriffe widerspiegelt.

Evolution of Attack Vectors

LLM-App-Entwickler müssen auch den üblichen Nutzbarkeit vs. Sicherheit-Kompromiss berücksichtigen. Sie könnten sicherlich jede geeignete Verteidigungsschicht und Entwurfsmuster einführen, aber um welchen Preis? Verteidigungsschichten fügen erhebliche Latenz hinzu und introduzieren False Positives (FPs) – korrekt identifizierte sichere Prompts als schädlich – beides hat einen negativen Einfluss auf die Benutzererfahrung. Als Ergebnis ist ein gewisses Maß an Kompromiss in der Praxis unvermeidlich, und es gibt keine “silberne Kugel”-Lösung.

Allerdings interessiere ich mich in diesem Artikel nicht wirklich für dieses nie endende Katz-und-Maus-Spiel. Vielmehr möchte ich herausfinden, ob ein Angriff in Prinzip unverhindertbar sein kann. Aus der Sicht des Entwicklers/Verteidigers gibt es nur einen Schlüssel-Aspekt:

Trennung von Anweisungen und Daten im Prompt ist fundamental, um das Risiko von Prompt-Injection zu adressieren

Wir können annehmen, dass Kompromisse kein Faktor sind und jede Verteidigungsschicht oder Technik verwendet werden kann. Unter dieser (starken) Annahme ist es möglich, ein Szenario zu konstruieren, in dem die Trennung von Anweisungen und Daten in einem Prompt effektiv unmöglich ist?

Die DNA-Analogie

Sobald das Problem in Bezug auf die Trennung von Anweisungen und Daten formuliert wurde, war mein erster Gedanke, eine biologische Analogie zu verwenden.

Betrachten Sie eine Zelle und einen DNA-Abschnitt (bekannt als Gen). Das Gen enthält Anweisungen zum Aufbau eines Proteins durch Transkription und Translation. Es kodiert auch die Informationen (Daten), die die Struktur und Funktion des Proteins beeinflussen. Als solches gibt das Gen gleichzeitig Anweisungen, was zu bauen ist, und wie es zu bauen ist, oder so dachte ich. Aber das ist einfach falsch, da ein Gen sich nicht selbst interpretiert. Es gibt kein Äquivalent zu Anweisungs-Befolgung in der Biologie auf der Genebene. Das “Wie” ist vollständig externalisiert auf die zelluläre Maschinerie.

Daher kann ich die Analogie zwischen einer Zelle und einem LLM sowie zwischen einem Gen und einem Prompt nicht herstellen und dann eine Injection in das Gen vornehmen, die letztendlich zu einem “beschädigten” Protein führen würde. Es scheint produktiver, bei natürlicher Sprache und Aufgaben zu bleiben, die semantische Interpretation erfordern.

Die Verteidigungsschichten abziehen

Es sollte keine Überraschung sein, dass mehrschichtige Verteidigungsstrategien als effektiver angesehen werden, um Prompt-Injection-Angriffe zu stoppen. Das Bild unten zeigt die häufigsten Verteidigungsschichten in der Reihenfolge und die damit verbundenen Techniken, die in jeder Schicht verwendet werden.

Prompt Injection Defense Layers

Wir haben bereits die letzten beiden Schichten (Ausgabe, Überwachung) oben diskutiert, also konzentrieren wir uns auf die ersten vier.

Wenn man die Eingabeschicht betrachtet, ist es vernünftig anzunehmen, dass die Säuberung oder Validierung des Prompts ziemlich erfolgreich darin wäre, indirekte Angriffe zu erkennen. Wenn jedoch die Injection direkt geliefert wird und, wie oben vorgeschlagen, durch semantische Interpretation, ist es möglich, dass Säuberung irrelevant ist (nichts zu säubern) und Validierung unmöglich ist, da die Berechnung abgeschlossen sein muss, um das Problem zu identifizieren.

Es gibt im Grunde keine Grenzen für die Schutzmechanismen, die man in der Erkennungsschicht konstruieren kann. Tatsächlich könnte man sogar ein dediziertes LLM für Injektionserkennung verwenden. Aber einmal mehr wird es schwierig für einen Klassifizierer oder einen Anomalie-Detektor, einen Prompt als verdächtig zu markieren, wenn das Gift clever in der Semantik versteckt ist.

Die Modell-Schicht kann sehr effektiv sein, wenn der Umfang der Aufgaben eng ist und Feinabstimmung machbar ist. Ein ähnliches Argument könnte für die System-Schicht gemacht werden, wenn die Verwendung von Tools vorhersehbar ist. Allerdings würde es, zumindest intuitiv, weder Alarm schlagen, wenn die Injection den Interpreter durcheinanderbringt.

Haus aus Karten

Meine Absicht, als ich diesen Artikel begann, war, einen “unverhindertbaren” Prompt-Injection-Angriff in groben Zügen zu beschreiben. Vielleicht bin ich einem “nicht-konstruktiven” Ansatz gefolgt, indem ich Löcher in die bestehenden Verteidigungsschichten gestoßen habe. Defensive Techniken entwickeln sich weiterhin schnell, und so tut es auch die Angriffsfläche. Dieses Spiel zeigt keine Anzeichen dafür, dass es bald enden wird. Allerdings glaube ich auch, dass wir nicht mehr lange diejenigen sein werden, die es spielen. Ich würde vermuten, dass der erfolgreiche Prompt-Injection-Angriff in der Zukunft immer noch in natürlicher Sprache erfolgen würde, aber in einer Sprache, die Menschen nicht verstehen können; und ich würde vermuten, dass er von einem System automatisch entdeckt wird, das entweder speziell für diesen Zweck entwickelt wurde oder möglicherweise zufällig nach der Bearbeitung einer damit verbundenen Aufgabe, wie der Suche nach semantischer Mehrdeutigkeit in einem bestimmten Repräsentationsraum.

Eli Vovsha ist ein Data Science Manager bei Fortra. Zusammen mit dem Data Science-Team ist er für die Entwicklung und Wartung aller Machine-Learning-(ML)-Modelle verantwortlich, die von den CEP- und XDR-Produkten verwendet werden, sowie für allgemeine ML-Forschung. Er erhielt seinen Master-Abschluss in angewandter Mathematik am Stevens Institute of Technology, bevor er zum PhD-Kandidaten in Informatik an der Columbia University wurde, wo er auch als Dozent tätig war. Später gründete er ein EdTech-Startup mit dem Ziel, eine künstliche Intelligenz-basierte Lernplattform aufzubauen, und unterrichtete dann Mathematik und Informatik an einer privaten High School in New York City. Bevor er seine Graduate-Abschlüsse verfolgte, widmete sich Eli intensiv dem Schach und erlangte den Titel eines Internationalen Meisters (IM).