Wie Hacker ihre Angriffe verschleiern Der Codecov-Tool-Hack im Detail

Ein Gastkommentar von Nimrod Stoler * |

Anbieter zum Thema

Beim Codecov-Tool-Hack wurde wie bei vielen anderen Angriffen ein bekannter Weg eingeschlagen. Durch den Diebstahl von Anmeldedaten wollten die Angreifer zu ihren eigentlichen Zielen gelangen. Ein Kommentar.

Maßnahmen wie das Prüfen der Code-Signatur erhöhen die Sicherheit in der Software Supply Chain.
Maßnahmen wie das Prüfen der Code-Signatur erhöhen die Sicherheit in der Software Supply Chain.
(© metamorworks - stock.adobe.com)

Einen hundertprozentigen Schutz für eine digitale Supply Chain kann es nicht geben. Trotz dessen sollten Unternehmen einige elementare Sicherheitsmaßnahmen grundsätzlich ergreifen. Dazu zählen Code-Signatur-Prüfungen, Multi-Faktor-Authentifizierung, eine Lösung für die Verwaltung von Zugangsdaten und die Nutzung von Threat-Detection-Funktionen.

Laut Aussage von Codecov haben sich Unbefugte Zugriff auf das Bash-Uploader-Skript verschafft und es ohne Erlaubnis modifiziert. Die Angreifer erlangten Zugang aufgrund eines Fehlers im Docker-Image-Erstellungsprozess von Codecov. Dadurch konnten sie Anmeldeinformationen extrahieren, die erforderlich waren, um das Bash-Uploader-Skript zu modifizieren.

Anschließend installierten sie eine Backdoor, indem sie eine einzige Zeile bösartigen Codes in den rund 1.900 Codezeilen des Uploaders versteckten. Dies gelang ihnen relativ einfach, da Berichten zufolge keine Zwei-Faktor-Authentifizierung für den Zugriff auf den Uploader erforderlich war. Jedes Mal, wenn ein Entwickler das Codecov-Testskript herunterlud, begann die Schadsoftware dann auf den Testmaschinen des Kunden zu laufen.

Auf diese Weise konnten die Angreifer die Secrets, Anmeldeinformationen und weitere vertrauliche Daten exportieren, die in den CI-Umgebungen des Opfers gespeichert waren. Beim Codecov-Angriff wurde die Tatsache ausgenutzt, dass das Skript ungewöhnlich umfangreich war und stark auf Umgebungsvariablen basierte – wie den von Linux- und Windows-Betriebssystemen genutzten dynamischen Name-Value-Pairs –, die oft fest-kodierte API-Schlüssel und Datenbank-Credentials beinhalten.

Diese Secrets werden innerhalb von CI/CD-Pipelines gespeichert und genutzt. Da die Anmeldeinformationen oft nur unzureichend verwaltet und geschützt werden, sind sie ein leichtes Ziel für Angreifer. Über Monate hinweg hatten die Angreifer offenbar Zugriff auf die Code-Ausführung auf jedem einzelnen System, das das Codecov-Skript verwendete. Sie vermieden es, Verdacht zu erregen, indem sie den bösartigen Code innerhalb einer größeren Code-Serie versteckten.

Es ist sicher nicht ungewöhnlich, dass ein Unternehmen Code, der von einem Geschäftspartner heruntergeladen wird, als vertrauenswürdig ansieht. So achten Unternehmen auch nicht immer auf die exakten Details des Codes wie seinen digitalen Fingerabdruck. Die Tatsache, dass Codecov seinen proprietären Code mit einer Signatur versieht, führte letztendlich auch zur Entdeckung des Angriffs. Hätten die Angreifer die Code-Signatur geändert, hätten sie möglicherweise für eine unbestimmte Zeit unbemerkt agieren können.

Entwicklungsumgebungen sind komplex und es gibt zahlreiche Bereiche, in denen Secrets und Credentials auch aus Versehen preisgegeben werden können. Ein Beispiel sind Code-Repositories wie GitHub, die ein wesentlicher Bestandteil des Entwicklungsprozesses sind. Wenn hier Code veröffentlicht wird, können Angreifer bösartigen Code in die Builds einfügen.

Reduzierung des Sicherheitsrisikos

Auch wenn es keine Anbieter und Tools gibt, die Angriffe auf die digitale Supply Chain vollständig verhindern können, so gibt es doch einige Maßnahmen, die Unternehmen ergreifen sollten, um die Sicherheit deutlich zu erhöhen und das Risiko zu minimieren. Dazu gehören:

Code-Signatur-Prüfungen: Durch eine einfache Überprüfung des digitalen Fingerabdrucks einer Software kann ihre Integrität verifiziert werden.

Multi-Faktor-Authentifizierung (MFA): Sie sollte bei Applikationszugriffen aus Sicherheitsgründen verpflichtend sein.

Entfernen von Credentials und Secrets aus Umgebungsvariablen: Wenn Anwendungen Secrets in einer Umgebungsvariablen benötigen, sollte mittels eines Secrets-Managers sichergestellt werden, dass nur authentifizierte Benutzer Zugriff auf die Klartext-Anmeldeinformationen erhalten.

Einsatz einer Sicherheitsplattform: Sie sollte eine zentrale und automatische Verwaltung, Sicherung und Überwachung aller vertraulichen Zugangsdaten unterstützen.

Nutzung von Threat-Detection-Funktionen: CI/CD-Pipelines sind hochgradig automatisiert und erfordern wenig menschliche Interaktion, sodass auch Angreifer leichter unentdeckt bleiben. Der Einsatz von Threat-Detection-Lösungen kann dabei helfen, Anomalien und potenzielle Verstöße einfacher und früher zu erkennen.

Und ein Punkt darf nicht vergessen werden: Auch bei der Cybersicherheit ist eine effiziente und konsistente Kommunikation unverzichtbar. Zum einen kennen Entwickler oft nicht die inhärenten Sicherheitsprobleme von CI/CD-Pipelines. Zum anderen wissen sie meistens auch nicht, was ihre Tools konkret mit Anmeldedaten und Secrets machen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Nimrod Stoler
Nimrod Stoler
(Bild: CyberArk)

Entwickler mögen Sicherheitsspezialisten manchmal als eine weitere Instanz betrachten, die ihnen die Arbeit erschwert. Aber eine enge Zusammenarbeit ist unerlässlich. Den Entwicklern die mit CI/CD-Pipelines verbundenen Gefahren aufzuzeigen, ist ein zentrales Element für die Realisierung einer hohen Sicherheit.

* Nimrod Stoler ist Principal Security Researcher bei CyberArk.

(ID:47490683)