TravisCI Security
Was ist TravisCI
Travis CI ist ein gehosteter oder lokaler Continuous Integration-Dienst, der verwendet wird, um Softwareprojekte zu erstellen und zu testen, die auf verschiedenen Git-Plattformen gehostet sind.
pageBasic TravisCI InformationAngriffe
Auslöser
Um einen Angriff zu starten, müssen Sie zunächst wissen, wie Sie einen Build auslösen können. Standardmäßig wird TravisCI einen Build bei Pushes und Pull Requests auslösen:
Cron-Jobs
Wenn Sie Zugriff auf die Webanwendung haben, können Sie Cron-Jobs einrichten, um den Build auszuführen. Dies könnte nützlich sein für Persistenz oder um einen Build auszulösen:
Es scheint nicht möglich zu sein, Cron-Jobs innerhalb der .travis.yml
gemäß diesem einzurichten.
Drittanbieter-PR
TravisCI deaktiviert standardmäßig das Teilen von Umgebungsvariablen mit PRs von Drittanbietern, aber jemand könnte es aktivieren und dann könnten Sie PRs an das Repository erstellen und die Geheimnisse exfiltrieren:
Geheimnisse auslesen
Wie auf der Grundinformationen Seite erklärt, gibt es 2 Arten von Geheimnissen. Umgebungsvariablen-Geheimnisse (die auf der Webseite aufgelistet sind) und benutzerdefinierte verschlüsselte Geheimnisse, die in der .travis.yml
-Datei als Base64 gespeichert sind (beachten Sie, dass beide als verschlüsselte Umgebungsvariablen auf den Endgeräten enden).
Um konfigurierte Geheimnisse als Umgebungsvariablen aufzulisten, gehen Sie zu den Einstellungen des Projekts und überprüfen Sie die Liste. Beachten Sie jedoch, dass alle hier festgelegten Projektumgebungsvariablen beim Auslösen eines Builds angezeigt werden.
Um die benutzerdefinierten verschlüsselten Geheimnisse aufzulisten, ist es am besten, die
.travis.yml
-Datei zu überprüfen.Um verschlüsselte Dateien aufzulisten, können Sie nach
.enc
-Dateien im Repository suchen, nach Zeilen ähnlich wieopenssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
in der Konfigurationsdatei oder nach verschlüsselten IVs und Schlüsseln in den Umgebungsvariablen suchen, wie:
TODO:
Beispiel-Build mit Reverse-Shell, die auf Windows/Mac/Linux ausgeführt wird
Beispiel-Build, der die Umgebungsvariablen base64-kodiert in den Logs preisgibt
TravisCI Enterprise
Wenn ein Angreifer in einer Umgebung landet, die TravisCI Enterprise verwendet (mehr Informationen dazu finden Sie in den Grundinformationen), wird er in der Lage sein, Builds im Worker auszulösen. Dies bedeutet, dass ein Angreifer seitlich zu diesem Server wechseln kann, von dem aus er möglicherweise:
zum Host entkommen kann?
Kubernetes kompromittieren kann?
andere Maschinen im selben Netzwerk kompromittieren kann?
neue Cloud-Anmeldeinformationen kompromittieren kann?
Referenzen
Last updated