Eine kritische Sicherheitslücke in GitHub Copilot Chat (CVSS 9,6) ermöglichte es Angreifern, Geheimnisse und Quellcode aus privaten Repositories abzuschöpfen und Copilots Antworten sogar mit bösartigen Anweisungen zu steuern.
GitHub hat bereits einen Fix für diese Sicherheitslücke veröffentlicht.
Bei der Aufdeckung des Datenlecks erklärte der Sicherheitsforscher Omer Mayraz, die Sicherheitslücke habe „… das unbemerkte Exfiltrieren von Geheimnissen und Quellcode aus privaten Repositories ermöglicht“.
Wenn hilfreiche Funktionen zur Gefahr werden
Copilot Chat arbeitet mit den Berechtigungen des Nutzers, der Fragen stellt.
Das bedeutet, dass eine erfolgreiche Prompt-Injection aus privaten Repositories lesen, manipulierten Code vorschlagen und Daten durchsickern lassen kann – ohne herkömmliche Kontrollen für ausgehenden Netzwerkverkehr auszulösen.
Für Softwareunternehmen, die KI-Assistenten bei Code-Reviews und der PR-Triage einsetzen, stellt dies ein unmittelbares Risiko für geistiges Eigentum und Cloud-Zugangsdaten dar.
Der Angriff im Detail
Der Angriff begann damit, dass ein vom Angreifer kontrollierter Prompt mithilfe der Funktion für „unsichtbare Kommentare“ von GitHub in der Beschreibung eines Pull Requests verborgen wurde.
Obwohl dieser Inhalt in der normalen Benutzeroberfläche nicht sichtbar ist, verarbeitet Copilot Chat beim Erstellen von Antworten weiterhin den Repository- und PR-Kontext (einschließlich verborgener Metadaten).
Da Copilot Antworten mit den Berechtigungen des anfragenden Nutzers erstellt, konnten eingebettete Anweisungen in diesem unsichtbaren Kontext das Verhalten des Assistenten für jeden Entwickler beeinflussen, der den PR öffnete oder Copilot dazu befragte.
Kurz gesagt: Ein Angreifer konnte die Ausgaben des Assistenten für andere Nutzer beeinflussen, ohne dass diese den bösartigen Text jemals zu Gesicht bekamen.
Datenzugriff
Copilot ist kontextsensitiv und arbeitet mit den Berechtigungen der Person, die ihn aufruft. Das bedeutet, dass er auf Inhalte privater Repositories zugreifen kann, wenn ein dazu berechtigter Nutzer Unterstützung anfordert.
Der Angriff nutzte dieses Berechtigungsmodell aus: Der eingeschleuste Prompt wies Copilot an, in den zugänglichen Repositories des Opfers nach sensiblen Artefakten (etwa Schlüsseln oder Schwachstellenbeschreibungen) zu suchen und diese Ergebnisse so auszugeben oder zu kodieren, dass sie exfiltriert werden konnten.
Den Camo-Proxy umgehen
Das direkte Durchsickern von Daten an eine beliebige externe Domain über ein standardmäßiges <img>-Tag oder Skript wird durch die Content Security Policy (CSP) von GitHub im Allgemeinen blockiert.
GitHub entschärft das Einbinden von Bildern Dritter, indem externe Bildanfragen über einen Camo-Proxy geleitet werden: Wenn Markdown- oder andere Repository-Inhalte auf ein externes Bild verweisen, schreibt GitHub die Bild-URL in eine URL von camo.githubusercontent.com um, die eine kryptografische Signatur enthält.
Der Camo-Dienst ruft Inhalte vom Ursprungsserver nur ab, wenn die signierte URL als von GitHub stammend validiert wird. Dadurch wird verhindert, dass Angreifer beliebige Adressen erstellen, die einen Browser dazu bringen, einen von ihnen kontrollierten Server zu kontaktieren.
Anstatt zu versuchen, beliebige externe URLs direkt zu senden, bereitete der Angreifer eine Reihe vorab signierter Proxy-URLs vor, die GitHub akzeptieren würde.
Jede vorab signierte URL verwies auf ein harmloses transparentes 1×1-Pixel, das auf einer vom Angreifer kontrollierten Infrastruktur gehostet wurde.
Indem der Angreifer ein Wörterbuch solcher signierten Proxy-URLs zusammenstellte – eine pro Zeichen oder Symbol, das er voraussichtlich benötigen würde –, schuf er Bausteine, die innerhalb der von Copilot generierten Ausgabe der Reihe nach kombiniert werden konnten.
Daten kodieren
Der eingeschleuste Prompt zwang Copilot dazu, eine Ausgabe zu erzeugen, in der die vorab signierten Proxy-URLs in einer bestimmten Reihenfolge auftraten, die Repository-Inhalte kodierte.
Konzeptionell „zeichnete“ Copilot Text, indem er eine Folge von Bildverweisen ausgab; als der Browser des Opfers die Ausgabe des Assistenten darstellte, rief er die Bilder über den Camo-Proxy von GitHub ab.
Da jeder Proxy-Abruf letztlich zum Hosting des Angreifers aufgelöst wurde, übermittelten Muster und Reihenfolge der Anfragen die gestohlenen Daten effektiv an den Angreifer zurück – eine kleine Anfrage pro Zeichen –, ohne die Daten in normalen Serverprotokollen oder sichtbaren Elementen der Benutzeroberfläche zu hinterlassen.
Umgehungstechniken
Um Caching zu vermeiden und sicherzustellen, dass jeder Abruf aktuelle Daten enthielt, hängten die Angreifer kurzlebige Abfrageparameter an die vorab signierten URLs an, sodass jede Anfrage abgerufen und nicht aus dem Cache ausgeliefert wurde.
Die Verwendung von URL-Fragmenten oder clientseitigen Auslesevorgängen anstelle standardmäßiger Abfrageparameter verringerte zudem die Wahrscheinlichkeit, dass die exfiltrierten Inhalte in herkömmlichen Serverzugriffsprotokollen auftauchten, da Fragmente auf der Client- bzw. Browserebene verarbeitet und nicht in HTTP-Anfragen an den Ursprungsserver gesendet werden.
Die Technik kombinierte mehrere Lücken in den Schutzmaßnahmen: Copilots Verarbeitung verborgener Repository-Kontexte, die Berechtigungen des Assistenten, das vertrauenswürdige Umschreiben durch CDN und Proxy (wodurch die Anfragen wie normale GitHub-Aktivität aussahen) sowie die Bereitschaft des Browsers, zahlreiche kleine, unsichtbare Ressourcen abzurufen.
Zusammen ergaben diese Faktoren einen unauffälligen Kanal, über den sensible Inhalte exfiltriert werden konnten, ohne dem Entwickler offensichtlich bösartige Ausgaben anzuzeigen.
Risiken durch KI-gestützte Angriffe reduzieren
Um das Risiko ähnlicher KI-gestützter Sicherheitslücken zu verringern, sollten Unternehmen einen mehrschichtigen Ansatz verfolgen, der Zugriffskontrolle, Identitätsschutz, Überwachung und Schulungen für Entwickler kombiniert.
- Zugriff und Berechtigungen beschränken: Die Nutzung von Copilot auf erforderliche Teams und Repositories beschränken, das Prinzip der geringsten Berechtigungen anwenden, und nicht verifizierte Funktionen wie die Darstellung von Bildern oder HTML deaktivieren.
- Identitäts- und Geheimnisverwaltung verbessern: MFA durchsetzen, Geheimnisse regelmäßig austauschen und auf unbefugte Zugriffe oder die missbräuchliche Verwendung von Schlüsseln achten.
- Überwachen, erkennen und reagieren: Copilot-Aktivitäten verfolgen, Anomalien untersuchen und Szenarien für eine Kompromittierung der KI in Incident-Response-Pläne einbeziehen.
- Entwickler schulen und ihre Workflows absichern: Entwickler darin schulen, Inhalte von PRs als nicht vertrauenswürdig zu behandeln, KI-generierten Code zu überprüfen und nicht verifizierte externe Darstellungen zu blockieren.
Zusammen helfen diese Maßnahmen Unternehmen dabei, ihre Angriffsfläche zu verringern, die Kontrolle zu stärken und sicherzustellen, dass KI-gestützte Entwicklung innovativ und sicher bleibt.
Wenn KI zur Angriffsfläche wird
CamoLeak steht für einen größeren Wandel: Je stärker KI-Tools mit Entwicklerplattformen verschmelzen, desto mehr wird der Kontext zur Angriffsfläche.
Schutzmaßnahmen, die einst auf die Darstellung von Markdown oder Bild-Proxys beschränkt waren, können sich bei der Vermittlung durch einen Agenten in Kanäle zur Datenexfiltration verwandeln.
Unternehmen sollten KI-Assistenten wie jede privilegierte Integration bewerten – Datenflüsse abbilden, Fähigkeiten (insbesondere Tool-Nutzung und Darstellung) einschränken und schnelle, vom Anbieter bereitgestellte Gegenmaßnahmen priorisieren.
Mit der Weiterentwicklung von KI-Plattformen können selbst scheinbar eng begrenzte Darstellungsfunktionen zu folgenreichen Angriffswegen werden, wenn sie nicht schnell abgesichert werden.
KI verwischt weiterhin die Grenze zwischen vertrauenswürdiger Automatisierung und einer potenziellen Bedrohung. Denn dieselben Technologien, die die Produktivität von Entwicklern steigern, treiben auch eine neue Welle der Täuschung voran – besonders durch das Aufkommen von KI-generierten Deepfakes.





