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

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

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

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

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

Категории

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

sqlite-session-ncol

SQLite 3.53.4 — высокий — локальный — запись за границы кучи — рост nCol в changeset сессии с одинаковыми именами

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

Популярное

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

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

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

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

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

Abraxas Labs - sqlite-session-ncol

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

Разбор: https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

Класс: запись за границы кучи (heap OOB write) Доступ: локальный

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) с -DSQLITE_ENABLE_SESSION. Changeset из двух блоков, который повторно использует имя таблицы t с nCol=2, а затем nCol=64, пропускает сброс sessionTableInfo (sqlite3session.c:5619) и выполняет memset за пределами aUpdateMask первого блока. ASan WRITE размера 12 в sessionUpdateFind. Контрольный одиночный 2-колоночный UPDATE apply-rc=0.

Не является стандартной амальгамацией, если SESSION не включён. NPD CVE-2026-50812 закрыт в 3.53.2+. Это не готовый к применению RCE-пейлоад. Оракулом служит ASan WRITE.

IDCVE пока нет
Классзапись за границы кучи (ASan WRITE размера 12; RCE не продемонстрирован)
ДоступЛокальный (недоверенный changeset через sqlite3changeset_apply*)
CWECWE-787
CVSSВысокий: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ПродуктSQLite Session extra (Hwaci)
Затронуто3.53.4 (b09c88c), собранный с -DSQLITE_ENABLE_SESSION
Аутентификацияхост применяет недоверенный changeset
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18900. Свидетельство ASan WRITE-of-size-12.

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

Применить недоверенный changeset, второй блок таблицы которого повторно использует имя таблицы с большим nCol. Запись за границы кучи. Дополнительный модуль компиляции. Не является стандартной амальгамацией, если SESSION не включён.

Первый блок выделяет aUpdateMask по pIter->nCol. Последующий блок с тем же именем пропускает сброс sessionTableInfo и выполняет memset большего размера поверх старого выделения. Лаборатория: nCol=2, затем nCol=64 UPDATE. ASan WRITE размера 12 в sessionUpdateFind. Контрольный одиночный 2-колоночный UPDATE apply-rc=0.

Не следует рассматривать этот набор как гаджет write-what-where. Оракулом служит ASan WRITE-of-size-12.

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

Двадцать поисков по исходникам SQLite 3.53.4 после волны FTS5 / session-NPD в 3.53.2. CVE-2026-50812 закрыт (sessionBindRow трактует отсутствующее значение как SQLITE_CORRUPT). Session по-прежнему привязывает SessionApplyCtx только к имени таблицы. Второй блок с тем же именем и большим объявленным числом колонок повторно использует aUpdateMask.

Уже зафиксированные ошибочные пути: считать стандартную амальгамацию входящей в область (SESSION выключен); повторно подавать CVE-2026-50812; отправлять один блок таблицы с nCol=64 против 2-колоночной схемы (schemaMismatch, записи нет); заявлять RCE из-за 12-байтового memset.

Лаборатория

cd lab
./run.sh

ASan-амальгамация из официального zip-архива sqlite-src-3530400. Дополнительная компиляция с -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK. Проверка работоспособности на 127.0.0.1:18900. Привязка к loopback.

SUCCESS sqlite-session-ncol how=asan-heap-write-sessionUpdateFind write-size=12 control-apply-rc=0 SQLITE-SESSION-NCOL-WITNESS

Исправление

Когда блок таблицы более позднего набора изменений повторно использует имя, пересоздайте SessionApplyCtx так же, как это уже делается для нового имени: освободите aUpdateMask, повторно выполните sessionTableInfo, откажитесь от nCol, превышающего живую схему. Trunk 3f57024aec / branch-3.53 a1dd7123d8 (2026-08-17) выпущен после этой GA-версии.

Ссылки

  • https://sqlite.org/src тег version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619, sessionUpdateFind :4381-4412
  • Форум https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 NPD в session закрыт в 3.53.2+
Скачать инструмент