
PoC Python et lab Docker pour CVE-2026-22599, une injection SQL authentifiée dans l'API d'écriture du Content-Type Builder de Strapi via le defaultTo brut de Knex.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Je suis @abraxas_null. Laboratoire en boucle locale. CVE-2026-22599-Abraxas-Labs.py se déplace dans lab/ et exécute run.sh.
Injection de requête de base de données via l'API d'écriture du Content-Type Builder. Yup valide mais ne supprime pas le column.defaultTo inconnu. Le constructeur de schéma fusionne [value, { isRaw: true }] dans le defaultTo(raw()) de Knex. Corrigé dans 5.33.2 / 4.26.1 en masquant les API d'écriture CTB en production.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critique : 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 |
| Produit | Strapi |
| Affecté | toutes les versions jusqu'à 5.33.1 (incluse) |
| Corrigé | 5.33.2 / 4.26.1 et ultérieures |
| Auth | authentifié |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement |
JWT administrateur authentifié. POST /content-type-builder/content-types avec une expression DEFAULT brute. L'insertion suivante sur ce type utilise le SQL de l'attaquant. L'oracle du lab est GHSA22599-WITNESS sur une nouvelle ligne labitem, pas un shell.
J'ai cartographié createColumn qui étale attribute.column sur defaultTo, puis isRaw appelant knex raw() sans assainissement. J'ai monté Strapi 5.33.1, enregistré un administrateur, publié le content type, inséré une ligne.
Contrôles d'échec déjà présents dans le lab : eval/base64/system n'est pas le témoin ; un reverse shell n'est pas le témoin ; 5.33.2 ne doit pas honorer le tuple brut.
Port 18098. Strapi 5.33.1. JWT administrateur. API d'écriture CTB accessible (pré-patch : également en production). ./run.sh.
Cible uniquement 127.0.0.1:18098 (ou la boucle locale que vous avez liée).
python3 CVE-2026-22599-Abraxas-Labs.py
Cela fait un chdir dans lab/ et exécute run.sh (compose up, attente de l'admin, puis poc.py).
Témoin : le JSON d'entrée du content-manager contient GHSA22599-WITNESS.
Façons d'échouer sans rien apprendre :
Mettez à jour Strapi vers 5.33.2 / 4.26.1 ou une version plus récente. Relancez CVE-2026-22599-Abraxas-Labs.py contre la version corrigée : le DEFAULT brut ne doit pas aboutir.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Voir LICENSE.
Le client communique avec la boucle locale. Son utilisation contre des systèmes que vous ne possédez pas n'est pas autorisée par Abraxas Labs. Aucune garantie.