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

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

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

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

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

Категории

Все категории
Loading categories
sqlite-fts5-securedel — SQLite 3.53.4 — высокий — локальный — сбой — переполнение PutVarint в footer при secure-delete в FTS5 | Kitploit
Инструменты/GitHubGitHub/abraxas/sqlite-fts5-securedel
Статический анализКриминалистика памятиАнализ уязвимостейЭксплуатацияФаззингАнализ Бинарных ФайловСтатьи и ИсследованияБезопасность Баз Данных
GitHubabraxas/sqlite-fts5-securedel

sqlite-fts5-securedel

SQLite 3.53.4 — высокий — локальный — сбой — переполнение PutVarint в footer при secure-delete в FTS5

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

Популярное

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

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

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

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

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

Abraxas Labs - sqlite-fts5-securedel

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

Разбор: https://abraxaslabs.tech/research/sqlite-fts5-securedel

sqlite-fts5-securedel

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

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) - Hwaci

fts5DoSecureDelete перестраивает footer листа FTS5 с помощью sqlite3Fts5PutVarint после nPg = iPgIdx. Смещения ключей, декодированные из footer, не ограничиваются размером исходного blob, поэтому курсор PutVarint выходит за пределы nn + FTS5_DATA_PADDING (20). Обычно требуется дополнительный SQLITE_ENABLE_FTS5. В атакующей базе данных уже использовался secure-delete.

Это остаток от более позднего коммита в trunk Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA). Этот коммит появился после данного GA-релиза. Это не CVE-2026-11824: fts5LeafRead уже отклоняет szLeaf<4 на этой ревизии.

IDCVE пока нет
КлассCrash (запись ASan размером 1; RCE не продемонстрирован)
ДоступЛокальный (открыть специально сформированную базу FTS5, затем DELETE/flush)
CWECWE-787
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 SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Аутентификацияне требуется (недоверенный файл индекса)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18860. Запись в кучу под ASan. Без RCE-пейлоада.

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

Открыть специально сформированную базу FTS5, в которой уже использовался secure-delete, затем выполнить DELETE (или любую запись, вызывающую сброс secure-delete), чтобы fts5DoSecureDelete записал varint footer за пределы Fts5Data. Падение / запись в кучу под ASan размером 1. RCE не продемонстрирован. Это не CVE-2026-11824.

Только MATCH не приводит к этому стоку. Триггером является DELETE/flush. Сформированному файлу не требуется отключённый SQLITE_DBCONFIG_DEFENSIVE.

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

Двадцать поисков по исходникам SQLite 3.53.4 после других ревизий баз данных и HTTP-серверов. CVE-2026-11822 / CVE-2026-11824 закрыты в этом дереве (fts5LeafRead szLeaf<4). Более поздняя граница trunk от YEONBA — нет. Файл fts5corruptB.test из 3.53.4 по-прежнему заканчивается на тесте 3.2; тест 4.0 в trunk — это hexdb плюс DELETE FROM t WHERE rowid = 1.

iPgIdx -= nShift;
nPg = iPgIdx;
fts5PutU16(&aPg[2], iPgIdx);

for(iIdx=0; iIdx<nIdx; /* no-op */){
  u32 iVal = 0;
  iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
  iKeyIn += iVal;
  if( iKeyIn!=iDelKeyOff ){
    int iKeyOut = (iKeyIn - (iKeyIn>iOff ? nShift : 0));
    nPg += sqlite3Fts5PutVarint(&aPg[nPg], iKeyOut - iPrevKeyOut);
    iPrevKeyOut = iKeyOut;
  }
}

ext/fts5/fts5_index.c:5514-5544. iKeyIn — это 32-битный int. В более поздней версии trunk сохраняется исходный nPg, используется i64 iKeyIn, и iKeyIn>nPg отклоняется до PutVarint.

Неверные пути: трактовка CVE-2026-11824 как этой ошибки; MATCH вместо DELETE; живой стенд CREATE/INSERT, который удерживал szLeaf в допустимых пределах и не вызывал переполнения; называть цепочку Winter's WAL-plus-FTS5 RCE без полезной нагрузки.

Лаборатория

cd lab
./run.sh

ASan-амальгамация из официального zip-архива sqlite-src-3530400, -DSQLITE_ENABLE_FTS5. Требуется Hexdb lab/yeonba-fts5corruptB-4.hexdb (trunk fts5corruptB.test 4.0). Привязка к loopback 127.0.0.1:18860. Проект Compose sqlite-fts5-securedel.

SUCCESS sqlite-fts5-securedel how=asan-heap-buffer-overflow-write-1-fts5DoSecureDelete db=yeonba-hexdb bytes=5120 SQLITE-FTS5-SECUREDEL-WITNESS

Кадры ASan: fts5PutVarint64 -> sqlite3Fts5PutVarint -> fts5DoSecureDelete / fts5FlushSecureDelete.

Исправление

Сохранить исходное значение nPg. Расширить iKeyIn до i64. Отклонять iKeyIn>nPg до вызова sqlite3Fts5PutVarint. Это Fossil 9cd4f9e920 / branch-3.53 34171bee08. Применить его (cherry-pick) на 3.53.

Ссылки

  • https://sqlite.org/src тег version-3.53.4 Git b09c88c14082339b66c7b7158d609a771e64ca69
  • ext/fts5/fts5_index.c fts5DoSecureDelete, fts5FlushSecureDelete, fts5LeafRead
  • ext/fts5/fts5_varint.c sqlite3Fts5PutVarint
  • Исправление в транке Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA)
  • CVE-2026-11824 — это закрытый родительский случай szLeaf<4, а не этот остаточный
Скачать инструмент