
PoC Python e laboratorio Docker per CVE-2026-22599, un'iniezione SQL autenticata nella write API del Content-Type Builder di Strapi tramite il defaultTo raw di Knex.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Sono @abraxas_null. Laboratorio loopback. Il client è CVE-2026-22599-Abraxas-Labs.py.
Injection di query al database tramite la write API del Content-Type Builder. Yup valida ma non rimuove il campo sconosciuto column.defaultTo. Il schema builder unisce [value, { isRaw: true }] nel defaultTo(raw()) di Knex. Corretto in 5.33.2 / 4.26.1 nascondendo le write API del CTB in produzione.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critico: 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 |
| Prodotto | Strapi |
| Affette | tutte le versioni fino alla 5.33.1 (inclusa) |
| Corrette | 5.33.2 / 4.26.1 e successive |
| Auth | autenticato |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
JWT di amministratore autenticato. POST /content-type-builder/content-types con un'espressione DEFAULT raw. Il successivo insert su quel tipo utilizza SQL dell'attaccante. L'oracolo del lab è GHSA22599-WITNESS su una nuova riga labitem, non una shell.
Ho mappato createColumn che propaga attribute.column su defaultTo, poi isRaw che chiama knex raw() senza sanitizzazione. Ho avviato Strapi 5.33.1, registrato l'admin, inviato il content type, inserito una riga.
Controlli di fallimento già presenti nel lab: eval/base64/system non è il witness; una reverse shell non è il witness; la 5.33.2 non deve onorare la tupla raw.
Porta 18098. Strapi 5.33.1. JWT di amministratore. Write API del CTB raggiungibile (pre-patch: anche in produzione). ./run.sh.
Target solo 127.0.0.1:18098 (o il loopback su cui l'hai associato).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Witness: il JSON dell'entry del content-manager contiene GHSA22599-WITNESS.
Modi per perdere senza imparare nulla:
Aggiorna Strapi alla 5.33.2 / 4.26.1 o superiore. Riesegui CVE-2026-22599-Abraxas-Labs.py contro la build corretta: il DEFAULT raw non deve essere applicato.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Vedi LICENSE.
Il client comunica con il loopback. Usarlo contro sistemi che non possiedi non è autorizzato da Abraxas Labs. Nessuna garanzia.