
Laboratorio basado en Docker que reproduce CVE-2024-31218, una falla de creación de administrador de PocketBase sin autenticación en Webhood, con PoC, detección y verificación de remediación.
Este proyecto es un laboratorio controlado de investigación de seguridad y reproducción de vulnerabilidades para CVE-2024-31218, una vulnerabilidad crítica de autenticación que afecta a las versiones de Webhood anteriores a la 0.9.1.
La vulnerabilidad está relacionada con la creación no autenticada de una cuenta de administrador de PocketBase cuando no existe ninguna cuenta de administrador. Un atacante que pueda alcanzar la API afectada podría crear una cuenta administrativa sin autenticación previa.
El objetivo de este laboratorio es:
Seguridad: Este proyecto está destinado únicamente a un entorno de laboratorio local aislado. La aplicación vulnerable nunca debe exponerse a Internet público ni utilizarse contra sistemas sin autorización.
| Campo | Detalles |
|---|---|
| CVE | CVE-2024-31218 |
| Proyecto | Webhood |
| Versiones afectadas | Webhood <= 0.9.0 |
| Versión corregida | Webhood 0.9.1 |
| Gravedad | Crítica |
| CVSS v3.1 | 9.8 |
| CWE | CWE-306 — Falta de autenticación para función crítica |
| Vector de ataque | Red |
| Complejidad del ataque | Baja |
| Privilegios requeridos | Ninguno |
| Interacción del usuario | Ninguna |
| Confidencialidad | Alta |
| Integridad | Alta |
| Disponibilidad | Alta |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2. Descripción de la vulnerabilidad
CVE-2024-31218 se debe a una protección de autenticación insuficiente en torno a la creación de administradores en la aplicación Webhood/PocketBase afectada.
Cuando la aplicación no tiene ninguna cuenta de administrador configurada, se puede acceder a la funcionalidad de creación de administradores sin autenticación.
Un atacante capaz de alcanzar la API afectada puede, por lo tanto, intentar crear la primera cuenta de administrador.
La explotación exitosa puede dar como resultado acceso administrativo a la aplicación.
La vulnerabilidad se clasifica como:
CWE-306: Falta de autenticación para función crítica
3. Versiones afectadas y corregidas
El rango vulnerable es:
Webhood <= 0.9.0
La vulnerabilidad se corrigió en:
Webhood 0.9.1
Por lo tanto, debe utilizarse la versión parcheada para la verificación de la remediación.
4. Superficie de ataque
La superficie de ataque relevante es la API administrativa de PocketBase.
La funcionalidad vulnerable implica la creación de cuentas de administrador.
Conceptualmente, el flujo del ataque es:
Atacante
|
| Solicitud HTTP
v
API de Webhood / PocketBase
|
| Endpoint de creación de administrador
v
Creación de cuenta de administrador
|
v
Acceso administrativo no autorizado
El ataque no requiere una sesión autenticada existente cuando está presente la condición vulnerable de administrador inicial.
5. Causa raíz
La causa raíz es un fallo en el control de autenticación.
La funcionalidad de creación de administradores no restringía suficientemente el acceso cuando no existía ninguna cuenta de administrador.
El límite de seguridad debería garantizar que un cliente remoto no autenticado no pueda abusar de la funcionalidad administrativa privilegiada.
Por lo tanto, el comportamiento vulnerable representa una comprobación de autenticación ausente en torno a una operación sensible para la seguridad.
6. Arquitectura del laboratorio controlado
El laboratorio reproduce el comportamiento de la API administrativa de PocketBase
subyacente a CVE-2024-31218.
El entorno Docker utiliza el componente PocketBase directamente en lugar de
afirmar que empaqueta la aplicación Webhood 0.9.0 completa.
La arquitectura del laboratorio es:
+-------------------------+
| Máquina anfitriona|
| |
| PowerShell / Python |
+------------+------------+
|
| 127.0.0.1:8090
v
+-------------------------+
| Contenedor Docker |
| |
| +-------------------+ |
| | PocketBase | |
| | API administrativa| |
| +-------------------+ |
| |
+-------------------------+
El servicio está vinculado únicamente a localhost y no está destinado a exponerse
a Internet público.
Todas las credenciales utilizadas durante la reproducción son credenciales sintéticas de laboratorio.
7. Estructura del repositorio
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. Entorno vulnerable
El entorno vulnerable está diseñado para reproducir el comportamiento de la API
administrativa de PocketBase asociado con CVE-2024-31218 en un contenedor Docker
aislado.
El laboratorio utiliza PocketBase directamente como el componente afectado en lugar de
afirmar que reproduce la aplicación Webhood 0.9.0 completa.
La configuración de Docker hará lo siguiente:
- Construir el entorno de laboratorio.
- Iniciar PocketBase localmente.
- Vincular el servicio a localhost.
- Mantener el servicio aislado de sistemas externos.
- Proporcionar un entorno reproducible para pruebas.
- Permitir que el script de reproducción interactúe con la API administrativa.
El laboratorio actual utiliza una cuenta de administrador sintética y no
contiene datos de usuario ni credenciales reales.
9. Metodología de reproducción
El procedimiento de reproducción está diseñado únicamente para el laboratorio local.
Paso 1 — Iniciar el contenedor vulnerable
docker compose up --build
Paso 2 — Verificar el servicio
Confirmar que el servicio PocketBase utilizado para el laboratorio a nivel de componente responde localmente.
Paso 3 — Ejecutar el script de reproducción controlada
El script de reproducción enviará la solicitud correspondiente a la instancia vulnerable local.
Ejemplo:
python exploit/reproduce.py
Paso 4 — Observar la respuesta
La respuesta debería demostrar si la aplicación acepta la solicitud no autenticada de creación de administrador.
Paso 5 — Verificar el estado resultante
El laboratorio debería verificar si se creó una cuenta de administrador.
Nunca debe utilizarse ningún objetivo externo.
10. Detección
La detección debería identificar indicadores asociados con intentos no autorizados de creación de administradores.
Los posibles indicadores incluyen:
Solicitudes a la funcionalidad de creación de administradores
Solicitudes no autenticadas a endpoints administrativos
Creación inesperada de una primera cuenta de administrador
Solicitudes HTTP originadas desde un cliente inesperado
Intentos repetidos de creación de administradores
Creación de cuenta administrativa inmediatamente después de la inicialización de la aplicación
El script de detección se encuentra en:
detection/detect.py
11. Remediación
La remediación principal es actualizar Webhood a la versión corregida:
Webhood 0.9.1
La versión vulnerable no debe utilizarse en producción.
Una solución alternativa documentada es restringir el acceso a la funcionalidad de la API administrativa afectada cuando no se pueda realizar una actualización de inmediato.
Después de la remediación: