Berichten einiger Entwickler zur Folge verschwand plötzlich sämtlicher Inhalt des eigenen Code-Repositorys. Anstelle des dort abgelegten Quellcodes war in den Verzeichnissen bei Git-Lab oder GitHub nur eine einzige Erpressernachricht zu finden. Darin forderten Erpresser die Zahlung von zirka. 500 US-Dollar in Bitcoin. Angeblich hätten sie sämtliche Daten auf ihre eigenen Server übertragen und drohen damit, die Daten entweder zu löschen oder öffentlich zu machen, wenn das Geld nicht gezahlt wird.
Erstes Aufatmen
Nach einem anfänglichen Schrecken hat einer der betroffenen Entwickler ein wenig weiter geforscht. Es stellte sich im weiteren Verlauf heraus, dass die Daten mitnichten gelöscht waren. Allerdings wurden sie so manipuliert, dass sie sich nicht ohne Weiteres abrufen ließen. Doch wie konnte jemand überhaupt an die teils privaten und nicht öffentlichen Code-Repositories herankommen?
Ursachenforschung
Die Ursache ist so einfach wie fatal: Die Zugangsdaten der betroffenen Repositories waren im Klartext in öffentlich zugänglichen Konfigurationsdateien hinterlegt. Das machte es einfach, mit Hilfe eines simplen Skripts Git-Konfigurationsdateien mit Zugangsdaten zu finden. Zwar wird die eigentlliche Git-Konfigurationsdatei normalerweise nicht hochgeladen, allerdings landen die Zugangsdaten aus Bequemlichkeit häufiger in öffentlich zugänglichen Dateien. Allein auf der Plattform Github waren 392 Konten betroffen. Wie viele selbst gehostete Git-Instanzen betroffen sind, ist schwer zu sagen. Bisher hat allerdings keiner der Betroffenen die geforderten 500 Dollar gezahlt – zum Zeitpunkt dieses Artikels enthielt die Bitcoin-Wallet nur etwa drei Dollar.
Dass diese Angriffe breit gestreut und automatisiert stattfanden, hat auch eine gute Seite: Es ist unwahrscheinlich, dass wirklich jemand sämtliche betroffenen Repositories kopiert hat und in der Lage ist, deren Inhalt publik zu machen. So etwas würde einen immensen Aufwand erfordern und danach sieht es derzeit nicht aus.
Sicherungsmaßnahmen
So einfach betroffene Repositories zu kapern waren, so einfach sind sie auch abzusichern. Neben einem ausreichend sicheren Passwort empfiehlt GitLab dringend, die Zweifaktor-Authentisierung zu benutzen. So liefe ein Angriff sofort ins Leere, selbst wenn Kriminelle das Passwort kennen.
Kontrolle zurückholen
Falls es für die beschriebenen Sicherheitsmaßnahmen bereits zu spät ist und das eigene Repository von dem Angriff betroffen ist, lassen sich die Daten oft auch ohne Zahlung der Erpressersumme wiederherstellen.
- Passwörter für das Repository sofort ändern
- Nicht genutzte Zugangstoken löschen (z.B. Tokens eines nicht mehr genutzten Systems)
- Wird Git auf einem eigenen Webserver gehostet, sollte der externe Zugang zum Git-Verzeichnis gesperrt werden, sodass die Konfigurationsdatei nicht mehr über das Internet auffindbar ist
- Zwei-Faktor-Anmeldung aktivieren
- Ein „zerschossenes“ Repository mit folgenden Befehlen wiederherstellen:
git checkout origin/master
git reflog # SHA des letzten Commits
git reset (SHA)
git push origin HEAD:master --force
Auf StackExchange findet sich eine Diskussion zum Thema, in der Betroffene die Lösung gepostet haben.
Bildnachweis:
"Handschellen" von Klaus Hausmann
Git-Logo von Jason Long, lizensiert unter CC-BY 3.0