
Docker-basiertes Lab zur Reproduktion von CVE-2024-31218, einer nicht authentifizierten PocketBase-Admin-Erstellungs-Schwachstelle in Webhood, mit PoC, Erkennung und Verifizierung der Behebung.
Dieses Projekt ist ein kontrolliertes Sicherheitsforschungs- und Schwachstellenreproduktionslabor für CVE-2024-31218, eine kritische Authentifizierungsschwachstelle, die Webhood-Versionen vor 0.9.1 betrifft.
Die Schwachstelle steht im Zusammenhang mit der unauthentifizierten Erstellung eines PocketBase-Administratorkontos, wenn kein Administratorkonto existiert. Ein Angreifer, der die betroffene API erreichen kann, könnte in der Lage sein, ein Administratorkonto ohne vorherige Authentifizierung zu erstellen.
Das Ziel dieses Labs ist es:
Sicherheit: Dieses Projekt ist nur für eine isolierte lokale Laborumgebung gedacht. Die anfällige Anwendung darf niemals dem öffentlichen Internet ausgesetzt oder gegen Systeme ohne Autorisierung verwendet werden.
| Feld | Details |
|---|---|
| CVE | CVE-2024-31218 |
| Projekt | Webhood |
| Betroffene Versionen | Webhood <= 0.9.0 |
| Behobene Version | Webhood 0.9.1 |
| Schweregrad | Kritisch |
| CVSS v3.1 | 9.8 |
| CWE | CWE-306 — Fehlende Authentifizierung für kritische Funktion |
| Angriffsvektor | Netzwerk |
| Angriffskomplexität | Niedrig |
| Erforderliche Berechtigungen | Keine |
| Benutzerinteraktion | Keine |
| Vertraulichkeit | Hoch |
| Integrität | Hoch |
| Verfügbarkeit | Hoch |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
2. Beschreibung der Schwachstelle
CVE-2024-31218 wird durch unzureichenden Authentifizierungsschutz rund um die Administratorerstellung in der betroffenen Webhood/PocketBase-Anwendung verursacht.
Wenn in der Anwendung kein Administratorkonto konfiguriert ist, kann die Administratorerstellungsfunktionalität ohne Authentifizierung erreicht werden.
Ein Angreifer, der die betroffene API erreichen kann, kann daher versuchen, das erste Administratorkonto zu erstellen.
Eine erfolgreiche Ausnutzung kann zu administrativem Zugriff auf die Anwendung führen.
Die Schwachstelle ist klassifiziert als:
CWE-306: Fehlende Authentifizierung für kritische Funktion
3. Betroffene und behobene Versionen
Der anfällige Bereich ist:
Webhood <= 0.9.0
Die Schwachstelle wurde behoben in:
Webhood 0.9.1
Die gepatchte Version sollte daher zur Verifizierung der Behebung verwendet werden.
4. Angriffsfläche
Die relevante Angriffsfläche ist die administrative PocketBase-API.
Die anfällige Funktionalität betrifft die Erstellung von Administratorkonten.
Konzeptionell ist der Angriffsablauf:
Angreifer
|
| HTTP-Anfrage
v
Webhood / PocketBase API
|
| Endpunkt zur Administratorerstellung
v
Erstellung des Administratorkontos
|
v
Unbefugter administrativer Zugriff
Der Angriff erfordert keine bestehende authentifizierte Sitzung, wenn die anfällige Bedingung des initialen Administrators vorliegt.
5. Grundursache
Die Grundursache ist ein Fehler bei der Authentifizierungskontrolle.
Die Funktionalität zur Administratorerstellung schränkte den Zugriff nicht ausreichend ein, wenn kein Administratorkonto existierte.
Die Sicherheitsgrenze sollte sicherstellen, dass privilegierte administrative Funktionalität nicht von einem nicht authentifizierten Remote-Client missbraucht werden kann.
Das anfällige Verhalten stellt daher eine fehlende Authentifizierungsprüfung rund um eine sicherheitsrelevante Operation dar.
6. Kontrollierte Laborarchitektur
Das Labor reproduziert das Verhalten der administrativen PocketBase-API,
das CVE-2024-31218 zugrunde liegt.
Die Docker-Umgebung verwendet die PocketBase-Komponente direkt, anstatt
zu behaupten, die vollständige Webhood-0.9.0-Anwendung zu paketieren.
Die Laborarchitektur ist:
+-------------------------+
| Host Machine |
| |
| PowerShell / Python |
+------------+------------+
|
| 127.0.0.1:8090
v
+-------------------------+
| Docker Container |
| |
| +-------------------+ |
| | PocketBase | |
| | Administrative API| |
| +-------------------+ |
| |
+-------------------------+
Der Dienst ist nur an localhost gebunden und soll nicht dem öffentlichen
Internet ausgesetzt werden.
Alle während der Reproduktion verwendeten Anmeldedaten sind synthetische Labor-Anmeldedaten.
7. Repository-Struktur
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. Anfällige Umgebung
Die anfällige Umgebung ist darauf ausgelegt, das Verhalten der administrativen
PocketBase-API, das mit CVE-2024-31218 verbunden ist, in einem isolierten
Docker-Container zu reproduzieren.
Das Labor verwendet PocketBase direkt als betroffene Komponente, anstatt
zu behaupten, die vollständige Webhood-0.9.0-Anwendung zu reproduzieren.
Die Docker-Konfiguration wird:
- Die Laborumgebung erstellen.
- PocketBase lokal starten.
- Den Dienst an localhost binden.
- Den Dienst von externen Systemen isoliert halten.
- Eine reproduzierbare Umgebung für Tests bereitstellen.
- Dem Reproduktionsskript die Interaktion mit der administrativen API ermöglichen.
Das aktuelle Labor verwendet ein synthetisches Administratorkonto und enthält
keine echten Benutzerdaten oder Anmeldedaten.
9. Reproduktionsmethodik
Das Reproduktionsverfahren ist nur für das lokale Labor gedacht.
Schritt 1 — Den anfälligen Container starten
docker compose up --build
Schritt 2 — Den Dienst überprüfen
Bestätigen Sie, dass der PocketBase-Dienst, der für das Labor auf Komponentenebene verwendet wird, lokal antwortet.
Schritt 3 — Das kontrollierte Reproduktionsskript ausführen
Das Reproduktionsskript sendet die relevante Anfrage an die lokale anfällige Instanz.
Beispiel:
python exploit/reproduce.py
Schritt 4 — Die Antwort beobachten
Die Antwort sollte zeigen, ob die Anwendung die unauthentifizierte Anfrage zur Administratorerstellung akzeptiert.
Schritt 5 — Den resultierenden Zustand überprüfen
Das Labor sollte überprüfen, ob ein Administratorkonto erstellt wurde.
Es sollte niemals ein externes Ziel verwendet werden.
10. Erkennung
Die Erkennung sollte Indikatoren identifizieren, die mit unbefugten Versuchen zur Administratorerstellung verbunden sind.
Mögliche Indikatoren sind:
Anfragen an die Funktionalität zur Administratorerstellung
Nicht authentifizierte Anfragen an administrative Endpunkte
Unerwartete Erstellung eines ersten Administratorkontos
HTTP-Anfragen von einem unerwarteten Client
Wiederholte Versuche zur Administratorerstellung
Erstellung eines Administratorkontos unmittelbar nach der Initialisierung der Anwendung
Das Erkennungsskript befindet sich in:
detection/detect.py
11. Behebung
Die primäre Behebung besteht darin, Webhood auf die behobene Version zu aktualisieren:
Webhood 0.9.1
Die anfällige Version sollte nicht in der Produktion verwendet werden.
Ein dokumentierter Workaround besteht darin, den Zugriff auf die betroffene administrative API-Funktionalität einzuschränken, wenn ein Upgrade nicht sofort durchgeführt werden kann.
Nach der Behebung:
Den anfälligen Container stoppen.
Die anfällige Version durch die behobene Version ersetzen.
Den Container neu erstellen.
Die gepatchte Umgebung starten.
Den Reproduktionsversuch wiederholen.
Bestätigen, dass das anfällige Verhalten nicht mehr möglich ist.
Die Anwendungsprotokolle auf unerwartete administrative Anfragen überprüfen.