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-session-ncol — SQLite 3.53.4 - Alta - Local - escritura fuera de límites en el heap - crecimiento de nCol con el mismo nombre en el changeset de la sesión | Kitploit
Herramientas/GitHubGitHub/abraxas/sqlite-session-ncol
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónFuzzingAnálisis de BinariosPapers e InvestigaciónSeguridad de Bases de Datos
GitHubabraxas/sqlite-session-ncol

sqlite-session-ncol

SQLite 3.53.4 - Alta - Local - escritura fuera de límites en el heap - crecimiento de nCol con el mismo nombre en el changeset de la sesión

Ver Repositorio
20hace 8 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-session-ncol

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

Análisis: https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

Clase: escritura OOB en el heap Alcance: Local

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) con -DSQLITE_ENABLE_SESSION. Un changeset de dos bloques que reutiliza el nombre de tabla t con nCol=2 y luego nCol=64 omite el reinicio de sessionTableInfo (sqlite3session.c:5619) y hace memset más allá del aUpdateMask del primer bloque. Escritura ASan de tamaño 12 en sessionUpdateFind. Control: aplicación de un único UPDATE de 2 columnas con apply-rc=0.

No es una amalgamación por defecto a menos que SESSION esté activado. CVE-2026-50812 NPD está cerrado en 3.53.2+. No es una carga útil RCE weaponizada. El oráculo es la escritura ASan.

IDaún sin CVE
Claseescritura OOB en el heap (escritura ASan de tamaño 12; RCE no demostrado)
AlcanceLocal (changeset no confiable vía sqlite3changeset_apply*)
CWECWE-787
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProductoSQLite Session extra (Hwaci)
Afectado3.53.4 (b09c88c) compilado con -DSQLITE_ENABLE_SESSION
Autenticaciónel host aplica un changeset no confiable
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18900. Testigo de escritura ASan de tamaño 12.

Qué puede hacer un atacante

Aplicar un changeset no confiable cuyo segundo bloque de tabla reutiliza un nombre de tabla con un nCol mayor. Escritura OOB en el heap. Extra de compilación. No es una amalgamación por defecto a menos que SESSION esté activado.

El primer bloque asigna aUpdateMask a partir de pIter->nCol. El bloque posterior con el mismo nombre omite el reinicio de sessionTableInfo y hace memset de una máscara mayor sobre la asignación antigua. Laboratorio: UPDATE con nCol=2 y luego nCol=64. Escritura ASan de tamaño 12 en sessionUpdateFind. Control: aplicación de un único UPDATE de 2 columnas con apply-rc=0.

No trates este paquete como un gadget write-what-where. La escritura ASan de tamaño 12 es el oráculo.

Cómo lo encontré

Veinte búsquedas en el código fuente de SQLite 3.53.4 tras la oleada de FTS5 / session-NPD de 3.53.2. CVE-2026-50812 está cerrado (sessionBindRow trata un valor ausente como SQLITE_CORRUPT). Session sigue indexando SessionApplyCtx solo por nombre de tabla. Un segundo bloque con el mismo nombre y un recuento de columnas declarado mayor reutiliza aUpdateMask.

Pistas falsas ya registradas: tratar la amalgamación por defecto como dentro del alcance (SESSION está desactivado); volver a presentar CVE-2026-50812; enviar un único bloque de tabla con nCol=64 contra un esquema de 2 columnas (schemaMismatch, sin escritura); afirmar RCE a partir de un memset de 12 bytes.

Laboratorio

cd lab
./run.sh

Amalgamación de ASan a partir del zip oficial sqlite-src-3530400. Compilar con -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK adicionales. Health en 127.0.0.1:18900. Vincularlo a loopback.

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

La corrección

Cuando un bloque de tabla de changeset posterior reutiliza un nombre, reconstruir SessionApplyCtx de la misma forma en que ya lo hace un nombre nuevo: liberar aUpdateMask, volver a ejecutar sessionTableInfo, rechazar un nCol mayor que el esquema activo. Trunk 3f57024aec / branch-3.53 a1dd7123d8 (2026-08-17) es posterior a esta GA.

Referencias

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619, sessionUpdateFind :4381-4412
  • Foro https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 session NPD está cerrado en 3.53.2+
Descargar herramienta