Die Entwickler der Alpine Linux-Distribution haben Informationen über einen versuchten Hack der Plattform für die gemeinsame Entwicklung gitlab.alpinelinux.org veröffentlicht, auf der an dem Paketmanager APK, den Build-Tools, Infrastrukturkomponenten und Build-Skripten (aports) gearbeitet wurde. Der Angriff erfolgte durch die Ausnutzung einer Schwachstelle in der GitLab-Plattform, die durch einen Pufferüberlauf im Regex-Engine der Programmiersprache Ruby verursacht wurde. Es konnten keine Beweise oder Hinweise auf einen erfolgreichen Hack gefunden werden, aber da ein vollständiger Ausschluss einer erfolgreichen Ausnutzung der Schwachstelle nicht möglich ist, wurde der GitLab-Container als potenziell kompromittiert angesehen und sein Inhalt vollständig neu aufgebaut, während die Benutzer aufgefordert wurden, ihre Passwörter zu ändern.
Die Administratoren der Infrastruktur von Alpine Linux konnten keine fremden Dateien, verdächtigen Prozesse, ungewöhnliche API-Zugriffe, Änderungen an Konfigurationseinstellungen und Systemdateien sowie Lastspitzen, die typisch für massives Data Mining sind, feststellen. Bei der Analyse der Integrität des aports-Repositories, der Pakete und Release-Dateien sowie deren Abgleich mit Kopien von externen Build-Servern und Entwicklersystemen wurden keine versteckten Änderungen festgestellt.
Das vollständige Ausschließen eines erfolgreichen Angriffs wird durch das Fehlen von Informationen über ausgehende Netzwerkverbindungen, das Löschen bestimmter Protokolle während der Rotation (z.B. cron-Log) und das Fehlen der nötigen Detailgenauigkeit in den Logs des Webservers (ein erfolgreich angewandter Exploit, der nicht zu einem Absturz führt, wird nicht im Log aufgezeichnet) erschwert.
Im Falle eines erfolgreichen Angriffs hätten die Angreifer Zugang zur Datenbank mit Informationen über alle Benutzer von GitLab (Passhashes, E-Mail, IP-Adressen usw.), Umgebungsvariablen und Tokens aus den Continuous Integration-Systemen, Codes für die Zwei-Faktor-Authentifizierung, Hashes für persönliche Zugriffstoken, den Inhalten privater Repositories und vertraulichen Diskussionen über Probleme bekommen können. Die Schlüssel zur Erstellung digitaler Signaturen für Releases und Pakete wurden auf dem angegriffenen Server nicht gespeichert.
Die ersten Versuche, die Schwachstelle auszunutzen, wurden am 20. und 21. Oktober registriert. Der Angreifer meldete sich bei GitLab an und versuchte, modifizierte Einstellungen für das Continuous Integration-System zu senden. In den Logs wurden 8 Abstürze von GitLab-Prozessen registriert, von denen 4 mit der Anwendung des Exploits in Verbindung stehen. Es wurde festgestellt, dass die erste Phase des Exploits erfolgreich war, die zweite Phase jedoch fehlschlug.
Zum Zeitpunkt des Angriffs wurde im Container eine verwundbare Version von GitLab 19.3.4 verwendet, die am 22. Oktober auf die Version GitLab 19.3.6 aktualisiert wurde. Die Administratoren von Alpine haben jedoch nicht berücksichtigt, dass das Patch nur in den offiziellen Installationspaketen von GitLab 19.3.6 und nicht im eigentlichen GitLab-Code vorgenommen wurde, da die Schwachstelle im Ruby-Toolkit vorhanden ist. Im Container wurde weiterhin das alte Ruby-Toolkit verwendet, und die Schwachstelle blieb unbehoben.
Dass das System weiterhin verwundbar blieb, wurde erst am 26. Oktober festgestellt. Eine Auswertung der Logs zeigte, dass die Angreifer am 25. und 26. Oktober ihre Angriffsversuche wieder aufgenommen hatten. Am 27. Oktober wurde der Zugang von externen Benutzern zu GitLab eingeschränkt. Am 28. Oktober wurde der Inhalt neu erstellt, alle Passwörter zurückgesetzt (die Benutzer müssen ein neues Passwort über das Verfahren zur Wiederherstellung des vergessenen Passworts festlegen), und die Zugangskeys wurden ersetzt. Am 29. Oktober wurde die aktualisierte Server wurde wieder in Betrieb genommen. Das begleitete Docker-Container-Projekt alpinelinux/gitlab blieb bis zum 27. Oktober verwundbar.
Quelle: opennet.ru
