Les développeurs de la distribution Alpine Linux ont révélé des informations sur une tentative de piratage de la plateforme de développement collaboratif gitlab.alpinelinux.org, où le gestionnaire de paquets APK, les outils de construction, les composants d'infrastructure et les scripts de construction de paquets (aports) étaient en cours de développement. L'attaque a été réalisée par l'exploitation d'une vulnérabilité dans la plateforme GitLab, causée par un débordement d'entier dans le moteur des expressions régulières du langage Ruby. Aucune preuve d'un piratage réussi n'a été trouvée, mais étant donné qu'il est impossible d'exclure complètement l'exploitation réussie de la vulnérabilité, le conteneur GitLab a été jugé potentiellement compromis et son contenu a été complètement reconstruit à partir de zéro, tandis qu'une procédure de changement de mot de passe a été initiée pour les utilisateurs.
Les administrateurs de l'infrastructure Alpine Linux n'ont pas détecté l'apparition de fichiers suspects, de processus étranges en cours d'exécution, d'appels API inhabituels, de modifications des paramètres et fichiers système, ni d'augmentations de charge caractéristiques des extractions de données massives. Au cours de l'analyse de l'intégrité du référentiel aports, des paquets et des fichiers de release, ainsi que de leur vérification avec des copies provenant de serveurs de construction externes et des systèmes des développeurs, aucun changement caché n'a été découvert.
L'absence d'informations sur les connexions réseau sortantes, la suppression de certains journaux lors de la rotation (par exemple, le journal cron) et le manque de détails dans les journaux du serveur web (l'application réussie d'un exploit qui ne provoque pas de plantage ne se reflète pas dans le journal) empêchent d'exclure complètement la réalisation d'une attaque.
En cas de succès de l'attaque, les attaquants auraient pu accéder à la base de données contenant des informations sur tous les utilisateurs de GitLab (haches de mots de passe, e-mail, adresses IP etc.), à des variables d'environnement et à des tokens des systèmes d'intégration continue, à des codes d'authentification à deux facteurs, à des haches de tokens d'accès personnels, au contenu de dépôts privés et à des discussions confidentielles sur des problèmes. Les clés pour générer des signatures numériques pour les releases et les paquets sur le conteneur attaqué le serveur n'étaient pas stockées.
Les premières tentatives d'exploitation de la vulnérabilité ont été enregistrées les 20 et 21 octobre. L'attaquant a créé un compte sur GitLab et a tenté d'envoyer des configurations modifiées du système d'intégration continue. Les journaux ont enregistré 8 défaillances critiques des processus GitLab, dont 4 étaient liées à l'utilisation de l'exploit. Il est noté que la première phase de l'exploit a été réussie, mais la deuxième phase a échoué.
Au moment de l'attaque, une version vulnérable de GitLab 19.3.4 était utilisée dans le conteneur, qui a été mise à jour le 22 octobre vers la version GitLab 19.3.6. Cependant, les administrateurs d'Alpine n'ont pas pris en compte le fait que le correctif n'avait été appliqué que dans les paquets d'installation officiels de GitLab 19.3.6, et non dans le code source de GitLab, car la vulnérabilité était présente dans l'outil Ruby. L'ancien outil Ruby continuait à être utilisé dans le conteneur, et la vulnérabilité est restée non corrigée.
Le fait que le système reste vulnérable n'a été découvert que le 26 octobre. L'analyse des journaux a montré que les 25 et 26 octobre, les attaquants avaient recommencé à tenter de mener leur attaque. Le 27 octobre, l'accès des utilisateurs externes à GitLab a été restreint. Le 28 octobre, le contenu a été reconstruit, tous les mots de passe réinitialisés (les utilisateurs doivent définir un nouveau mot de passe via la procédure de récupération de mot de passe oublié), et les clés d'accès remplacées. Le 29 octobre, la mise à jour serveur a été mise en service. Le projet Docker contenant alpinelinux/gitlab est resté vulnérable jusqu'au 27 octobre.
Source : opennet.ru
