Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sqlite-fts5-securedel — SQLite 3.53.4 - Alta - Local - Crash - FTS5 secure-delete PutVarint desbordamiento de footer | Kitploit
Herramientas/GitHubGitHub/abraxas/sqlite-fts5-securedel
Análisis EstáticoForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónFuzzingAnálisis de BinariosPapers e InvestigaciónSeguridad de Bases de Datos
GitHubabraxas/sqlite-fts5-securedel

sqlite-fts5-securedel

SQLite 3.53.4 - Alta - Local - Crash - FTS5 secure-delete PutVarint desbordamiento de footer

Ver Repositorio
11hace 5 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - sqlite-fts5-securedel

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

sqlite-fts5-securedel

Clase: Crash Alcance: Local

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) - Hwaci

fts5DoSecureDelete reconstruye un footer de hoja FTS5 con sqlite3Fts5PutVarint después de nPg = iPgIdx. Los offsets de clave decodificados del footer no están limitados contra el blob original, por lo que el cursor de PutVarint se sale de nn + FTS5_DATA_PADDING (20). Típico extra SQLITE_ENABLE_FTS5. La base de datos del ataque ya usaba secure-delete.

Esto es un remanente del posterior trunk Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA). Ese check-in es posterior a este GA. No es CVE-2026-11824: fts5LeafRead ya rechaza szLeaf<4 en este pin.

IDsin CVE todavía
ClaseCrash (escritura ASan de tamaño 1; RCE no demostrado)
AlcanceLocal (abrir una base de datos FTS5 manipulada, luego DELETE/flush)
CWECWE-787
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProductoSQLite (espejo en GitHub sqlite/sqlite)
Afectado3.53.4 SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Authninguna (archivo de índice no confiable)
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18860. Escritura en heap ASan. Sin payload de RCE.

Qué puede hacer un atacante

Abrir una base de datos FTS5 manipulada que ya usaba secure-delete, luego DELETE (o cualquier escritura que vacíe un secure-delete) para que fts5DoSecureDelete escriba varints de footer más allá de Fts5Data. Crash / escritura en heap ASan de tamaño 1. RCE no demostrado. No es CVE-2026-11824.

Solo MATCH no es este sink. El disparador es DELETE/flush. El archivo manipulado no necesita SQLITE_DBCONFIG_DEFENSIVE desactivado.

Cómo lo encontré

Veinte búsquedas en el código fuente de SQLite 3.53.4 tras otros pins de bases de datos y servidores HTTP. CVE-2026-11822 / CVE-2026-11824 está cerrado en este árbol (fts5LeafRead szLeaf<4). El límite posterior del trunk de YEONBA no lo está. El archivo fts5corruptB.test de 3.53.4 todavía termina en el test 3.2; el test 4.0 del trunk es el hexdb más 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 es un int de 32 bits. El trunk posterior conserva el nPg original, usa i64 iKeyIn y rechaza iKeyIn>nPg antes de PutVarint.

Caminos equivocados: tratar CVE-2026-11824 como este bug; MATCH en lugar de DELETE; un plant de CREATE/INSERT en vivo que mantenía szLeaf en rango y no desbordaba; llamar RCE a la cadena WAL-plus-FTS5 de Winter sin un payload.

Lab

cd lab
./run.sh

Amalgamación ASan del zip oficial sqlite-src-3530400, -DSQLITE_ENABLE_FTS5. Se requiere el hexdb lab/yeonba-fts5corruptB-4.hexdb (trunk fts5corruptB.test 4.0). Bind loopback 127.0.0.1:18860. Proyecto 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

Frames de ASan: fts5PutVarint64 -> sqlite3Fts5PutVarint -> fts5DoSecureDelete / fts5FlushSecureDelete.

La solución

Conservar el nPg original. Ampliar iKeyIn a i64. Rechazar iKeyIn>nPg antes de sqlite3Fts5PutVarint. Eso es Fossil 9cd4f9e920 / branch-3.53 34171bee08. Aplicarlo con cherry-pick sobre 3.53.

Referencias

  • https://sqlite.org/src tag version-3.53.4 Git b09c88c14082339b66c7b7158d609a771e64ca69
  • ext/fts5/fts5_index.c fts5DoSecureDelete, fts5FlushSecureDelete, fts5LeafRead
  • ext/fts5/fts5_varint.c sqlite3Fts5PutVarint
  • Corrección en trunk Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA)
  • CVE-2026-11824 es el padre cerrado szLeaf<4, no este remanente
Descargar herramienta