Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
sqlite-cte-nest — SQLite 3.53.4 — высокий — локальный — сбой — вложенные CTE обходят ограничение глубины представления nNestSel | Kitploit
Инструменты/GitHubGitHub/abraxas/sqlite-cte-nest
Статический анализАнализ уязвимостейЭксплуатацияФаззингСтатьи и ИсследованияБезопасность Баз Данных
GitHubabraxas/sqlite-cte-nest

sqlite-cte-nest

SQLite 3.53.4 — высокий — локальный — сбой — вложенные CTE обходят ограничение глубины представления nNestSel

Репозиторий
6 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - sqlite-cte-nest

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-cte-nest

sqlite-cte-nest

Класс: Crash Доступ: Локальный

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

sqlite3ResultSetOfSelect увеличивает nNestSel и выдаёт ошибку VIEWs and/or subqueries nested too deep, когда цепочка достигает SQLITE_LIMIT_EXPR_DEPTH. Вложенные VIEW на этой сборке уже упираются в этот предел. Присоединение CTE в select.c:5754 (sqlite3SrcItemAttachSubquery) не увеличивает nNestSel. Затем selectExpander / sqlite3WalkSelect рекурсивно обходят цепочку CTE, пока не погибнет стек C.

Небольшая цепочка CTE возвращает строку. Вложенный FROM при N=25000 — это Recursion limit парсера, и он не падает. Вложенные VIEW при .limit expr_depth 20 выдают ошибку too-deep. CTE N=25000 — это переполнение стека ASan. Не RCE.

IDCVE пока нет
КлассCrash (переполнение стека ASan в selectExpander; RCE не продемонстрирован)
ДоступЛокальный (недоверенный SQL или схема с вложенными CTE)
CWECWE-674
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ПродуктSQLite (зеркало на GitHub sqlite/sqlite)
Затронуто3.53.4 (b09c88c); остаток от более позднего trunk CTE nNestSel
Аутентификациянедоверенный SQL или внедрённая цепочка WITH
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18810. ASan-амальгама. Свидетельство падения.

Что может сделать атакующий

Подать длинную цепочку CTE — как SQL или как тело VIEW в недоверенном .db:

WITH c0 AS (SELECT 1),
     c1 AS (SELECT * FROM c0),
     ...
     cN AS (SELECT * FROM cN-1)
SELECT * FROM cN;

selectExpander обходит каждый CTE как вложенный подзапрос FROM. nNestSel при этом не меняется. Процесс-хост погибает на стеке C. Вложенные VIEW уже ограничены. Вложенный FROM упирается в предел рекурсии парсера. Этот остаток — путь присоединения CTE. SQLite не вычисляет имена CTE в оболочку. Падение, не RCE.

Как я это нашёл

Двадцать поисков по исходникам https://github.com/sqlite/sqlite тега https://github.com/sqlite/sqlite/releases/tag/version-3.53.4. Вложенные VIEW на этой сборке были ограничены (3f3fb9b638 / branch-3.53 38430aa5ed, 2026-06-16). Присоединение CTE — нет. Trunk f547308713 (2026-10-05) идёт после этого GA.

Уже зафиксированные ложные пути: трактовка вложенных VIEW как причины падения (они выдают ошибку too-deep); трактовка вложенного FROM N=25000 как причины падения (Recursion limit парсера); принятие цепочки из 5 CTE за доказательство применимости ограничения.

Лаборатория

cd lab
./run.sh

Официальный zip sqlite-src-3530400, ASan-амальгама, compose sqlite-cte-nest, опубликован на 127.0.0.1:18810. Привяжите его к loopback. Не направляйте это на чужой SQLite.

SUCCESS sqlite-cte-nest how=asan-stack-overflow crash-n=25000 small-cte=ok nested-views=too-deep nested-from=rejected SQLITE-CTE-NEST-WITNESS

Исправление

Увеличивать nNestSel при присоединении CTE так же, как sqlite3ResultSetOfSelect уже делает для VIEW, и выдавать ошибку при SQLITE_LIMIT_EXPR_DEPTH. Trunk f547308713 (2026-10-05, "Limit the depth of recursion for CTEs using SQLITE_LIMIT_EXPR_DEPTH") — это патч такого класса. В 3.53.4 его нет.

Ссылки

  • https://github.com/sqlite/sqlite тег https://github.com/sqlite/sqlite/releases/tag/version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Канонический https://sqlite.org/src SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
  • src/select.c sqlite3ResultSetOfSelect (nNestSel++), присоединение CTE :5754
  • src/walker.c sqlite3WalkSelectFrom обход подзапроса
  • selectExpander / sqlite3SelectExpand
  • Баг на форуме 2026-10-04T04:58:58Z; trunk f547308713
Скачать инструмент