
Python PoC и Docker-лаборатория для CVE-2026-22599 — аутентифицированной SQL-инъекции в API записи Content-Type Builder в Strapi через Knex raw defaultTo.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-22599
Strapi 5.33.1 - Strapi
Я @abraxas_null. Loopback-лаборатория. Клиент — CVE-2026-22599-Abraxas-Labs.py.
Инъекция в запрос к базе данных через write API Content-Type Builder. Yup выполняет валидацию, но не удаляет неизвестный column.defaultTo. Schema builder объединяет [value, { isRaw: true }] в Knex defaultTo(raw()). Исправлено в 5.33.2 / 4.26.1 путём скрытия write API CTB в production.
| CVE | CVE-2026-22599 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critical: 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 |
| Продукт | Strapi |
| Затронуты | все версии по 5.33.1 (включительно) |
| Исправлено | 5.33.2 / 4.26.1 и новее |
| Аутентификация | требуется аутентификация |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
JWT администратора с аутентификацией. POST /content-type-builder/content-types с сырым выражением DEFAULT. Следующая вставка в этот тип использует SQL атакующего. Оракул лаборатории — GHSA22599-WITNESS в новой строке labitem, а не shell.
Я проследил, как createColumn распространяет attribute.column поверх defaultTo, а затем isRaw вызывает knex raw() без санитизации. Развернул Strapi 5.33.1, зарегистрировал администратора, отправил content type, вставил строку.
Fail-controls уже есть в лаборатории: eval/base64/system — не свидетель; reverse shell — не свидетель; 5.33.2 не должен принимать сырой кортеж.
Порт 18098. Strapi 5.33.1. JWT администратора. Write API CTB доступен (до патча: также в production). ./run.sh.
Цель — только 127.0.0.1:18098 (или loopback, который вы привязали).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-22599-Abraxas-Labs.py
Свидетель: JSON записи content-manager содержит GHSA22599-WITNESS.
Способы проиграть, ничего не узнав:
Обновите Strapi до 5.33.2 / 4.26.1 или новее. Перезапустите CVE-2026-22599-Abraxas-Labs.py против пропатченной сборки: сырой DEFAULT не должен примениться.
github.com/strapi/strapi/security/advisories/GHSA-3xcq-8mjw-h6mx
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. См. LICENSE.
Клиент обращается к loopback. Использование его против систем, которыми вы не владеете, не разрешено Abraxas Labs. Без гарантий.