
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:
Arrestare il container vulnerabile.
Sostituire la versione vulnerabile con la versione corretta.
Ricostruire il container.
Avviare l'ambiente corretto.
Ripetere il tentativo di riproduzione.
Confermare che il comportamento vulnerabile non sia più possibile.
Esaminare i log dell'applicazione per richieste amministrative impreviste.
12. Remediation e verifica
La correzione ufficiale di Webhood per CVE-2024-31218 è stata verificata utilizzando la release sorgente effettiva di Webhood `v0.9.1`.
Il commit di correzione è:
`735e7fa2814edeec9a2c07778ed51b3c018609f9`
La correzione aggiunge la migrazione:
`src/backend/migrations/1712252550_generate_random_admin.js`
La migrazione verifica se esiste già un amministratore. Se non esiste alcun amministratore, crea un account amministratore con una password generata casualmente. Ciò impedisce a un richiedente non autenticato di rivendicare il primo amministratore tramite l'endpoint esposto `/api/admins`.
#### Procedura di verifica
1. È stato effettuato il checkout del tag sorgente ufficiale di Webhood `v0.9.1`.
2. Il backend è stato compilato localmente dal sorgente ufficiale utilizzando il suo Dockerfile.
3. L'immagine risultante è stata eseguita su localhost alla porta `8091`.
4. La stessa richiesta non autenticata di creazione dell'amministratore utilizzata contro il laboratorio vulnerabile è stata riprodotta contro il backend corretto.
5. L'ambiente vulnerabile aveva precedentemente accettato la richiesta con HTTP `200`.
6. Il backend corretto `v0.9.1` ha rifiutato la stessa richiesta con HTTP `401`.
Risposta osservata nell'ambiente corretto:
```text
HTTP status: 401
{"code":401,"message":"The request requires valid admin authorization token to be set.","data":{}}
Ciò conferma che il percorso di attacco precedentemente dimostrato di creazione non autenticata dell'amministratore è stato bloccato nel backend Webhood v0.9.1 compilato localmente.
REMEDIATION VERIFIED: YES
Evidenza:
evidence/05-remediation-verified.png
13. Impatto sulla sicurezza
Un'exploit riuscita può fornire privilegi amministrativi a una parte non autorizzata.
Le potenziali conseguenze includono:
Accesso amministrativo non autorizzato
Modifica dei dati dell'applicazione
Esposizione delle informazioni dell'applicazione
Modifica o cancellazione di record
Ulteriore abuso amministrativo dell'applicazione
La gravità è quindi classificata come Critica secondo la valutazione CVSS pubblicata.
14. Evidenza
La directory evidence/ è destinata a contenere screenshot che dimostrano:
Avvio dell'applicazione vulnerabile
Stato del container Docker
Versione vulnerabile
Richiesta di riproduzione
Comportamento vulnerabile riuscito
Output del rilevamento
Versione corretta
Riproduzione fallita/bloccata dopo la remediation
Gli screenshot non devono contenere credenziali reali, informazioni personali, chiavi API o altri dati sensibili.
15. Limitazioni
Durante la preparazione di questo laboratorio, l'ambiente Windows locale ha riscontrato problemi nell'avvio del backend Docker Linux.
Windows ha restituito:
Error: 14098
The component store has been corrupted.
Anche le funzionalità Windows richieste erano inizialmente disabilitate:
VirtualMachinePlatform
Microsoft-Windows-Subsystem-Linux
Pertanto, qualsiasi risultato di riproduzione o screenshot deve distinguere accuratamente tra:
Ricerca sulla vulnerabilità
Configurazione del laboratorio
Procedura di riproduzione prevista
Riproduzione eseguita con successo
Nessuna esecuzione riuscita dell'exploit deve essere dichiarata a meno che non sia stata effettivamente eseguita nel laboratorio isolato.
16. Considerazioni sulla sicurezza
Questo progetto è destinato esclusivamente alla ricerca sulla sicurezza autorizzata.
Il laboratorio dovrebbe:
Essere eseguito localmente.
Evitare l'esposizione pubblica.
Evitare credenziali reali.
Evitare dati utente reali.
Evitare test contro sistemi di terze parti.
Utilizzare account di test usa e getta.
Utilizzare una rete Docker isolata.
Distruggere l'ambiente vulnerabile dopo i test.
Esempio di pulizia:
docker compose down
17. Riferimenti
National Vulnerability Database — CVE-2024-31218
Webhood security advisory
Webhood/PocketBase source repository
Fixing commit associated with CVE-2024-31218
CWE-306 — Missing Authentication for Critical Function
FIRST CVSS v3.1 specification
18. Disclaimer
Questo repository è un progetto di educazione alla cybersecurity e ricerca sulle vulnerabilità.
La configurazione vulnerabile è intenzionalmente riprodotta per test controllati. Non deve essere distribuita come servizio accessibile pubblicamente.
L'autore non si assume alcuna responsabilità per l'uso non autorizzato delle tecniche o degli artefatti contenuti in questo repository.