
Python-PoC und Docker-Lab für CVE-2026-22599, eine authentifizierte SQL-Injection in Strapis Content-Type-Builder-Write-API über Knex raw defaultTo.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Ich bin @abraxas_null. Loopback-Lab. Der Client ist CVE-2026-22599-Abraxas-Labs.py.
Content-Type Builder Write-API Datenbank-Query-Injection. Yup validiert, entfernt aber unbekanntes column.defaultTo nicht. Der Schema-Builder führt [value, { isRaw: true }] in Knex defaultTo(raw()) zusammen. Behoben in 5.33.2 / 4.26.1 durch Ausblenden der CTB-Write-APIs in der Produktion.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Kritisch: 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N |
| Produkt | Strapi |
| Betroffen | alle Versionen bis einschließlich 5.33.1 |
| Gepatcht | 5.33.2 / 4.26.1 und später |
| Auth | authentifiziert |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Authentifiziertes Administrator-JWT. POST /content-type-builder/content-types mit einem rohen DEFAULT-Ausdruck. Der nächste Insert auf diesem Typ verwendet Angreifer-SQL. Das Lab-Orakel ist GHSA22599-WITNESS auf einer neuen labitem-Zeile, keine Shell.
Ich habe nachvollzogen, wie createColumn attribute.column über defaultTo verteilt und dann isRaw knex raw() unsanitisiert aufruft. Strapi 5.33.1 aufgesetzt, Admin registriert, den Content-Type gepostet, eine Zeile eingefügt.
Fail-Controls sind bereits im Lab vorhanden: eval/base64/system ist nicht der Witness; eine Reverse Shell ist nicht der Witness; 5.33.2 darf das rohe Tupel nicht akzeptieren.
Port 18098. Strapi 5.33.1. Administrator-JWT. CTB-Write-API erreichbar (vor dem Patch: auch in der Produktion). ./run.sh.
Ziel ausschließlich 127.0.0.1:18098 (oder das Loopback, an das du gebunden hast).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Witness: Die Content-Manager-Eintrags-JSON enthält GHSA22599-WITNESS.
Wege zu verlieren, ohne etwas zu lernen:
Aktualisiere Strapi auf 5.33.2 / 4.26.1 oder neuer. Führe CVE-2026-22599-Abraxas-Labs.py erneut gegen den gepatchten Build aus: Das rohe DEFAULT darf nicht landen.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Siehe LICENSE.
Der Client kommuniziert mit Loopback. Die Verwendung gegen Systeme, die dir nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.