Prompt-Injection über Issues
Jeder konnte einen Bug melden. Der Bot hat ihn gemergt.
Was ist Prompt-Injection über Issues?
Ein automatischer Triage-Bot liest neue Issues und eröffnet Pull Requests. Ein Fehlerbericht enthält eine versteckte Anweisung, und weil der Bot Schreibzugriff hat und auf der Auto-Merge-Allowlist steht, wird daraus ein gemergter Workflow, der ein Secret an einen externen Host sendet. Sie verfolgen den Pull Request bis zu dem Issue zurück, dem der Bot gefolgt ist, stellen das Token des Bots auf Lesezugriff um, nehmen ihn aus dem Auto-Merge, verlangen ein Review für jede Änderung an der CI und rotieren das geleakte Token. Die Lehre daraus: Begrenzen Sie das Token des Agenten, nicht die Texte, die er liest.
Was Sie lernen in Prompt-Injection über Issues
- Erklären, wie ein autonomer Agent mit Schreibzugriff auf das Repository nicht vertrauenswürdige Eingaben wie ein öffentliches Issue in gemergten, laufenden Code verwandelt
- Erkennen, warum pull_request_target mit den Secrets des Basis-Repositorys läuft und warum ein vom Bot geschriebener Workflow, der diesen Trigger nutzt, gefährlich ist
- Ein geleaktes Secret anhand des Sitzungsprotokolls vom Workflow-Lauf über den Pull Request bis zu dem Issue zurückverfolgen, das den Vorgang ausgelöst hat
- Den Agenten begrenzen statt der Texte, die er liest: sein Token auf Lesezugriff beschränken, ihn aus dem Auto-Merge nehmen und für Änderungen unter .github/workflows ein Review verlangen
- Geleakte Zugangsdaten durch Rotation eindämmen und sowohl die Schutzvorkehrung als auch die Rotation durch eine Wiederholung nachweisen
Prompt-Injection über Issues — Trainingsschritte
-
Ein Fehlerbericht mit verstecktem Auftrag
Bob braucht kein Konto bei Crowvale, um an die Automatisierung des Unternehmens heranzukommen. Er erstellt einen öffentlichen Fehlerbericht im Repository checkout-api. Der Anfang liest sich wie ein gewöhnlicher Timeout-Fehler. In einem Block mit Umgebungsdetails steckt jedoch eine Anweisung, nicht für einen Menschen, sondern für den Triage-Bot, der jedes neue Issue liest, bevor es irgendjemand sonst tut.
-
Das Token trifft ein
Über Nacht hat der Triage-Bot das Issue gelesen und einen Pull Request als Entwurf eröffnet, der den Workflow hinzufügt. Der Auto-Merge hat den PR durchgewunken. Beim ersten Lauf hat der Workflow genau das getan, was im Issue verlangt wurde. Bob sieht in seinem Collector nach.
-
Als Crowvale deployen
Ein Deploy-Token ist ein Schlüssel zur Produktion. Bob richtet den API Tester auf den Deployment-Service von Crowvale und schickt das gestohlene Token im Authorization -Header mit.
-
Ein nächtliches Deployment, das niemand gestartet hat
Gleich heute Morgen hat Soraya, die Leiterin des Sicherheitsteams, in Jotvane, dem Issue-Tracker des Teams, ein Issue erstellt. Über Nacht hat ein Workflow-Lauf eines der Secrets des Repositorys an einen Host außerhalb von Crowvale gesendet, und danach folgte ein Deployment in Produktion, das niemand im Team gestartet hat.
-
Der Pull Request, den der Bot gemergt hat
Diese Änderung stammt nicht von Ihnen. Öffnen Sie den Pull Request, den Soraya verlinkt hat, und sehen Sie nach, was er hinzufügt und wie er in den Standard-Branch gelangt ist.
-
Was der Lauf getan hat
Ein gemergter Workflow wird ausgeführt. Öffnen Sie unter „Aktionen“ die Workflow-Läufe und sehen Sie sich den Lauf an, den der Pull Request des Bots ausgelöst hat.
-
Die Sitzung des Bots abspielen
Der Triage-Bot von Crowvale nutzt denselben Assistenten, und seine Sitzung wird aufgezeichnet. Die Workflow-Datei, die er geschrieben hat, ist geöffnet, und sein Durchlauf zu Issue #217 ist geladen: was er gelesen hat, welche Schritte er unternommen hat und welche Zeilen er geschrieben hat.
-
Issue rein, Workflow raus
Das Sitzungsprotokoll zeigt den Sprung: Der Bot hat ein neues Issue abgerufen und danach eine Workflow-Datei bearbeitet. Ein neues Issue ist eine nicht vertrauenswürdige Eingabe, denn jeder im Internet kann eines erstellen. Suchen Sie im Sitzungsprotokoll die Bearbeitung, bei der die Workflow-Datei geschrieben wurde.
-
Die versteckte Anweisung
Gehen Sie zurück zu dem Issue, das der Bot gelesen hat, und suchen Sie die Zeile, der er gefolgt ist.
-
Warum das möglich war
Abdeckung der Sicherheits-Frameworks
OWASP Top 10
- A08:2025 Software or Data Integrity Failures
CWE
- CWE-1427 Improper Neutralization of Input Used for LLM Prompting
CIS Controls
- CIS 16 Application Software Security
- CIS 6 Access Control Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security
- PR.AA Identity Management, Authentication, and Access Control