
Lab basato su Docker che riproduce CVE-2024-31218, una vulnerabilità di creazione admin non autenticata in PocketBase all'interno di Webhood, con PoC, rilevamento e verifica della remediation.
Questo progetto è un laboratorio controllato di ricerca sulla sicurezza e riproduzione di vulnerabilità per CVE-2024-31218, una vulnerabilità critica di autenticazione che interessa le versioni di Webhood precedenti alla 0.9.1.
La vulnerabilità è correlata alla creazione non autenticata di un account amministratore PocketBase quando non esiste alcun account amministratore. Un attaccante in grado di raggiungere l'API interessata potrebbe essere in grado di creare un account amministrativo senza autenticazione preventiva.
L'obiettivo di questo laboratorio è:
Sicurezza: Questo progetto è destinato esclusivamente a un ambiente di laboratorio locale isolato. L'applicazione vulnerabile non deve mai essere esposta a Internet pubblico né utilizzata contro sistemi senza autorizzazione.
| Campo | Dettagli |
|---|---|
| CVE | CVE-2024-31218 |
| Progetto | Webhood |
| Versioni interessate | Webhood <= 0.9.0 |
| Versione corretta | Webhood 0.9.1 |
| Gravità | Critica |
| CVSS v3.1 | 9.8 |
| CWE | CWE-306 — Missing Authentication for Critical Function |
| Vettore di attacco | Rete |
| Complessità di attacco | Bassa |
| Privilegi richiesti | Nessuno |
| Interazione utente | Nessuna |
| Riservatezza | Alta |
| Integrità | Alta |
| Disponibilità | Alta |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2. Descrizione della vulnerabilità
CVE-2024-31218 è causata da una protezione di autenticazione insufficiente attorno alla creazione dell'amministratore nell'applicazione Webhood/PocketBase interessata.
Quando l'applicazione non ha alcun account amministratore configurato, la funzionalità di creazione dell'amministratore può essere raggiunta senza autenticazione.
Un attaccante in grado di raggiungere l'API interessata può quindi tentare di creare il primo account amministratore.
Un'exploit riuscita può comportare l'accesso amministrativo all'applicazione.
La vulnerabilità è classificata come:
CWE-306: Missing Authentication for Critical Function
3. Versioni interessate e corrette
L'intervallo vulnerabile è:
Webhood <= 0.9.0
La vulnerabilità è stata corretta in:
Webhood 0.9.1
La versione corretta dovrebbe quindi essere utilizzata per la verifica della remediation.
4. Superficie di attacco
La superficie di attacco rilevante è l'API amministrativa di PocketBase.
La funzionalità vulnerabile riguarda la creazione dell'account amministratore.
Concettualmente, il flusso di attacco è:
Attaccante
|
| Richiesta HTTP
v
Webhood / PocketBase API
|
| Endpoint di creazione amministratore
v
Creazione account amministratore
|
v
Accesso amministrativo non autorizzato
L'attacco non richiede una sessione autenticata esistente quando è presente la condizione vulnerabile dell'amministratore iniziale.
5. Causa principale
La causa principale è un fallimento del controllo di autenticazione.
La funzionalità di creazione dell'amministratore non limitava sufficientemente l'accesso quando non esisteva alcun account amministratore.
Il confine di sicurezza dovrebbe garantire che la funzionalità amministrativa privilegiata non possa essere abusata da un client remoto non autenticato.
Il comportamento vulnerabile rappresenta quindi un controllo di autenticazione mancante attorno a un'operazione sensibile per la sicurezza.
6. Architettura del laboratorio controllato
Il laboratorio riproduce il comportamento dell'API amministrativa di PocketBase
alla base di CVE-2024-31218.
L'ambiente Docker utilizza direttamente il componente PocketBase anziché
pretendere di impacchettare l'applicazione completa Webhood 0.9.0.
L'architettura del laboratorio è:
+-------------------------+
| Host Machine |
| |
| PowerShell / Python |
+------------+------------+
|
| 127.0.0.1:8090
v
+-------------------------+
| Docker Container |
| |
| +-------------------+ |
| | PocketBase | |
| | Administrative API| |
| +-------------------+ |
| |
+-------------------------+
Il servizio è associato solo a localhost e non è destinato ad essere esposto
a Internet pubblico.
Tutte le credenziali utilizzate durante la riproduzione sono credenziali sintetiche di laboratorio.
7. Struttura del repository
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. Ambiente vulnerabile
L'ambiente vulnerabile è progettato per riprodurre il comportamento dell'API amministrativa
di PocketBase associato a CVE-2024-31218 in un container Docker isolato.
Il laboratorio utilizza PocketBase direttamente come componente interessato anziché
pretendere di riprodurre l'applicazione completa Webhood 0.9.0.
La configurazione Docker:
- Costruirà l'ambiente di laboratorio.
- Avvierà PocketBase localmente.
- Assocerà il servizio a localhost.
- Manterrà il servizio isolato da sistemi esterni.
- Fornirà un ambiente riproducibile per i test.
- Consentirà allo script di riproduzione di interagire con l'API amministrativa.
Il laboratorio attuale utilizza un account amministratore sintetico e non
contiene dati utente o credenziali reali.
9. Metodologia di riproduzione
La procedura di riproduzione è progettata solo per il laboratorio locale.
Passo 1 — Avviare il container vulnerabile
docker compose up --build
Passo 2 — Verificare il servizio
Confermare che il servizio PocketBase utilizzato per il laboratorio a livello di componente risponda localmente.
Passo 3 — Eseguire lo script di riproduzione controllato
Lo script di riproduzione invierà la richiesta pertinente all'istanza vulnerabile locale.
Esempio:
python exploit/reproduce.py
Passo 4 — Osservare la risposta
La risposta dovrebbe dimostrare se l'applicazione accetta la richiesta non autenticata di creazione dell'amministratore.
Passo 5 — Verificare lo stato risultante
Il laboratorio dovrebbe verificare se è stato creato un account amministratore.
Non deve mai essere utilizzato alcun target esterno.
10. Rilevamento
Il rilevamento dovrebbe identificare gli indicatori associati ai tentativi non autorizzati di creazione dell'amministratore.
I potenziali indicatori includono:
Richieste alla funzionalità di creazione dell'amministratore
Richieste non autenticate agli endpoint amministrativi
Creazione imprevista di un primo account amministratore
Richieste HTTP provenienti da un client imprevisto
Tentativi ripetuti di creazione dell'amministratore
Creazione di account amministratore immediatamente dopo l'inizializzazione dell'applicazione
Lo script di rilevamento si trova in:
detection/detect.py
11. Remediation
La remediation principale consiste nell'aggiornare Webhood alla versione corretta:
Webhood 0.9.1
La versione vulnerabile non deve essere utilizzata in produzione.
Una soluzione alternativa documentata consiste nel limitare l'accesso alla funzionalità dell'API amministrativa interessata quando non è possibile eseguire immediatamente un aggiornamento.
Dopo la remediation: