Eine kritische Schwachstelle im GitHub Copilot Chat mit dem Namen „CamoLeak“ ermöglichte es Angreifern, mithilfe einer ausgeklügelten Prompt-Injection-Technik stillschweigend Quellcode und Geheimnisse aus privaten Repositories zu stehlen. Der Fehler, der einen CVSS-Score von 9,6 aufwies, wurde inzwischen von GitHub behoben.
Wie der CamoLeak-Angriff funktionierte
Die von Sicherheitsforschern entdeckte Angriffsmethode Omer Mayrazbegann damit, bösartige Anweisungen innerhalb einer Pull-Request-Beschreibung mithilfe der Funktion „Unsichtbare Kommentare“ von GitHub zu verbergen. Während dieser Inhalt für Benutzer in der Standardschnittstelle nicht sichtbar ist, erfasst Copilot Chat bei der Generierung von Antworten den gesamten Repository- und Pull-Request-Kontext, einschließlich dieser versteckten Metadaten. Die Sicherheitslücke wurde ausgelöst, als ein legitimer Entwickler mit Zugriff auf private Repositorys Copilot Chat eine Frage zu der kompromittierten Pull-Anfrage stellte. Copilot, das mit den Berechtigungen des anfragenden Benutzers arbeitet, würde dann die versteckte böswillige Aufforderung ausführen. Dadurch konnte der Angreifer den KI-Assistenten anweisen, in den zugänglichen privaten Repositorys des Opfers nach vertraulichen Informationen wie API-Schlüsseln oder Quellcode zu suchen. Um die gestohlenen Daten herauszufiltern, nutzte der Angriff GitHubs eigenen Bild-Proxy-Dienst „Camo“. Normalerweise verhindert die Content Security Policy (CSP) von GitHub, dass Inhalte Daten direkt an externe Domänen weitergeben. Der Camo-Proxy wurde entwickelt, um externe Bildanfragen sicher weiterzuleiten und URLs in eine umzuschreiben camo.githubusercontent.com Adresse mit einer kryptografischen Signatur. Der CamoLeak-Angriff umging diese Schutzmaßnahmen, indem er den Angreifer zunächst ein Wörterbuch mit vorsignierten Camo-URLs erstellen ließ. Jede gültige URL verwies auf ein harmloses, unsichtbares 1×1-Pixel-Bild, das auf dem Server des Angreifers gehostet wurde, wobei jede eindeutige URL ein einzelnes Datenzeichen darstellte (z. B. „A“, „B“, „1“, „;“). Die eingeschleuste Eingabeaufforderung wies Copilot dann an, seine Antwort zu konstruieren, indem er auf diese vorsignierten Bild-URLs in einer bestimmten Reihenfolge verwies, die den gestohlenen Repository-Inhalt kodierte. Als der Browser des Opfers die Ausgabe von Copilot renderte, stellte er über den vertrauenswürdigen Camo-Proxy eine Reihe von Anfragen, um jedes unsichtbare Pixel abzurufen. Die Abfolge dieser Anfragen, wie sie vom Server des Angreifers empfangen wurden, rekonstruierte die gestohlenen Daten effektiv Zeichen für Zeichen, ohne dass dem Benutzer schädliche Inhalte angezeigt wurden oder Standard-Netzwerksicherheitswarnungen ausgelöst wurden.





