- Ein Sicherheitsteam konnte auf den Produktionsservern von CodeRabbit Remote Code Execution (RCE) sowie den Abfluss von API-Tokens und Geheimnissen erreichen
- Über einen PR unter Nutzung von Rubocop konnten Umgebungsvariablen exfiltriert werden; Zugriff auf PostgreSQL sowie Lese-/Schreibzugriff auf 1 Million Repositories waren möglich
- Durch den Abfluss des privaten Schlüssels der GitHub App waren reale Schäden möglich, darunter das Einschleusen von Schadcode und Änderungen am Quellcode in großem Umfang, auch in öffentlichen und privaten Repositories
- CodeRabbit reagierte innerhalb weniger Stunden nach der Meldung sofort und verstärkte die Sicherheitsmaßnahmen
- Beim Ausführen externer Tools wird die Notwendigkeit betont, Sicherheitsvorfälle durch Sandbox-Isolation, Least Privilege und Netzwerksperren zu verhindern
Einführung
- Im Januar 2025 veröffentlichte das Forschungsteam von Kudelski Security eine schwerwiegende Sicherheitslücke in CodeRabbit
- Bei CodeRabbit, das weithin als Tool zur Automatisierung von PR-Reviews genutzt wird, wurden gravierende Probleme festgestellt: Remote Code Execution (RCE), Abfluss von Umgebungsvariablen und sensiblen Informationen sowie Read/Write-Zugriff auf mehr als 1 Million Repositories
- Dieser Beitrag enthält eine detaillierte Analyse der auf der Black Hat USA vorgestellten offengelegten Schwachstelle und ist als praxisnahes Beispiel für Schwachstellen in codebasierten Review-Tools und angebundenen Systemen besonders relevant
- Die gemeldete Schwachstelle wurde unmittelbar nach der Meldung schnell gepatcht
Überblick über CodeRabbit
- CodeRabbit ist die am häufigsten installierte KI-basierte Code-Review-App im GitHub- und GitLab-Marketplace
- Auf beiden Plattformen wurden 1 Million Repositories und 5 Millionen Pull Requests geprüft
- Jedes Mal, wenn ein Nutzer einen PR erstellt oder aktualisiert, analysiert die KI-Engine den Code und erzeugt automatisch Kommentare und Vorschläge
- Funktionen wie Code-Zusammenfassungen, Erkennung von Sicherheitslücken, Verbesserungsvorschläge und Diagrammerstellung steigern die Produktivität in der Entwicklung deutlich
Nutzung von CodeRabbit und Berechtigungsstruktur
- Der Pro-Plan bietet die Integration von Linter- und SAST-Tools (statische Analyse)
- Bei der Authentifizierung des GitHub-Kontos und der Installation der App werden Lese-/Schreibrechte für ausgewählte Repositories erteilt
- Wenn dieses Berechtigungsmodell missbraucht wird, kann es den Code in allen installierten Repositories direkt beeinflussen
Ausführung externer Tools und Entdeckung des Exploits
- Erkennt CodeRabbit Code-Änderungen in einem PR, führt es automatisch mehrere externe Tools zur statischen Analyse (z. B. Rubocop) aus
- Rubocop ist so konzipiert, dass über die Konfigurationsdatei
.rubocop.yml externe Ruby-Erweiterungsdateien (ext.rb usw.) geladen werden können
- Ein Angreifer kann Schadcode in
.rubocop.yml und ext.rb einfügen und dann einen PR einreichen, um CodeRabbit dazu zu bringen, diesen Code auf dem Remote-Server auszuführen
- Der so ausgeführte Code übertrug sämtliche Umgebungsvariablen des Servers an den Server des Angreifers
Analyse der exfiltrierten Umgebungsvariablen
- Die exfiltrierten Umgebungsvariablen enthielten API-Keys, Tokens und Passwörter verschiedener Dienste, darunter
- API-Keys von Anthropic/OpenAI, Encryption salt/password, privater Schlüssel der GitHub App, PostgreSQL-Zugangsdaten usw.
- Durch RCE waren umfangreiche Folgeauswirkungen mit hoher Tragweite möglich, etwa Datenbankzugriff, Code-Änderungen und der Abfluss interner Service-Informationen
- Auf dem produktiven Server hätte eine weitergehende bösartige Exploration stattfinden können, wurde jedoch mit Rücksicht auf den Betrieb nach einer Minimalverifikation abgebrochen
Erlangung von Read/Write-Zugriff auf 1 Million Repositories
- Mit der in den Umgebungsvariablen enthaltenen
GITHUB_APP_PEM_FILE (privater Schlüssel) war eine Authentifizierung gegenüber der GitHub API möglich
- Für alle Repositories, auf die CodeRabbit zugreifen konnte, einschließlich öffentlicher und privater,
- konnten äußerst weitreichende Rechte ausgeübt werden, etwa Quellcode lesen/schreiben, Release-Dateien ersetzen (Supply-Chain-Angriff) und die Git-Historie verändern
- Der veröffentlichte Reproduktionscode (PoC) belegte, dass eine tatsächliche Ausnutzung möglich war
Zusammenfassung des PoC
- Mithilfe von Bibliotheken wie PyGitHub konnten mit dem exfiltrierten privaten Schlüssel, der App-ID usw. beliebige Repository-Access-Tokens ausgestellt werden
- Mit diesen Tokens konnten das Klonen privater Repositories, Dateiänderungen, neue Commits und die Manipulation von Release-Dateien automatisiert werden
Möglichkeit der Kompromittierung interner/nicht öffentlicher Repositories von CodeRabbit
- Da auch die CodeRabbit-Organisation die App im eigenen Service installiert und genutzt hatte, war der Zugriff auf und das Klonen der internen Quellcode-Repositories von CodeRabbit ebenfalls möglich
- Wenn nur der Name der Organisation bekannt war, konnte nach Abfrage der Installations-ID direkt auf die entsprechende Repository-Liste zugegriffen werden
Zusammenfassung der Auswirkungen
- Unbefugter Zugriff auf private Repositories und Abfluss personenbezogener Daten
- Bedrohung durch Supply-Chain-Angriffe wie Manipulation von Quellcode sowie Einschleusen von Schadcode/Backdoors
- Möglichkeit zur Verkettung mit weiteren Schwachstellen, etwa in GitHub Actions
- Direkte RCE mit möglichen Folgen wie Datenzerstörung, Dienstausfällen und Kaskadenschäden in anderen Services
Kontext und Grenzen der KI-Bewertung
- Auch während des Angriffs wurde der PR von CodeRabbit selbst normal geprüft; zwar wurde ein Warnkommentar zur Schwachstelle hinterlassen, die tatsächlich bedrohliche Syntax wurde jedoch nicht erkannt
- Das zeigt, dass ein „KI-Code-Review-Tool“ den Kontext realer Gefahrensituationen nicht unbedingt erfassen kann
Reaktion und Empfehlungen
- CodeRabbit deaktivierte Rubocop innerhalb weniger Stunden nach der Meldung, tauschte Geheimnisse aus und führte ein System-Audit durch
- Das Problem trat bei einem Tool ohne Sandbox-Anwendung (Rubocop) auf; nach den Maßnahmen wurde dies verbessert, sodass alle externen Tools in isolierten Umgebungen ausgeführt werden
- Zur Stärkung der Sicherheit wird die Notwendigkeit defensiver Architektur betont, etwa durch Minimierung von Umgebungsvariablen im Ausführungskontext externer Tools, Einschränkung zulässiger Netzwerk-IP-Adressen und Sperrung des Internetzugangs
Verantwortungsvolle Offenlegung und Fazit
- Im Januar 2025 erfolgten nach der Meldung eine schnelle Reaktion und Gegenmaßnahmen
- Es blieb beim PoC, doch es wurde bestätigt, dass ein bösartiger Angreifer dies leicht für die Auswahl hochwertiger Repositories, groß angelegte Ransomware oder destruktive Supply-Chain-Angriffe hätte missbrauchen können
- Erneut bestätigt wurde die Bedeutung der Umsetzung von Sandboxing und dem Least-Privilege-Prinzip bei der Anbindung externer Analysetools und KI-basierter Automatisierungsdienste
Noch keine Kommentare.