
Labo basé sur Docker reproduisant CVE-2024-31218, une faille de création d'administrateur PocketBase non authentifiée dans Webhood, avec PoC, détection et vérification de la remédiation.
Ce projet est un laboratoire contrôlé de recherche en sécurité et de reproduction de vulnérabilité pour CVE-2024-31218, une vulnérabilité d'authentification critique affectant les versions de Webhood antérieures à 0.9.1.
La vulnérabilité est liée à la création non authentifiée d'un compte administrateur PocketBase lorsqu'aucun compte administrateur n'existe. Un attaquant capable d'atteindre l'API affectée peut être en mesure de créer un compte administratif sans authentification préalable.
L'objectif de ce laboratoire est de :
Sécurité : Ce projet est destiné uniquement à un environnement de laboratoire local isolé. L'application vulnérable ne doit jamais être exposée à l'Internet public ni utilisée contre des systèmes sans autorisation.
| Champ | Détails |
|---|---|
| CVE | CVE-2024-31218 |
| Projet | Webhood |
| Versions affectées | Webhood <= 0.9.0 |
| Version corrigée | Webhood 0.9.1 |
| Sévérité | Critique |
| CVSS v3.1 | 9.8 |
| CWE | CWE-306 — Authentification manquante pour une fonction critique |
| Vecteur d'attaque | Réseau |
| Complexité de l'attaque | Faible |
| Privilèges requis | Aucun |
| Interaction utilisateur | Aucune |
| Confidentialité | Élevée |
| Intégrité | Élevée |
| Disponibilité | Élevée |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2. Description de la vulnérabilité
CVE-2024-31218 est causée par une protection d'authentification insuffisante autour de la création d'administrateur dans l'application Webhood/PocketBase affectée.
Lorsque l'application n'a aucun compte administrateur configuré, la fonctionnalité de création d'administrateur peut être atteinte sans authentification.
Un attaquant capable d'atteindre l'API affectée peut donc tenter de créer le premier compte administrateur.
Une exploitation réussie peut entraîner un accès administratif à l'application.
La vulnérabilité est classée comme :
CWE-306 : Authentification manquante pour une fonction critique
3. Versions affectées et corrigées
La plage vulnérable est :
Webhood <= 0.9.0
La vulnérabilité a été corrigée dans :
Webhood 0.9.1
La version corrigée doit donc être utilisée pour la vérification de la remédiation.
4. Surface d'attaque
La surface d'attaque pertinente est l'API administrative PocketBase.
La fonctionnalité vulnérable concerne la création de compte administrateur.
Conceptuellement, le flux d'attaque est :
Attaquant
|
| Requête HTTP
v
API Webhood / PocketBase
|
| Point de terminaison de création d'administrateur
v
Création de compte admin
|
v
Accès administratif non autorisé
L'attaque ne nécessite pas de session authentifiée existante lorsque la condition vulnérable d'administrateur initial est présente.
5. Cause racine
La cause racine est une défaillance du contrôle d'authentification.
La fonctionnalité de création d'administrateur ne restreignait pas suffisamment l'accès lorsqu'aucun compte administrateur n'existait.
La frontière de sécurité devrait garantir que les fonctionnalités administratives privilégiées ne peuvent pas être abusées par un client distant non authentifié.
Le comportement vulnérable représente donc une vérification d'authentification manquante autour d'une opération sensible en matière de sécurité.
6. Architecture du laboratoire contrôlé
Le laboratoire reproduit le comportement de l'API administrative PocketBase
sous-jacent à CVE-2024-31218.
L'environnement Docker utilise directement le composant PocketBase plutôt que
de prétendre empaqueter l'application Webhood 0.9.0 complète.
L'architecture du laboratoire est :
+-------------------------+
| Machine hôte |
| |
| PowerShell / Python |
+------------+------------+
|
| 127.0.0.1:8090
v
+-------------------------+
| Conteneur Docker |
| |
| +-------------------+ |
| | PocketBase | |
| | API administrative| |
| +-------------------+ |
| |
+-------------------------+
Le service est lié uniquement à localhost et n'est pas destiné à être exposé
à l'Internet public.
Tous les identifiants utilisés lors de la reproduction sont des identifiants de laboratoire synthétiques.
7. Structure du dépôt
CVE-2024-31218-WEBHOOD-LAB/
│
├── README.md
│
├── vulnerable/
│ ├── Dockerfile
│ └── docker-compose.yml
│
├── exploit/
│ └── reproduce.py
│
├── detection/
│ └── detect.py
│
├── patched/
│ └── README.md
│
├── evidence/
│ └── README.md
│
└── blog/
└── CVE-2024-31218-Technical-Blog.pdf
8. Environnement vulnérable
L'environnement vulnérable est conçu pour reproduire le comportement de l'API
administrative PocketBase associé à CVE-2024-31218 dans un conteneur Docker
isolé.
Le laboratoire utilise directement PocketBase comme composant affecté plutôt
que de prétendre reproduire l'application Webhood 0.9.0 complète.
La configuration Docker va :
- Construire l'environnement de laboratoire.
- Démarrer PocketBase localement.
- Lier le service à localhost.
- Maintenir le service isolé des systèmes externes.
- Fournir un environnement reproductible pour les tests.
- Permettre au script de reproduction d'interagir avec l'API administrative.
Le laboratoire actuel utilise un compte administrateur synthétique et ne
contient pas de données utilisateur ni d'identifiants réels.
9. Méthodologie de reproduction
La procédure de reproduction est conçue uniquement pour le laboratoire local.
Étape 1 — Démarrer le conteneur vulnérable
docker compose up --build
Étape 2 — Vérifier le service
Confirmer que le service PocketBase utilisé pour le laboratoire au niveau du composant répond localement.
Étape 3 — Exécuter le script de reproduction contrôlé
Le script de reproduction enverra la requête pertinente à l'instance vulnérable locale.
Exemple :
python exploit/reproduce.py
Étape 4 — Observer la réponse
La réponse devrait démontrer si l'application accepte la requête de création d'administrateur non authentifiée.
Étape 5 — Vérifier l'état résultant
Le laboratoire devrait vérifier si un compte administrateur a été créé.
Aucune cible externe ne doit jamais être utilisée.
10. Détection
La détection devrait identifier les indicateurs associés aux tentatives de création d'administrateur non autorisées.
Les indicateurs potentiels incluent :
Requêtes vers la fonctionnalité de création d'administrateur
Requêtes non authentifiées vers des points de terminaison administratifs
Création inattendue d'un premier compte administrateur
Requêtes HTTP provenant d'un client inattendu
Tentatives répétées de création d'administrateur
Création de compte administratif immédiatement après l'initialisation de l'application
Le script de détection se trouve dans :
detection/detect.py
11. Remédiation
La remédiation principale consiste à mettre à niveau Webhood vers la version corrigée :
Webhood 0.9.1
La version vulnérable ne doit pas être utilisée en production.
Un contournement documenté consiste à restreindre l'accès à la fonctionnalité d'API administrateur affectée lorsqu'une mise à niveau ne peut pas être effectuée immédiatement.
Après la remédiation :