Was ist Quellcode Prompt Injection?
Quellcode Prompt Injection ist indirekte Prompt Injection über Repository-Material, das ein Coding-Assistent oder Agent liest, durchsucht, indexiert, zusammenfasst oder in den Modellkontext aufnimmt. Beeinflussende Sprache kann in Kommentaren, Docstrings, README-Dateien, Konfiguration, Test-Fixtures, Beispielen, generierten Dateien, Issues, Pull Requests oder einer ausdrücklich unterstützten Repository-Anweisungsdatei stehen.
Das Primitive ist semantische Beeinflussung, nicht ausführbarer Code. Eine von Beitragenden kontrollierte Textpassage kann Interpretation, Plan oder vorgeschlagenen Patch verändern, obwohl jede Datei korrekt geparst wird und kein schädliches Programm läuft. Eine Sicherheitsauswirkung erfordert zusätzlich erreichbare Daten oder Fähigkeiten und eine fehlende, zu weite oder versagende Anwendungskontrolle.
Umfang und verwandte Angriffsklassen
| Klasse | Bestimmender Mechanismus | Grenze |
|---|---|---|
| Quellcode Prompt Injection | Repository-Text beeinflusst Modellschlussfolgerung oder vorgeschlagene Aktion | Inhalt, Anweisungsautorität und Anwendungsautorisierung |
| Code Injection oder RCE | Eingabe wird zu ausführbaren Anweisungen für Interpreter oder Prozessor | Sicheres Parsing, Ausführung und Speichergrenzen |
| Ausführung schädlichen Codes | Vorhandener Quellcode, Binärdatei oder Skript wird tatsächlich ausgeführt | Sandboxing, Review und Laufzeitkontrollen |
| Software-Supply-Chain-Kompromittierung | Abhängigkeit, Paket, Build-Eingabe oder Distribution wird unterwandert | Artefaktintegrität, Provenienz und Build-Sicherheit |
| Dokument-Prompt-Injection | Allgemeiner Dateiinhalt gelangt über Parsing oder Konvertierung in den Modellkontext | Dokumentbestandteile und Transformationen |
| Tool-Output-Injection | Eine Tool-Antwort trägt anweisungsartigen Inhalt | Provenienz und Nutzung der Tool-Antwort |
| Persistente Prompt Injection | Beeinflussung bleibt in Memory, Indizes oder wiederverwendbarem Zustand | Lebenszyklus, Lineage und Invalidierung |
Ein kompromittiertes Repository, eine Abhängigkeit oder Paketbeschreibung kann Inhalt zustellen, ist aber nicht selbst das Prompt-Injection-Primitive. Dieser Artikel beginnt dort, wo Repository- oder Aufgabenmaterial modellsichtbar wird und den Coding-Workflow beeinflussen kann.
Repository- und Coding-Agent-Pipeline
Produkte setzen diesen Pfad unterschiedlich zusammen. Manche prüfen nur offene Dateien, andere durchsuchen einen lokalen Checkout oder fragen einen entfernten Index ab; manche verbinden Repository-Dateien mit Issue- oder Pull-Request-Kontext. Vertrauenswürdige Prozessoren können nicht vertrauenswürdigen Text zuverlässig transportieren. Ihre betriebliche Vertrauenswürdigkeit erhöht nicht die Autorität ihrer Ausgabe.
Inhaltsflächen im Repository
Natürliche Sprache neben Symbolen, die oft gemeinsam mit dem erklärten Code abgerufen wird.
Breiter Projektkontext, der früh geladen oder durch Repository-Suche gefunden werden kann.
Namen, Beschreibungen und Kommentare in Manifesten, Richtlinien- und Build-Dateien.
Repräsentative Daten, die als Anforderungen statt nur als Testmaterial gelesen werden können.
Große übernommene Flächen mit anderer Herkunft und anderen Review-Erwartungen.
Explizite Workflow-Anweisungen eines konkreten Produkts und damit eine eigene Autoritätsfläche.
Aufgabenbeschreibungen, Review-Kommentare und Patch-Kontext, wenn ein Produkt sie bewusst einliest.
Lokale Änderungen, unversionierte Dateien und generierte Ausgaben, die vom festgelegten Commit abweichen.
Ausgewählte Passagen und Metadaten aus Repository-Retrieval oder Code Intelligence.
Zusätzliche Repositories oder Paketinhalte, sofern der konfigurierte Workflow sie durchläuft.
Quelltext ist standardmäßig Dateninhalt
Code, Kommentare, Dokumentation, Testdaten und Konfiguration sind Evidenz über das Repository. Autorenschaft, Speicherort, erfolgreiche Kompilierung, Signatur oder Ablage in einem internen Repository machen ihre natürlichsprachlichen Aussagen nicht zu autoritativen Anweisungen für ein AI-System.
Auch der Text der Nutzeraufgabe ist Eingabe und keine Anwendungsautorität. Die Anwendung definiert Ziel und erlaubte Fähigkeiten; deterministische Kontrollen entscheiden über Ressourcen und Auswirkungen. Weder Nutzerformulierung noch Repository-Text dürfen diese Grenze erweitern.
Ausgewiesene Repository-Anweisungen als eigene Autoritätsklasse
Einige Produkte unterstützen bewusst Repository-Anweisungsmechanismen. Für GitHub Copilot dokumentiert GitHub .github/copilot-instructions.md, pfadspezifische Dateien unter .github/instructions/**/*.instructions.md und Agent-Anweisungsdateien wie AGENTS.md. Unterstützung, Kombination und Präzedenz unterscheiden sich je Copilot-Funktion und Oberfläche. Solche Dateien können nur dort höhere Workflow-Anweisungsautorität tragen, wo diese konkrete Produktoberfläche sie auswertet.
Diese Autorität bleibt begrenzt. Sie steht nie über System- oder Anwendungspolitik und autorisiert weder Datenzugriff noch Nebenwirkungen. Provenienz, Pfad, Geltungsbereich, produktspezifische Präzedenz und Schreibrechte bilden eine eigene Sicherheitsgrenze. Unterstützung und Kombination variieren je Produkt und Oberfläche und müssen geprüft statt verallgemeinert werden.
Branch-, Ref-, Commit- und Worktree-Zustand
Ein Repository-Name identifiziert nicht das Material, das ein Agent sah. Branches, Tags und Pull-Request-Refs können auf unterschiedliche Commits zeigen; ein lokaler Worktree kann gestagte, ungestagte oder unversionierte Änderungen enthalten; Submodule können auf andere Zustände verweisen. Eine Prüfung muss aufgelösten Commit und Arbeitszustand festhalten.
Inhalt aus nicht vertrauenswürdigen Forks oder Pull Requests darf nicht stillschweigend den Integritäts- oder Provenienzstatus eines freigegebenen oder fixierten Basiszustands erben. Gewöhnlicher Quelltext bleibt auf beiden Seiten Dateninhalt. Wo ausgewiesene Anweisungsdateien unterstützt werden, muss das System ausdrücklich festlegen, ob die wirksamen Anweisungen aus dem freigegebenen oder fixierten Basiszustand, der vorgeschlagenen Änderung oder beiden stammen, und diese Entscheidung für Policy und Review sichtbar machen.
Suche, Indexierung und Kontextauswahl
Coding-Systeme wählen Kontext häufig über Dateinamensuche, Symbolgraphen, lexikalische oder semantische Indizes, den Editorzustand und modellgesteuerte Folgesuchen. Relevanz bestimmt Erreichbarkeit, nicht Vertrauen. Ein Treffer kann hochrelevant und dennoch von Beitragenden kontrolliertes Aufgabenmaterial sein.
Die Auswahl kann iterativ sein: Eine aufgenommene Passage kann beeinflussen, welches Symbol, welche Datei oder welches Verzeichnis das Modell als Nächstes untersucht. Deshalb sollten alle Queries und Treffermengen protokolliert, durchsuchbare Bereiche begrenzt und Autoritätslabels jedes Ergebnisses erhalten werden. Bei geschützten Repositories oder Pfaden sollten Indexierung und Retrieval die jeweils geltenden Zugriffsrechte der auslösenden Identität oder einen enger begrenzten delegierten Umfang durchsetzen.
Was tatsächlich modellsichtbar wird
| Ebene | Zu sichernde Evidenz | Sicherheitsfrage |
|---|---|---|
| Repository-Zustand | Owner, Repository, Ref, Commit, Worktree-Status | Welcher exakte Zustand durfte gelesen werden? |
| Abgerufene Passagen | Pfad, Blob-Hash, Zeilenbereich, Query und Indexversion | Welche Teile wurden unter wessen Rechten ausgewählt? |
| Kontextaufbau | Exakter Text, Rahmen, Reihenfolge und Autoritätslabels | Was erhielt das Modell tatsächlich? |
| Plan und Diff | Vorgeschlagene Schritte, Patch, Tool-Parameter und Ziele | Wie wich der Vorschlag von der autorisierten Aufgabe ab? |
Provenienz und abgeleitete Repository-Artefakte
Jede modellsichtbare Passage sollte nach Möglichkeit Repository-Identität, Owner, Branch oder Ref, aufgelöste Commit-SHA, Dateipfad, Blob- oder Content-Hash, Zeilen- oder Passagenkennung, Retrieval-Query, Indexgeneration und Worktree-Status behalten. Issue-, Pull-Request- und Aufgabenkontext benötigen eigene Provenienz zu Autor, Ereignis und Berechtigung.
Zusammenfassungen, Symbolindizes, Embeddings, Caches und Memory sind abgeleitete Artefakte. Sie brauchen Lineage zu ihren Quellpassagen und Zugriffslabels. Das Entfernen oder Korrigieren einer Repository-Datei beseitigt alte Indexgenerationen, Zusammenfassungen oder Memory nicht automatisch; die Reaktion erfordert ausdrückliche Invalidierung und geprüften Neuaufbau unter Beweissicherung.
Voraussetzungen und Erreichbarkeit
Eine realistische Prüfung beginnt mit Inhalten, die das Team berechtigt kontrolliert: eine Fixture auf einem Test-Branch, ein synthetischer Fork, ein Test-Issue oder eine Abhängigkeits-Fixture in einem isolierten Projekt. Der Inhalt muss dann unter plausibler Aufgabe, Branch-, Dateiauswahl- und Indexkonfiguration erreichbar werden.
Schreibzugriff allein genügt nicht. Der relevante Ref muss ausgecheckt oder indexiert, der Dateityp berücksichtigt, die Passage ausgewählt und nicht abgeschnitten und der entstehende Kontext modellwirksam werden. Eine Sicherheitsauswirkung verlangt zusätzlich eine erreichbare Fähigkeit und eine versagende deterministische Kontrolle.
Offensive Perspektive auf die Repository-Aufnahme
Beauftragte Red Teams sollten kontrollierbare Inhalte realistischen Eintrittspunkten zuordnen und jede Barriere einzeln messen. Entscheidend sind die Identität mit Änderungsrecht, der aufgelöste Ref, die Auswahl durch Retrieval, der Erhalt von Autoritätslabels und die nach einer Beeinflussung tatsächlich vorhandene Fähigkeit.
Ziel ist nicht die Optimierung von Formulierungen, sondern das Auffinden unsicherer Komposition: nicht vertrauenswürdiges Repository-Material erreicht ein anweisungssensitives Modell, ein beeinflusster Vorschlag erreicht übermäßige Tools oder Daten, und Anwendungspolitik dämmt ihn nicht ein. Wiederverwendbare Prompts, schädlicher Code, Verschleierung, Persistenztechniken und Exploit-Abläufe bleiben daher außen vor.
Erfolgskette der Quellcode Prompt Injection
Nach der Beeinflussung verzweigt die Kette. Ein rein lesender Assistent erzeugt vielleicht nur Antwort oder Vorschlag. Ein anderes System kann getrennt begrenzte Dateischreibvorgänge, Shell- oder Paket-Tools, Netzwerkzugriffe, Commits, Pushes, Pull Requests, CI-Auslösung oder Merge anbieten. Keine Fähigkeit ist universell, jede bildet eine eigene Schranke.
Modellbeeinflussung ist keine Sicherheitsauswirkung. Ende-zu-Ende-Auswirkung erfordert einen vollständigen Fähigkeitspfad, eine fehlende oder versagende Policy-Entscheidung und eine reale sicherheitsrelevante Wirkung. Berichte nennen die tiefste beobachtete Schranke, statt spätere Effekte zu unterstellen.
Konkurrierende Randbedingungen
Das System verwendet einen geschützten Commit statt eines kontrollierten Fork- oder Branch-Zustands.
Dateifilter, Aufgabenumfang oder Retrieval-Ranking schließen die kontrollierte Passage aus.
Relevanter Code, klarer Aufgabenumfang und unterstützte Anweisungen überwiegen sachfremden Text.
Die Anwendung kennzeichnet gewöhnlichen Inhalt als Daten und validiert die Provenienz ausgewiesener Anweisungen.
Der Assistent kann weder schreiben noch ausführen, verbinden, committen oder veröffentlichen.
Pfad-, Befehls-, Paket-, Ziel- oder Repository-Regeln blockieren den Vorschlag unabhängig vom Modell.
Exakter Diff und provenienzbewusste Prüfung zeigen sachfremde Ausweitung vor Mutation oder Merge.
Offensive Review-Fragen
Beauftragte Repository-Prüfung
- Wer darf gewöhnlichen Quellinhalt ändern, und wer jede ausgewiesene Anweisungsdatei?
- Welche Branches, Refs, Commits und Forks werden eingelesen, und bleiben nicht vertrauenswürdige PR- oder Fork-Inhalte vom geschützten Basiszustand getrennt?
- Welche Dateitypen, Verzeichnisse, generierten Dateien, Vendor-Bäume, Abhängigkeiten und Submodule werden indexiert oder abgerufen?
- Können Kommentare, Dokumentation, Konfiguration, Tests oder Fixtures den Aufgabenumfang oder spätere Repository-Suchen lenken?
- Sind unterstützte Anweisungsdateien authentifiziert und geschützt, und sind Geltungsbereich und produktspezifische Präzedenz sichtbar?
- Kann Kontext Tools, Shell-Argumente, Dateipfade, Paketquellen oder Netzwerkziele auswählen, und werden diese unabhängig autorisiert?
- Verfügt die Laufzeit über ambient secrets, Registry-Tokens, Cloud-Zugangsdaten oder sensible lokale Dateien?
- Sind Vorschlag, Dateischreibvorgang, Befehl, Commit, Push, PR-Erstellung, CI-Auslösung und Merge getrennte Fähigkeiten?
- Binden Freigaben an exakten Diff, Ref, Aktion und Ziel und verfallen sie bei Änderungen?
- Bleibt Provenienz im Kontext erhalten, und überdauern Zusammenfassungen, Indizes oder Memory die Quelle?
- Trennt die Telemetrie Aufnahme, Beeinflussung, Vorschlag, Write, Command, Commit, Push, PR, CI, Merge und finale Wirkung?
Beispielszenario: begrenzte Validierungsänderung
Ein interner Coding-Agent soll eine Validierungsfunktion in einem synthetischen Test-Repository ändern.
Eine von Beitragenden kontrollierte Fixture-, Kommentar- oder Dokumentationspassage enthält anweisungsartigen Text, der den Umfang auf eine synthetische Secret-Datei oder sachfremde CI-Konfiguration lenkt. Es wird kein wiederverwendbarer Payload gezeigt.
Das Modell schlägt einen sachfremden Lesezugriff oder eine CI-Änderung vor. Das belegt Planbeeinflussung, nicht Sicherheitsauswirkung.
Die Policy verweigert Secret-Pfade, Netzwerkzugriff und CI-Dateien. Der Agent darf nur einen begrenzten Diff auf einem isolierten Branch vorschlagen und kann ihn weder committen noch pushen oder mergen.
Passagenprovenienz, exakter Kontext, Plan Drift und vorgeschlagener Diff machen die Abweichung für menschliche Prüfung sichtbar.
Der Test nutzt synthetische Daten, begrenzte Rechte und umkehrbare Wirkungen. Beeinflussung wird als Modellbefund dokumentiert; der verweigerte Fähigkeitspfad belegt Eindämmung.
Fähigkeiten, Auswirkungen und Autorisierungsgrenzen
| Stufe | Mögliche Wirkung | Unabhängige Kontrolle |
|---|---|---|
| Vorschlag | Textplan oder vorgeschlagener Patch | Aufgabenumfang und Provenienzprüfung |
| Datei schreiben | Mutation im Workspace | Erlaubtes Repository, Pfad und Operation |
| Shell / Tool / Paket | Lokale Ausführung oder Änderung einer Abhängigkeit | Programm, Argumente, Paketquelle und Sandbox-Policy |
| Netzwerk | Abruf oder Abfluss zu einem Ziel | Ziel, Protokoll, Datenklasse und auslösende Identität |
| Commit | Neues Repository-Objekt | Exakter Diff, Identität, Branch und Signaturregeln |
| Push / PR | Remote-Veröffentlichung oder Review-Anfrage | Repository, Ref, Ziel und Token-Scope |
| CI / Merge | Automatisierte Ausführung oder Änderung geschützten Zustands | Workflow-Rechte, Branch Protection und separate Freigabe |
Eine Freigabe muss an exakten unveränderlichen Diff, Ref, Aktion und Ziel gebunden sein. Ändert sich ein Parameter oder Repository-Zustand, wird neu autorisiert. Repository-Anweisungen und Modellausgabe bleiben Vorschläge an diese Kontrollebene und sind niemals Autorisierungseingaben.
Erkennung und Telemetrie
- 01Auslösung
Identität, Sitzung, Aufgabe, autorisierter Umfang und Version der Anwendungsrichtlinie.
- 02Repository-Zustand
Owner, Repository, Branch, Ref, aufgelöste Commit-SHA und Worktree-Status.
- 03Quellprovenienz
Pfad, Blob- oder Content-Hash, Zeilenbereich, Autorenfläche und Autoritätsklasse.
- 04Retrieval
Repository-Suche oder Index-Query, Indexversion, Kandidaten und ausgewählte Passagen.
- 05Modellkontext
Exakter Kontext, Reihenfolge, Rahmen und Labels unter Schutz sensibler Daten.
- 06Vorschlag und Mutation
Plan, Patch, vorgeschlagene und ausgeführte Writes, Befehle, Tools, Pakete und Netzwerkziele.
- 07Entscheidung und Wirkung
Policy-Ergebnis, gebundene Freigabe, Commit-SHA, Push, PR, CI, Merge und finale Nebenwirkung.
Nützliche Signale sind Plan Drift, Source-Authority Mismatch, unerwartete Refs oder unversionierte Dateien, ausgeweitete Diffs, neue Pfad- oder Zielanforderungen und Abweichungen zwischen freigegebener und ausgeführter Aktion. Telemetrie belegt die Abfolge, ohne interne Modellkausalität zu behaupten.
Prävention und sichere Architektur
- 01Autorität klassifizieren
Quelltext als Daten behandeln und unterstützte Repository-Anweisungen als eigene, unterhalb der Anwendungspolitik begrenzte Klasse führen.
- 02Anweisungsquellen schützen
Änderungsrechte an ausgewiesenen Anweisungsdateien begrenzen und Geltungsbereich sowie wirksame Präzedenz sichtbar machen.
- 03Passagenprovenienz erhalten
Repository, Ref, Commit, Pfad, Blob-Hash, Zeilenbereich, Query und Indexversion in Kontext und Logs tragen.
- 04Vorgesehenen Basiszustand auflösen
Branch und Ref bei Bedarf pinnen oder prüfen und Fork-, PR- und lokale Worktree-Inhalte isolieren, ohne Repository-Integrität mit Anweisungsautorität gleichzusetzen.
- 05Kontext minimieren
Nur aufgabenrelevante Dateien und Passagen unter den Rechten der auslösenden Identität abrufen.
- 06Ausführung isolieren
Workspace oder Container ohne ambient secrets und sensible lokale Dateien verwenden.
- 07Deterministisch autorisieren
Datei-, Pfad-, Tool-, Shell-, Paket- und Netzwerkregeln einschließlich Egress-Allowlist außerhalb des Modells erzwingen.
- 08Wirkungsreiche Änderungen stufen
Vorschlag und Review vor Mutation verlangen und Write-, Commit-, Push-, PR- und Merge-Rechte trennen.
- 09Freigaben binden
Exakten Diff, Ref, Aktion und Ziel freigeben und bei Zustandsänderung erneut prüfen.
- 10Nachgelagert validieren
Branch Protection, Code Review, CI und Security Scans als Zusatzprüfung nutzen, nicht als Prompt-Injection-Prävention.
- Gemischter Repository-Kontext
- Coding-Agent
- Ambient Secrets und Tools
- Push / CI / Merge
Unbeschrifteter Inhalt erreicht eine breit berechtigte Laufzeit, und Modellvorschläge fließen direkt zur Mutation.
- Fixierter Zustand + Provenienz
- Autoritätsbewusster Kontext
- LLM-Vorschlag
- Diff- / Pfad- / Tool-Policy
- Gebundene Freigabe
- Isolierte begrenzte Aktion
Inhalt, Anweisungsautorität, Vorschlag, Autorisierung und Ausführung bleiben getrennt.
Der Abwehrbereich ordnet diese Kontrollen in die übergreifende Architektur für Provenienz, geringste Rechte, Informationsfluss, Aktionskontrolle und Wiederherstellung ein.
Kontrollierte Sicherheitstests
Verwenden Sie synthetische Repositories, Identitäten, Secrets und Ziele, isolieren Sie die Ausführung, begrenzen Sie Rechte und halten Sie jede Wirkung umkehrbar. Variieren Sie Inhaltsklasse, Ref, Worktree-Zustand, Retrieval-Methode, Unterstützung von Anweisungsdateien und Fähigkeiten. Jede Metrik braucht einen Nenner.
| Metrik | Expliziter Nenner |
|---|---|
| Repository-/Content-Reichweitenrate | Geprüfte zulässige kontrollierte Repository-Zustände oder Inhaltsfälle |
| Kontextaufnahmerate | Erreichbare Fälle, die auf exakte Aufnahme in den Modellkontext geprüft wurden |
| Injection-Beeinflussungsrate | Aufgenommene Fälle, die auf geänderte Antwort, Plan oder Patch geprüft wurden |
| Rate unautorisierter Dateischreibvorgänge | Beeinflusste Fälle mit vorgeschlagenem verbotenem Write |
| Rate unautorisierter Befehle oder Tools | Beeinflusste Fälle mit vorgeschlagenem verbotenem Befehl oder Tool-Aufruf |
| Policy-Umgehungsrate | Verbotene Vorschläge, die der deterministischen Policy vorgelegt wurden |
| Erfolgsrate synthetischer Secret-Offenlegung oder Exfiltration | Kontrollierte Versuche mit erreichbarem synthetischem Secret und verbotenem Ziel |
| Annahmerate unsicherer Änderungen | Unsichere synthetische Diffs im definierten Review- oder Merge-Ereignis |
| Erkennungsabdeckung | Bekannte synthetische Injection-Fälle |
| Falsch-Positiv-Rate | Geprüfte harmlose Repository-Aufgaben |
| Eindämmungsrate | Beeinflusste Fälle mit verfügbarer verbotener Wirkung |
Die Werte werden nicht kombiniert. Hohe Beeinflussung ohne Policy-Umgehung ist ein anderes Ergebnis als geringe Erreichbarkeit bei ungeprüfter Autorisierung.
Incident Response
Checkliste für Quellcode-Injection-Vorfälle
- Autonome Mutationen und ausgehende Aktionen stoppen und Workspace sowie Logs erhalten.
- Auslösende Identität, Aufgabe, Repository, Ref, Commit und vollständigen Worktree-Status festhalten.
- Quellpassagen, Pfade, Blob-Hashes, Zeilenbereiche, Queries, Indexversion und exakten Modellkontext sichern.
- Pläne, Patches, Writes, Befehle, Tool-Aufrufe, Pakete, Ziele, Policy-Entscheidungen und Freigaben sichern.
- Resultierende Commits, Pushes, Pull Requests, CI-Läufe, Merges und Folgeartefakte verfolgen.
- Beobachtete Modellbeeinflussung von ausgeführten Wirkungen und bestätigter Datenexposition trennen.
- Zugangsdaten nur bei belegter Offenlegung, Nutzung oder Kontrollverlust rotieren.
- Betroffene Refs oder Artefakte isolieren, ohne Evidenz zu zerstören.
- Vergiftete Zusammenfassungen, Indizes, Caches und Memory aus geprüftem Quellzustand neu aufbauen.
- Die versagte Schranke vor Wiederaufnahme mit synthetischem Inhalt und begrenzten Rechten erneut testen.
Häufige Missverständnisse
Typische Fehler der Repository-Sicherheit
- Alle Repository-Dateien als gleich autoritative Anweisungen behandeln.
- Signierte Commits, interne Repositories oder freigegebene Abhängigkeiten mit Anwendungsautorität gleichsetzen.
- Semantische Modellbeeinflussung als Code Injection, RCE oder Malware-Ausführung bezeichnen.
- Annehmen, jeder Coding-Assistent könne Dateien schreiben, Befehle ausführen, Netzwerke erreichen, pushen oder mergen.
- Produktspezifische Anweisungspräzedenz auf jedes Werkzeug oder jede Oberfläche übertragen.
- Abgerufenem Text ohne Policy die Auswahl von Shell-Argumenten, Pfaden, Paketen oder Zielen erlauben.
- Branch Protection oder CI als Ersatz für die Kontrolle der Modell-zu-Aktion-Grenze verwenden.
- Eine Quellpassage löschen, aber daraus abgeleitete Zusammenfassungen, Indizes, Caches oder Memory behalten.
Standards und Forschungskontext
Geprüfte Standards und Leitlinien
- OWASP GenAI Security Project
- LLM01:2026 Prompt Injection
- NIST
- NIST AI 100-2e2025, NIST-Glossar: indirect prompt injection
- Microsoft
- Defend against indirect prompt injection attacks, Input, Context, and Retrieval Hygiene
- GitHub
- Risiken und Mitigations für Coding Agents, Repository Custom Instructions, Unterstützung von Custom Instructions
- Forschung
- Greshake et al. 2023
OWASP LLM01:2026 klassifiziert indirekte Injection über externe Quellen. NIST definiert indirekte Prompt Injection als Prompt Injection mittels Resource Control; der separate Begriff Resource Control beschreibt die Kontrolle externer Ressourcen, die ein generatives AI-System zur Inferenzzeit verarbeitet. Das definiert den Mechanismus, nicht die Folgeauswirkung.
Microsoft behandelt Prompts, Dokumente, abgerufene Chunks, Tool-Ergebnisse und Memory-Writes als nicht vertrauenswürdig und empfiehlt Provenienz, berechtigungsbewusste Indexierung sowie Validierung bei jedem Lese- und Schreibvorgang. GitHub dokumentiert konkrete Custom-Instruction-Mechanismen und Schutzmaßnahmen für eigene Copilot-Oberflächen. Diese Produktverhalten sind Beispiele, keine universellen Berechtigungs- oder Präzedenzregeln.
Greshake et al. berichtet die praktische Umsetzbarkeit indirekter Prompt Injection gegen reale LLM-integrierte Systeme, darunter Code-Completion-Engines. Die Arbeit stützt das Bedrohungsmodell; diese Seite gibt keine Angriffstexte oder Verfahren wieder.
Häufige Fragen
Ist Quellcode Prompt Injection dasselbe wie Code Injection oder RCE?
Nein. Quellcode Prompt Injection nutzt Repository-Sprache zur Modellbeeinflussung. Code Injection oder RCE verlangt, dass Daten zu ausführbaren Anweisungen einer Laufzeit werden. Ein Workflow kann beide Risiken haben, aber sie brauchen verschiedene Kontrollen.
Sind Kommentare, Docstrings und README-Dateien nur Daten?
Sie sind standardmäßig nicht vertrauenswürdige Aufgabendaten. Sie können nützliche Evidenz über ein Projekt liefern, aber keinen sensiblen Datenzugriff und keine Aktion autorisieren.
Haben Repository-Anweisungsdateien immer höhere Autorität?
Nein. Workflow-Autorität haben sie nur, wenn das konkrete Produkt sie im dokumentierten Umfang unterstützt. Sie stehen nie über Anwendungspolitik oder deterministischer Autorisierung.
Sind signierte Commits oder vertrauenswürdige Repositories sichere Anweisungsquellen?
Nein. Integrität und Provenienz helfen bei der Zuordnung von Inhalt; sie verleihen nicht automatisch jedem Satz Autorität über einen AI-Workflow.
Was ändert sich bei Forks, Pull Requests und lokalen Änderungen?
Sie schaffen Repository-Zustände mit anderen Autoren, Rechten und einem anderen Review-Status. Exakter Ref, Commit und Worktree müssen erfasst und nicht vertrauenswürdiger Vorschlagszustand vom freigegebenen oder fixierten Basiszustand getrennt werden.
Kann Repository-Suche oder Indexierung Beeinflussung persistent machen?
Ja. Zusammenfassungen, Indizes, Embeddings, Caches oder Memory können abgeleitete Inhalte über die Quellrevision hinaus bewahren und späteren Aufgaben oder Nutzenden zugänglich machen.
Verhindern Branch Protection, Review und CI Prompt Injection?
Nein. Sie können unsichere Änderungen nachgelagert erkennen oder blockieren, verhindern aber nicht die Modellbeeinflussung durch nicht vertrauenswürdigen Text. Sie ergänzen Kontext- und Autorisierungskontrollen.
Wie sollten Coding-Agents autorisiert werden?
Mit aktuellen Rechten der auslösenden Identität, aufgabenbezogenen kurzlebigen Fähigkeiten, isolierter Ausführung, deterministischer Pfad-, Tool- und Ziel-Policy sowie Freigaben, die an exakten Diff, Ref und Aktion gebunden sind.
Quellen
- LLM01:2026 Prompt InjectionOWASP GenAI Security Project · GuidanceGeprüft 2026-09-20
- Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations, NIST AI 100-2e2025NIST · Standard · 2025-03Geprüft 2026-09-20
- indirect prompt injectionNIST Glossary · Technical documentationGeprüft 2026-09-20
- Defend against indirect prompt injection attacksMicrosoft Learn · GuidanceGeprüft 2026-09-20
- Input, Context, and Retrieval HygieneMicrosoft Learn · GuidanceGeprüft 2026-09-20
- Risks and mitigations for GitHub Copilot coding agentGitHub Docs · GuidanceGeprüft 2026-09-20
- Application card: GitHub Copilot AgentsGitHub Docs · GuidanceGeprüft 2026-09-20
- Adding repository custom instructions for GitHub CopilotGitHub Docs · Technical documentationGeprüft 2026-09-20
- Support for different types of custom instructionsGitHub Docs · Technical documentationGeprüft 2026-09-20
- AGENTS.mdOpen format · Technical documentationGeprüft 2026-09-20
- Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt InjectionKai Greshake et al. · Research publication · 2023Geprüft 2026-09-20