
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.
12. Behebung und Verifizierung
Der offizielle Webhood-Fix für CVE-2024-31218 wurde unter Verwendung der tatsächlichen Webhood-`v0.9.1`-Quellversion verifiziert.
Der Fix-Commit ist:
`735e7fa2814edeec9a2c07778ed51b3c018609f9`
Der Fix fügt die Migration hinzu:
`src/backend/migrations/1712252550_generate_random_admin.js`
Die Migration prüft, ob bereits ein Administrator existiert. Wenn kein Administrator existiert, erstellt sie ein Administratorkonto mit einem zufällig generierten Passwort. Dies verhindert, dass ein nicht authentifizierter Anfragender den ersten Administrator über den exponierten `/api/admins`-Endpunkt beansprucht.
#### Verifizierungsverfahren
1. Der offizielle Webhood-`v0.9.1`-Quell-Tag wurde ausgecheckt.
2. Das Backend wurde lokal aus der offiziellen Quelle unter Verwendung seines Dockerfile erstellt.
3. Das resultierende Image wurde auf localhost an Port `8091` ausgeführt.
4. Dieselbe unauthentifizierte Anfrage zur Administratorerstellung, die gegen das anfällige Labor verwendet wurde, wurde erneut gegen das behobene Backend gesendet.
5. Die anfällige Umgebung akzeptierte die Anfrage zuvor mit HTTP `200`.
6. Das behobene `v0.9.1`-Backend lehnte dieselbe Anfrage mit HTTP `401` ab.
Beobachtete Antwort der behobenen Umgebung:
```text
HTTP status: 401
{"code":401,"message":"The request requires valid admin authorization token to be set.","data":{}}
Dies bestätigt, dass der zuvor demonstrierte Angriffspfad zur unauthentifizierten Administratorerstellung im lokal erstellten Webhood-v0.9.1-Backend blockiert wurde.
BEHEBUNG VERIFIZIERT: JA
Nachweis:
evidence/05-remediation-verified.png
13. Sicherheitsauswirkung
Eine erfolgreiche Ausnutzung kann einer unbefugten Partei administrative Berechtigungen verschaffen.
Mögliche Konsequenzen sind:
Unbefugter administrativer Zugriff
Änderung von Anwendungsdaten
Offenlegung von Anwendungsinformationen
Änderung oder Löschung von Datensätzen
Weiterer administrativer Missbrauch der Anwendung
Der Schweregrad wird daher gemäß der veröffentlichten CVSS-Bewertung als Kritisch eingestuft.
14. Nachweise
Das Verzeichnis evidence/ soll Screenshots enthalten, die Folgendes zeigen:
Start der anfälligen Anwendung
Status des Docker-Containers
Anfällige Version
Reproduktionsanfrage
Erfolgreiches anfälliges Verhalten
Erkennungsausgabe
Gepatchte Version
Fehlgeschlagene/blockierte Reproduktion nach der Behebung
Screenshots sollten keine echten Anmeldedaten, personenbezogenen Informationen, API-Schlüssel oder andere sensible Daten enthalten.
15. Einschränkungen
Während der Vorbereitung dieses Labors traten in der lokalen Windows-Umgebung Probleme beim Starten des Docker-Linux-Backends auf.
Windows gab zurück:
Error: 14098
The component store has been corrupted.
Die erforderlichen Windows-Features waren anfangs ebenfalls deaktiviert:
VirtualMachinePlatform
Microsoft-Windows-Subsystem-Linux
Daher muss jedes Reproduktionsergebnis oder jeder Screenshot genau unterscheiden zwischen:
Schwachstellenforschung
Laborkonfiguration
Beabsichtigtem Reproduktionsverfahren
Erfolgreich durchgeführter Reproduktion
Es sollte keine erfolgreiche Ausnutzung behauptet werden, es sei denn, sie wurde tatsächlich im isolierten Labor durchgeführt.
16. Sicherheitsüberlegungen
Dieses Projekt ist nur für autorisierte Sicherheitsforschung gedacht.
Das Labor sollte:
Lokal ausgeführt werden.
Öffentliche Exposition vermeiden.
Echte Anmeldedaten vermeiden.
Echte Benutzerdaten vermeiden.
Tests gegen Drittsysteme vermeiden.
Wegwerf-Testkonten verwenden.
Ein isoliertes Docker-Netzwerk verwenden.
Die anfällige Umgebung nach dem Testen zerstören.
Beispiel für die Bereinigung:
docker compose down
17. Referenzen
National Vulnerability Database — CVE-2024-31218
Webhood-Sicherheitshinweis
Webhood/PocketBase-Quell-Repository
Fix-Commit im Zusammenhang mit CVE-2024-31218
CWE-306 — Fehlende Authentifizierung für kritische Funktion
FIRST CVSS v3.1-Spezifikation
18. Haftungsausschluss
Dieses Repository ist ein Projekt zur Cybersicherheitsbildung und Schwachstellenforschung.
Die anfällige Konfiguration wird absichtlich für kontrollierte Tests reproduziert. Sie darf nicht als öffentlich zugänglicher Dienst bereitgestellt werden.
Der Autor übernimmt keine Verantwortung für die unbefugte Verwendung der in diesem Repository enthaltenen Techniken oder Artefakte.