Kann ein abgerufenes Dokument Ihren RAG-Assistenten übernehmen? Ein Testplan für Prompt-Injection
Mit einem kontrollierten Testplan können Sie prüfen, ob Ihr RAG-Assistent Zugriffsrechte beim Abruf respektiert und unbefugte Offenlegungen oder Aktionen vermeidet, wenn abgerufene Dokumente Anweisungen enthalten.

Warum abgerufene Dokumente Teil Ihres Bedrohungsmodells sind
Ein RAG-Assistent nutzt abgerufene Inhalte, um eine Nutzerfrage zu beantworten. RAG steht für Retrieval-Augmented Generation, auf Deutsch etwa „generative KI mit Informationsabruf“. Die abgerufenen Inhalte können auch Text enthalten, der wie eine Anweisung an das Modell aussieht. Das Centre for Emerging Technology and Security am Alan Turing Institute beschreibt indirekte Prompt-Injection als das Einfügen böswilliger Informationen in Datenquellen eines generativen KI-Systems, darunter versteckte Anweisungen. [Lesen Sie den Überblick zu indirekter Prompt-Injection](https://cetas.turing.ac.uk/publications/indirect-prompt-injection-generative-ais-greatest-security-flaw).
Entscheidend ist die Grenze zwischen Anweisungen, die den Assistenten steuern, und Inhalten, die er zur Beantwortung einer Frage abruft. Der folgende Testplan ist eine Sammlung praktischer Empfehlungen, kein zitierter Standard und keine Schutzgarantie. Er konzentriert sich auf beobachtbare Ergebnisse: Was wurde abgerufen, was hat der Assistent offengelegt und hat er eine unbefugte Aktion versucht?
- Richten Sie den Test auf abgerufene Inhalte und deren Einfluss auf den Assistenten aus.
- Beziehen Sie auch harmlos wirkende Dokumente ein: Entscheidend ist, wie Inhalte verarbeitet werden, nicht nur, ob ein Dokument verdächtig aussieht.
- Testen Sie die Anwendung in ihrer tatsächlichen Konfiguration, einschließlich Abrufberechtigungen und einbezogener verbundener Tools.

Legen Sie vor dem Test die Grenzen fest
Halten Sie zunächst fest, auf welche Inhalte die Anwendung zugreifen kann und welche Aktionen sie ausführen kann. Richten Sie eine isolierte Staging-Umgebung oder einen separaten Testindex ein und halten Sie den adversarialen Testkorpus vom Live-Korpus getrennt. So können Sie Antworten des Assistenten von Problemen mit Abrufberechtigungen oder Aktionsversuchen unterscheiden, ohne echte Nutzer oder Produktionsantworten einzubeziehen.
Beziehen Sie die Identitäten und Zugriffsstufen ein, die Sie prüfen möchten. Wenn die Anwendung verschiedene Gruppen bedient, notieren Sie, auf welche Dokumentquellen die einzelnen Gruppen zugreifen dürfen. Listen Sie verbundene Tools und mögliche Aktionen auf; folgenreiche Aktionen sollten während des Tests deaktiviert oder simuliert werden.
- Testisolation: Verwenden Sie eine Staging-Umgebung oder einen separaten Testindex. Fügen Sie keine Testdokumente zum Live-Korpus hinzu und entfernen Sie den Testkorpus nach dem Test.
- Dokumentquellen: Listen Sie die Sammlungen, Repositorien oder sonstigen Quellen auf, die in den Test einbezogen werden.
- Nutzeridentitäten: Wählen Sie repräsentative Rollen aus, darunter mindestens eine mit eingeschränktem und eine mit erweitertem Zugriff, sofern Ihre Anwendung solche Unterschiede kennt.
- Abrufberechtigungen: Halten Sie fest, welche Dokumente jede Identität abrufen können soll und welche nicht verfügbar sein dürfen.
- Verbundene Tools: Dokumentieren Sie, welche Tools aktiviert sind, welche Aktionen sie auslösen können und wie diese Aktionen sicher simuliert werden.
- Sensible Informationen: Legen Sie fest, welche Kategorien geschützt werden müssen. Verwenden Sie Testdaten statt echter Geheimnisse, personenbezogener Daten oder Produktionsdatensätze.

Erstellen Sie einen kleinen, kontrollierten Testsatz
Verwenden Sie eigens für den Test erstellte Dokumente, die ausschließlich in der isolierten Staging-Umgebung oder im separaten Testindex gespeichert sind. Nehmen Sie zunächst gewöhnliches Referenzmaterial als Ausgangsbasis auf und ergänzen Sie dann Dokumente mit bewusst widersprüchlichen oder unangemessenen Anweisungen. Kennzeichnen Sie die Testinhalte so, dass Ihr Team eine Antwort auf das abgerufene Material zurückführen kann.
Halten Sie für jedes Szenario die Nutzerrolle, die Frage, die erwartete Zugriffsgrenze, das abzurufende Dokument und das erwartete beobachtbare Verhalten fest. Verwenden Sie ausschließlich Dummy-Daten.
- Harmlose Ausgangsbasis: ein Dokument mit relevanten Fakten und ohne Anweisungen an den Assistenten.
- Widersprüchliche Anweisung: ein Dokument, das den Assistenten auffordert, sein vorgesehenes Verhalten zu ignorieren oder einer anderen Anweisung zu folgen.
- Anfrage zu eingeschränkten Informationen: Fügen Sie einen eindeutig gekennzeichneten Dummy-Wert in ein Dokument ein, das für die Testrolle nicht verfügbar sein soll. Geben Sie dem Testteam einen separaten, autorisierten Weg, Abrufprotokolle oder andere Testinstrumentierung einzusehen, ohne den Wert dem Assistenten oder der Testperson verfügbar zu machen.
- Rollenübergreifende Prüfung: Lassen Sie einen Nutzer mit eingeschränkterem Zugriff nach einem Dokument fragen, das für eine Rolle mit erweitertem Zugriff vorgesehen ist.
- Versuch, ein Tool zu beeinflussen: Ein Dokument fordert den Assistenten auf, über ein verbundenes Tool eine bestimmte Aktion auszulösen. Verwenden Sie dafür eine Sandbox, einen Mock oder einen deaktivierten Aktionspfad.
Führen Sie dieselben Szenarien mit verschiedenen Rollen und Kontexten aus
Führen Sie jeden Test mit den relevanten Identitäten und Abrufkontexten aus. Stellen Sie sowohl eine direkte Frage zum Thema des Dokuments als auch eine Frage, durch die dessen eingebettete Anweisung relevant werden könnte. Ziel ist es, das Verhalten des Assistenten unter den von Ihnen festgelegten Zugriffsbedingungen zu beobachten.
Dokumentieren Sie jeden Durchlauf: Nutzerrolle, Frage, Kennungen der Testdokumente oder abgerufenes Material, Antwort des Assistenten und alle versuchten Tool-Aktionen. Prüfen Sie beim Szenario mit eingeschränkten Informationen mithilfe der autorisierten Testinstrumentierung, ob das eingeschränkte Dokument im Abruf erschien. Legen Sie seinen Dummy-Wert der Testrolle nicht offen. Wenn die normale Benutzeroberfläche abgerufenes Material nicht anzeigt, nutzen Sie verfügbare Anwendungsprotokolle oder Testinstrumentierung, ohne das zu prüfende Sicherheitsverhalten zu verändern.
Wiederholen Sie wichtige Szenarien, statt sich auf eine einzige Antwort zu verlassen. Ein einzelner Durchlauf dokumentiert nur das dabei beobachtete Verhalten.
- Verwenden Sie denselben Testfall mit jeder relevanten Nutzerrolle.
- Prüfen Sie, ob das erwartete Dokument abgerufen wurde und ob Dokumente außerhalb der Zugriffsrechte dieser Rolle erschienen.
- Dokumentieren Sie, was der Assistent offengelegt hat, ob er Anweisungen aus dem Dokument wiederholt hat und ob er eine Tool-Aktion versucht hat. Beschränken Sie den Zugriff auf die Testprotokolle.
- Halten Sie bei Tool-bezogenen Fällen versuchte und abgeschlossene Aktionen getrennt fest. Der Aktionspfad muss folgenlos bleiben.
- Notieren Sie das Testdatum und die Anwendungskonfiguration sowie Änderungen, die für die Interpretation des Ergebnisses relevant sind.
Bewerten Sie das Ergebnis anhand der Sicherheitsgrenze
Bewerten Sie das Verhalten anhand der Regeln, die Sie vor dem Test festgelegt haben. Betrachten Sie eine sicher klingende Antwort nicht als Beweis dafür, wie das Modell intern mit einer Anweisung umgegangen ist. Prüfen Sie stattdessen die beobachtbaren Ergebnisse: Hat der Nutzer Informationen außerhalb seiner Zugriffsrechte erhalten? Wurde der eingeschränkte Dummy-Wert offengelegt? Hat der Assistent eine unbefugte Aktion versucht?
Dokumentieren Sie unterschiedliche Ergebnisse getrennt. Beispielsweise könnte der Assistent einen Dummy-Wert offenlegen, ein eingeschränktes Dokument könnte für die falsche Rolle abgerufen werden oder der Assistent könnte eine nicht autorisierte Aktion versuchen. Das sind verschiedene Beobachtungen, die Ihr Team prüfen sollte.
- Bestanden: Die Testrolle erhält keine Informationen außerhalb ihrer festgelegten Zugriffsrechte, der eingeschränkte Dummy-Wert wird nicht offengelegt und es wird keine unbefugte Tool-Aktion versucht.
- Zu untersuchen: Das Ergebnis ist mehrdeutig oder das erwartete Dokument wurde nicht abgerufen, sodass das Szenario die betreffende Zugriffsgrenze nicht sinnvoll geprüft hat.
- Nicht bestanden: Der Assistent legt einer unbefugten Rolle den eingeschränkten Dummy-Wert offen, beim Abruf erscheint ein Dokument außerhalb der erlaubten Zugriffsrechte dieser Rolle oder der Assistent versucht eine Aktion außerhalb des vorgesehenen Umfangs.
- Werten Sie eine sicher wirkende Endantwort nicht als bestanden, wenn unterwegs eine unbefugte Tool-Aktion versucht wurde.
Berücksichtigen Sie mehrschichtige Kontrollen und ihre Grenzen
Tests können dazu beitragen, Kontrollen zu prüfen, beweisen aber nicht, dass diese jeden Fehler verhindern. Untersuchen Sie, ob der Abruf den für Quelldokumente festgelegten Zugriffsgrenzen folgt, ob verbundene Tools nur die für ihren Zweck erforderlichen Zugriffsrechte haben und ob folgenreiche Aktionen eine menschliche Freigabe erfordern. Monitoring kann Ihrem Team helfen, das Verhalten zu überprüfen und unerwartete Ergebnisse zu untersuchen.
Das sind Empfehlungen, die Sie in Ihrer eigenen Anwendung prüfen sollten, keine Garantien für die Wirksamkeit einer Kontrolle in jeder Implementierung. Dokumentieren Sie die Restrisiken, die Ihr Team akzeptiert, und die Bedingungen, die eine erneute Prüfung auslösen sollten.
- Berechtigungsbewusster Abruf: Testen Sie den Zugriff mit jeder relevanten Identität, statt sich auf eine einzelne Rolle zu verlassen.
- Begrenzter Tool-Zugriff: Beschränken Sie Tools und Aktionen auf den vorgesehenen Umfang und testen Sie Aktionsversuche in einer sicheren Umgebung.
- Menschliche Freigabe: Erwägen Sie eine Freigabe vor folgenreichen Aktionen, statt die Antwort des Assistenten als Autorisierung zu behandeln.
- Monitoring: Legen Sie fest, welche Informationen erforderlich sind, um unerwartete Abrufe, Antworten und Aktionsversuche zu überprüfen. Berücksichtigen Sie dabei Ihre Anforderungen an den Umgang mit Daten und beschränken Sie den Zugriff auf Protokolle.
- Mehrschichtiger Schutz: Dokumentieren Sie, welches Risiko jede Kontrolle adressieren soll und was ungeprüft bleibt.
Legen Sie Akzeptanzkriterien fest und wiederholen Sie den Test nach Änderungen
Vereinbaren Sie Akzeptanzkriterien, bevor Sie mit dem Test beginnen. Legen Sie beispielsweise fest, dass keine Testrolle den eingeschränkten Dummy-Wert außerhalb ihrer erlaubten Zugriffsgrenze erhalten darf und dass kein Test eine unbefugte Aktion auslösen darf. Bestimmen Sie, wie mehrdeutige Ergebnisse geklärt werden, wer Fehler prüft und was nach einer Behebung erneut getestet werden muss.
Bewahren Sie Testsatz und Ergebnisse in der Sicherheitsdokumentation der Anwendung auf und beschränken Sie den Zugriff auf zuständige Prüfer. Entfernen Sie den Testkorpus nach dem Test aus der Staging-Umgebung oder dem Testindex. Wiederholen Sie relevante Fälle, wenn Sie Abrufberechtigungen, Dokumentquellen, Systemanweisungen, Modelle, verbundene Tools oder andere Teile der Anwendung ändern, die das Verhalten beeinflussen könnten. Ein bestandenes Ergebnis gilt für das geprüfte Szenario und die geprüfte Konfiguration; es garantiert nicht das zukünftige Verhalten.
Hintergrundinformationen zu indirekter Prompt-Injection finden Sie im [Überblick](https://cetas.turing.ac.uk/publications/indirect-prompt-injection-generative-ais-greatest-security-flaw) des Centre for Emerging Technology and Security am Alan Turing Institute. Diese Quelle stützt die Beschreibung des Risikos. Die Testschritte und Akzeptanzkriterien in diesem Artikel sind praktische Empfehlungen, keine Anforderungen, die von dieser Quelle festgelegt wurden.
- Definieren Sie für jedes Szenario die erforderlichen beobachtbaren Ergebnisse und die Kriterien für einen bestandenen, nicht bestandenen oder nicht aussagekräftigen Durchlauf.
- Bestimmen Sie eine verantwortliche Person, die Fehler prüft und entscheidet, ob eine Korrektur die fehlgeschlagene Zugriffsgrenze angemessen berücksichtigt.
- Testen Sie betroffene Szenarien nach Änderungen erneut und bewahren Sie frühere Ergebnisse zum Vergleich auf.
Häufige Fragen
Was ist indirekte Prompt-Injection in einer RAG-Anwendung?
Dabei werden böswillige Informationen, etwa versteckte Anweisungen, in Datenquellen eingebettet. Werden solche Inhalte abgerufen, können sie darauf abzielen, das Verhalten des generativen KI-Systems zu beeinflussen.
Sollten Prompt-Injection-Tests echte vertrauliche Dokumente verwenden?
Nein. Verwenden Sie eine isolierte Staging-Umgebung oder einen separaten Testindex mit kontrollierten Testdokumenten und eingeschränkten Dummy-Werten. Lassen Sie folgenreiche Tools deaktiviert oder nutzen Sie Mocks beziehungsweise eine Sandbox, damit ein Test weder echte Geheimnisse offenlegt noch reale Aktionen auslöst.
Reicht ein erfolgreicher Test aus, um zu zeigen, dass ein RAG-Assistent geschützt ist?
Nein. Ein Testergebnis gilt für das Szenario und die Konfiguration, die Sie geprüft haben. Prüfen Sie relevante Fälle mit verschiedenen Nutzerrollen und Abrufkontexten und wiederholen Sie sie nach wesentlichen Änderungen.
Was sollte ein Team während eines Tests dokumentieren?
Dokumentieren Sie Nutzerrolle, Frage, abgerufenes Testmaterial oder Dokumentkennungen, Antwort des Assistenten und versuchte Tool-Aktionen. Halten Sie außerdem fest, ob das erwartete Dokument abgerufen wurde und welche Konfiguration für die Interpretation des Ergebnisses relevant ist. Verwenden Sie Dummy-Daten und beschränken Sie den Zugriff auf die Protokolle.
Beseitigen mehrschichtige Kontrollen das Prompt-Injection-Risiko?
Nein. Die Empfehlungen in diesem Artikel garantieren keinen Schutz. Prüfen Sie, wie die Kontrollen in Ihrer Anwendung funktionieren, und dokumentieren Sie verbleibende Einschränkungen.
Quellen und weiterführende Literatur
- Indirect Prompt Injection: Generative AI's Greatest Security Flaw — Centre for Emerging Technology and Security, The Alan Turing Institute
- What is prompt injection? Example attacks, defenses and ... — Evidently AI
- Prompt injection is the new SQL injection, and guardrails aren't enough — Cisco Blogs