
Erkennungs-, Verifikations- und Incident-Response-Toolkit für CVE-2026-85097: Remote-Bricksforge-Bewertung, Log-IOC-Suche, Dateisystem-Implantat-Audit sowie Sigma- und WAF-Regeln.
Nicht authentifizierter beliebiger Datei-Upload → RCE im Bricksforge-WordPress-Plugin
Toolkit zur Erkennung, Verifizierung und Incident-Response für CVE-2026-85097, einen CVSS 10.0
nicht authentifizierten beliebigen Datei-Upload im Bricksforge-Plugin
für WordPress, das aktiv in freier Wildbahn ausgenutzt wird.
Ein Skript, drei Modi: ein Ziel aus der Ferne bewerten, historische Logs auf Ausnutzung durchsuchen und ein Web-Root auf abgelegte Implants prüfen.
____ _ _ _ __ ___ _ _
| __ ) _ __(_) | _| | __/ _| ___ _ __ __ _ / _ \ ___| | _| | ___ _ __
| _ \| '__| | |/ / |/ / |_ / _ \| '__/ _` | | | / __| |/ / |/ _ \| '_ \
| |_) | | | | <| <| _| (_) | | | (_| | |_| \__ \ <| | (_) | | | |
|____/|_| |_|_|\_\_|\_\_| \___/|_| \__, |\___/|___/_|\_\_|\___/|_| |_|
|___/
CVE-2026-85097 | Unauthenticated Arbitrary File Upload -> RCE
CVSS 10.0 CRITICAL | Bricksforge <= 3.1.8.9 | Fixed 3.1.8.10
| Feld | Wert |
|---|---|
| CVE | CVE-2026-85097 |
| Produkt | Bricksforge (WordPress-Plugin, Addon für Bricks Builder) |
| Typ | Nicht authentifizierter beliebiger Datei-Upload → Remote Code Execution |
| CWE | CWE-434: Unrestricted Upload of File with Dangerous Type |
| CVSS | 10.0 CRITICAL: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H (Vektor abgeleitet, siehe Einschränkungen) |
| Authentifizierung | Keine |
| Betroffen | <= 3.1.8.9 |
| Behoben | 3.1.8.10 (in der Presse referenzierte Hersteller-Release-Linie: 4.0.1) |
| Ausnutzung | AKTIV IN DER WILDNIS |
| Erstmals beobachtet | 2026-10-07 21:47:17 UTC |
| Installationen | ~6.000 |
| Beobachtete Quell-IPs | 63 eindeutige (Top 6 ≈ 46 % der Anfragen) |
| Primärer Endpunkt | POST /wp-json/bricksforge/v1/form_submit |
| Fallback-Endpunkt | POST /wp-admin/admin-ajax.php (action=bricksforge_form_submit) |
| Implantat-Benennung | login_admin_*.php |
[!CAUTION] Nur zur autorisierten Verwendung. Dieses Tool ist für zulässige Sicherheitsbewertungen, defensive Validierung und Incident Response gedacht. Das Ausführen aktiver Tests gegen ein System, das Ihnen nicht gehört oder für das Sie keine schriftliche Testgenehmigung haben, ist in den meisten Rechtsordnungen illegal. Siehe SAFETY-AND-LEGAL.md.
Bricksforge erweitert Bricks Builder um erweiterte Formulare,
Animationen und dynamische Daten. Die Funktion Pro Forms akzeptiert Datei-Uploads. Das Plugin
validiert den MIME-Typ einer Datei korrekt beim ersten Upload, aber wenn das
Formular später übermittelt wird, vertraut es auf die vom Client gesendeten Dateimetadaten und validiert
niemals das Feld url innerhalb des Parameters temporaryFileUploads.
Diese eine fehlende Prüfung verwandelt einen harmlosen Bild-Upload in nicht authentifizierte Remote
Code Execution. Ein Angreifer benötigt kein Konto, kein CSRF-Token, das er nicht selbst erzeugen
kann, und keine Benutzerinteraktion. Patchstack beobachtete die Ausnutzung beginnend
2026-10-07 21:47:17 UTC von 63 eindeutigen Quell-IPs aus Rechenzentrums-, Cloud-, VPN- und
Wohn-Infrastruktur.
file (der serverseitige Pfad, der auf MIME geprüft wurde) und url (das Ziel, in das das Plugin
schreiben wird) sind entkoppelt. Das Plugin liest die vom Client gelieferte url zum
Zeitpunkt der Übermittlung erneut und schreibt die zwischengespeicherten Bytes dorthin.
{
"temporaryFileUploads": [
{
"field": "form-field-file",
"file": {
"file": "/var/www/example.com/wp-content/uploads/bricksforge/tmp/img_example.gif",
"url": "https://example.com/wp-content/uploads/bricksforge/tmp/img_example.php",
"type": "image/gif"
}
}
]
}
Die Signatur ist die Diskrepanz: Der serverseitige Pfad ist eine .gif, die Ziel-URL ist eine .php. In 95 % der erfassten Anfragen endete der serverseitige Pfad auf .gif oder .png.
| Datei | Rolle |
|---|---|
wp-content/plugins/bricksforge/includes/elements/pro-forms/actions/init.php | Injektionspunkt: vom Client gelieferte Metadaten (einschließlich url) werden ohne Validierung in den Form-Action-Kontext eingefügt. |
wp-content/plugins/bricksforge/includes/elements/pro-forms/actions/base.php | Sink: Die vertrauenswürdigen Metadaten steuern den abschließenden Dateischreibvorgang, sodass der Angreifer den Dateinamen und die Erweiterung des Ziels auf der Festplatte kontrolliert. |
| # | Schritt | Beobachtbar |
|---|---|---|
| 1 | Unauthentifizierten Nonce beschaffen: POST /wp-admin/admin-ajax.php mit action=bricksforge_regenerate_nonce. Keine Authentifizierung erforderlich; liefert einen gültigen Nonce. | admin-ajax.php-Anfrage mit action=bricksforge_regenerate_nonce |
| 2 | GIF/PHP-Polyglot hochladen: ein gültiges Bild, das zugleich PHP-Code enthält. Die MIME-Validierung wird hier durchgeführt, sodass es durchkommt und in wp-content/uploads/bricksforge/tmp/ landet. | Multipart-Upload, der in /wp-content/uploads/bricksforge/tmp/ schreibt |
| 3 | Formular mit nicht übereinstimmenden Metadaten absenden: file verweist auf die validierte .gif, url endet auf .php. | form_submit-Anfrage mit temporaryFileUploads |
| 4 | Das Plugin schreibt die Inhalte an den PHP-Ort → RCE. Der Aufruf dieser URL führt den eingebetteten Code aus: Web-Shells, Inhaltsmanipulation, Datendiebstahl, Persistenz. | HTTP-GET auf eine neu erstellte .php-Datei unter einem Uploads-Verzeichnis |
Angreifer suchen aktiv nach Wegen, die Erweiterungsfilterung zu umgehen. Vier Familien: