Hacker brauchen eine Minute, um auf GitHub offengelegte Anmeldeinformationen zu finden und zu missbrauchen
Entwickler nutzen GitHub regelmäßig, um Codeänderungen zu sichern, zu teilen und zu verwalten. GitHub-Code-Repositories sind normalerweise öffentlich, was bedeutet, dass jeder den auf die Website hochgeladenen Code finden und darauf zugreifen kann. Und allzu oft vergessen Entwickler, sensible Daten aus ihrem Code zu entfernen, bevor sie ihn auf GitHub veröffentlichen.
Offenlegung vertraulicher privater Daten in öffentlichen GitHub-Repositorys ist kein neues Problem . Böswillige Hacker scannen und durchsuchen GitHub aktiv nach durchgesickerten Passwörtern, Client-IDs, geheimen Schlüsseln und API-Tokens, um nur einige zu nennen, weil sie wissen, dass Programmierer anfällig für solche Versäumnisse sind.
Aber wie lange dauert es, bis Angreifer Daten finden, sobald sie offengelegt sind, und was machen sie damit? Comparitech-Forscher versuchten, Antworten auf diese Fragen zu finden, indem sie einen Honeypot einrichteten.
Unsere Forscher haben mehrere Konten bei Amazon Web Services (AWS) und GitHub erstellt. Anschließend veröffentlichten sie Benutzeranmeldeinformationen wie AWS-IDs und geheime Schlüssel in öffentlichen GitHub-Repositorys. Mithilfe des AWS CloudTrail-Dienstes beobachteten und protokollierten sie dann Angreifer, die mit den Anmeldeinformationen auf unsere AWS-Server zugegriffen hatten.
Die Forscher richteten die Dummy-Konten mit programmgesteuertem Zugriff, aber ohne Berechtigungen ein, um zu verhindern, dass die Angreifer unsere AWS-Infrastruktur beeinträchtigen. Dem Benutzer wurde eine Richtlinie mit vollem Zugriff auf jeden Teil des AWS Elastic Cloud-Dienstes (AmazonEC2FullAccess) zugewiesen.
Der AWS Athena-Dienst wurde verwendet, um die Angriffsprotokolle nach Zeit, Ereignis und IP-Adresse zu durchsuchen und abzufragen.
Honeypot-Ergebnisse: 1 Minute, um offengelegte Anmeldeinformationen zu finden und Angriffe zu starten
Es dauerte nur eine Minute, bis Angreifer den offengelegten geheimen AWS-Schlüssel fanden und damit begannen, ihn zu missbrauchen. Aufgrund der Geschwindigkeit der Angriffe gehen Forscher davon ausAngreifer verwenden benutzerdefinierte oder modifizierte Tools und Skriptefür solche Angriffe, und die meisten verwenden Proxys, die es ihnen ermöglichen, jede Anfrage von einer anderen IP-Adresse aus auszuführen.
Das sind schlechte Nachrichten für Programmierer und Entwickler.Selbst wenn ein Entwickler seinen Fehler schnell erkennt, nachdem er Code an GitHub übermittelt hat, kann er ihn möglicherweise nicht entfernen, bevor Angreifer an die offengelegten Anmeldeinformationen gelangen.
Beim ersten von uns protokollierten Angriff wurden die offengelegten Anmeldeinformationen missbraucht, um Informationen über unsere Serverinfrastruktur, Benutzer, Berechtigungen, Gruppen, Rollen und Richtlinien abzurufenDescribeInstancesUndGetAccountAuthorizationDetailsAPI-Aufrufe.Der gesamte Angriff dauerte vom Zeitpunkt der Enthüllung an weniger als vier Minuten.
Als nächstes beschlossen unsere Forscher, Angreifern mehr Privilegien zu gewähren. Sie haben einen neuen Dummy-Benutzer erstellt und ihm schreibgeschützte Zugriffsberechtigungen (AmazonEC2ReadOnlyAccess) sowie eine Rolle zugewiesen, die es dem Benutzer ermöglicht, Containerinstanzen zu registrieren und abzumelden (AmazonEC2ContainerServiceRole).
Innerhalb einer Minute nach Offenlegung des Benutzerschlüssels empfing die EC2-Instanz mehr als 1.000RunInstancesAPI-Aufrufe.Der Angreifer versuchte, nur die größten verfügbaren Instanzen auszuführen – ein Versuch, schnell Rechnungen bei Amazon anzuhäufen und finanzielle Verluste zu verursachen.
In diesem Fall hat Amazon jedoch sofort das Benutzerkonto gesperrt und uns per E-Mail kontaktiert. Dieser Schutzmechanismus erfolgte automatisch.
Bei der Untersuchung aller Protokolle aus unserem Honeypot stellten die Forscher fest, dass jeder API-Aufruf von 547 eindeutigen IP-Adressen kamHacker nutzen Proxys, um missbräuchliche Aktivitäten zu verbergen.Die Angriffsaktivität nahm mit der Zeit ab, wobei die überwiegende Mehrheit der Angriffe innerhalb einer Stunde nach der Exposition erfolgte.
Wie Angreifer auf GitHub offengelegte Daten nutzen können
Die Aktionen, die ein Angreifer mit offengelegten AWS-Anmeldeinformationen ausführen kann, variieren stark, abhängig von den diesen Anmeldeinformationen zugewiesenen Berechtigungen.
Typischerweise können Angreifer Informationen über laufende EC2-Instanzen, vorhandene S3-Buckets, Listen von Benutzern und deren Berechtigungen sowie andere Kontoinformationen erhalten. Dies kann zu weiteren Kontokompromittierungen und Datenschutzverletzungen führen.
Kompromittierte Infrastruktur kann für weitere Cyberangriffe, beispielsweise Botnet-Angriffe, genutzt werden. Dies kann dazu führen, dass Ihre IP-Adressen auf die schwarze Liste gesetzt werden.
Was tun, wenn Sie AWS-Anmeldeinformationen auf GitHub offengelegt haben?
Wenn Sie versehentlich AWS-Anmeldeinformationen in einem öffentlichen GitHub-Repository offengelegt haben, besteht die Möglichkeit, dass Sie sehr bald angegriffen werden.
Forscher empfehlen, sofort folgende Schritte zu unternehmen:
- Aktualisieren Sie das Root-Passwort
- Drehen und löschen Sie alle Zugriffsschlüssel
- Überprüfen Sie jede Region auf unbefugte AWS-Nutzung
- Beenden Sie nicht autorisierte Ressourcen
- Entfernen Sie geleakte Schlüssel und andere Zugangsdaten sofort
- Widerrufen und löschen Sie diese Anmeldeinformationen
- Bei weiteren Problemen wenden Sie sich an den AWS-Support
Wenn Sie diese Schritte nicht unternehmen, kann dies zu finanziellen Verlusten und einer möglichen Kündigung oder Sperrung Ihres AWS-Kontos führen.
So verhindern Sie die Offenlegung von Anmeldeinformationen auf GitHub
Sowohl AWS als auch GitHub bieten Benutzern einige grundlegende Schutzmaßnahmen gegen diese Art von Angriffen. GitHub hat eine geheime Scanfunktion das Repositorys mithilfe regulärer Ausdrücke auf offengelegte Anmeldeinformationen überprüft. Wie wir bei unserem Honeypot gesehen haben, kann Amazon kompromittierte Konten sperren und Administratoren per Telefon und E-Mail benachrichtigen. Aber wie wir gezeigt haben, sollte man sich nicht auf diese Mechanismen verlassen.
Hier sind einige von unseren Forschern empfohlene Best Practices, um zu verhindern, dass Entwickler Anmeldeinformationen und andere vertrauliche Informationen in öffentlichen Repositorys preisgeben:
- Scannen Sie den Code immer, bevor Sie ihn festschreiben. Dies kann automatisiert werden und sollte in die Entwicklungspipeline integriert werden.
- Erstellen Sie keinen Zugriffsschlüssel für den Root-Benutzer Ihres AWS-Kontos. Sie können die Berechtigungen für den Root-Benutzer nicht einschränken, sodass ein Angreifer, der diesen Schlüssel erhält, alle Ressourcen in Ihrem Konto kontrollieren kann, einschließlich der Rechnungsinformationen.
- Verwenden Sie temporäre Sicherheitsanmeldeinformationen anstelle langfristiger Zugriffsschlüssel. Temporäre Anmeldeinformationen bestehen aus einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel, enthalten aber auch ein Sicherheitstoken, das anzeigt, wann diese Anmeldeinformationen ablaufen. Sie können festlegen, wie lange ein temporärer Zugriffsschlüssel gültig ist, nach dessen Ablauf er automatisch beendet wird.
- IAM-Benutzer richtig konfigurieren. Wenn Sie Zugriffsschlüssel für den programmgesteuerten Zugriff erstellen müssen, erstellen Sie einen IAM-Benutzer. Gewähren Sie diesem Benutzer nur die Berechtigungen, die er benötigt, und generieren Sie dann einen Zugriffsschlüssel für diesen Benutzer.
- Wenn Sie über mehrere Anwendungen verfügen, verwenden Sie für jede Anwendung unterschiedliche Zugriffsschlüssel und wechseln Sie diese regelmäßig.
- Entfernen Sie unbenutzte Schlüssel.
- Konfigurieren Sie die Multi-Faktor-Authentifizierung für Ihre sensibelsten Vorgänge.
- Vermeiden Sie eine eindeutige Tokenübertragung.