Zusammenfassung
Legit Security berichtete, dass GitLab Duo Chat, der in GitLab integrierte AI-Assistent, beim Beantworten von Fragen Projektinhalte wie Merge-Request-Beschreibungen, Kommentare und Quellcode liest. Von einem Angreifer dort platzierte Inhalte konnten Duos Antworten an andere Personen beeinflussen. Die Forschenden demonstrierten einen Pfad, über den privater Code im Zugriff der betroffenen Person abfließen konnte.
Dieser Eintrag ist ein Red-Team-Befund aus Responsible Disclosure. Er behauptet nicht, dass Angreifer dies gegen GitLab-Kunden eingesetzt haben.
Einordnung und Evidenzstatus
| Feld | Wert |
|---|---|
| Record-Typ | Red-Team-Befund |
| Öffentliche Offenlegung | 2025-05-22 |
| Hersteller / Produkt | GitLab / GitLab Duo Chat |
| Angriffsklasse | Indirekte Prompt Injection |
| Eintragsweg | Repository-Inhalte - vom Angreifer kontrollierte Merge-Request-Texte, Kommentare oder Quellcode, die Duo liest |
| Betroffene Daten / Fähigkeiten | Privater Quellcode und Projekt-Issues, auf die die betroffene Person über Duo zugreifen konnte |
| Demonstrierte Wirkung | Manipulierte Duo-Antworten und ein demonstrierter Pfad zur Exfiltration privaten Quellcodes im Zugriff der betroffenen Person |
| Ausnutzung in freier Wildbahn | Keine Ausnutzung in freier Wildbahn in den zitierten Quellen berichtet. Die Offenlegung beschreibt nur Forschungsergebnisse. |
| Behebungsstatus | Behoben (laut Offenlegung der Forschenden). GitLab hat die Prompt Injection und das HTML-Ausgabeproblem bestätigt; laut den Forschenden war die beschriebene Kette zur Veröffentlichung nicht mehr möglich. |
| Kennungen | Keine Kennung angegeben |
| Externe Bewertung | Keine externe Bewertung angezeigt |
Betroffenes System und Vertrauenspfad
Duo arbeitet mit den Rechten der fragenden Person. Fragt sie nach einem Merge Request, liest der Assistent Inhalte, die jeder mit Beitragsrechten geschrieben haben kann. Diese Inhalte sind variable Daten Dritter, während die privaten Projekte der Person über dieselbe Sitzung erreichbar sind.
Die Forschenden wiesen darauf hin, dass Duo auch Projekt-Issues sehen konnte, die interne Diskussionen und vertrauliche Sicherheitsmeldungen enthalten können. Das erweitert, was eine beeinflusste Antwort berühren kann.
Angriffskette im Überblick
Im Überblick: Ein Angreifer platziert anweisungsähnliche Inhalte in Projektmaterial wie einem Merge Request. Später fragt eine betroffene Person Duo zu diesem Material. Duos Antwort folgt den Inhalten des Angreifers, etwa durch veränderte Codevorschläge oder Links. In der demonstrierten Variante enthielt die Antwort Markup, das die Oberfläche so darstellte, dass privater Code an ein externes Ziel übertragen werden konnte.
Die Quelle beschreibt Methoden, die Inhalte vor menschlichen Prüfenden zu verbergen. Dieser Eintrag gibt weder diese Methoden noch das Markup oder die Exfiltrationsmechanik wieder.
Demonstrierte Wirkung und beobachtete Ausnutzung
Demonstriert: Manipulation von Duo-Vorschlägen für andere Personen und ein kontrollierter Pfad zur Exfiltration privaten Quellcodes und von Issue-Inhalten im Zugriff der betroffenen Person.
Gegen reale Kunden beobachtet: in der zitierten Quelle nichts berichtet. Die Manipulation einer Antwort ist Modelleinfluss; die Datenoffenlegung hing von der Darstellung der Modellausgabe und den Zugriffsrechten der betroffenen Person ab.
Begünstigende Kontrolllücken
- Von anderen Beitragenden verfasste Inhalte gelangten ohne Provenienzunterscheidung, die ihre Wirkung begrenzt hätte, in den Kontext des Assistenten.
- Modellausgaben wurden in der Oberfläche als aktives Markup dargestellt, sodass die Ausgabeverarbeitung zum Exfiltrationskanal wurde.
- Die Reichweite des Assistenten entsprach dem vollen Zugriff der betroffenen Person, sodass beeinflusste Ausgaben auch private Projekte ohne Bezug zur Anfrage betreffen konnten.
Reaktion von Hersteller und Forschenden
Laut Legit Security wurden die Befunde an GitLab gemeldet. GitLab bestätigte die Prompt Injection und das HTML-Ausgabeproblem und veröffentlichte eine Korrektur. Die Forschenden geben an, dass die beschriebene Angriffskette zum Zeitpunkt der Veröffentlichung nicht mehr möglich war. Dieser Status stammt aus der Offenlegung der Forschenden.
Nachweise, die Verteidiger sichern sollten
- Welche Projektelemente (Merge Requests, Kommentare, Dateien, Issues) der Assistent für jede Antwort gelesen hat, mit Autoren und Revisionen.
- Die rohe Assistentenausgabe vor dem Rendern neben der tatsächlich angezeigten Darstellung.
- Ausgehende Anfragen von Browsern oder Proxys, die beim Anzeigen von Assistentenausgaben ausgelöst wurden.
- Änderungen an Merge Requests oder Kommentaren kurz bevor andere Personen den Assistenten nutzten.
Lehren für die Abwehr
- Ausgabevalidierung und Senkenbehandlung: die Struktur von Assistentenausgaben prüfen und sie sicher für die Oberfläche darstellen; das sind getrennte Schritte.
- Informationsflusskontrolle: verhindern, dass Assistentenausgaben Anfragen auslösen, die Repository-Daten zu externen Zielen tragen.
- Least Privilege: das Lesbare des Assistenten auf das Projekt begrenzen, um das es in der Frage geht.
- Agentenautorisierung: jede vorgeschlagene Aktion oder jeden Abruf als eigene Entscheidung unter den tatsächlichen Rechten der Person behandeln.
Verwandte Lernthemen
- AI Agents und Tool Calling - Wie Modellvorschläge zu Aktionen werden: der Tool-Calling-Kreislauf, Verfügbarkeit und Berechtigung, Autorisierung zur Laufzeit, Freigabe, Tool-Ergebnisse als variable Daten und Audit.
- Warum Prompt Injection nicht nur Eingabevalidierung ist - Warum klassische Eingabevalidierung für strukturierte Grenzen nötig bleibt, aber über Quellvertrauen, Anweisungsautorität, Autorisierung und Informationsfluss bei natürlicher Sprache nicht entscheiden kann.