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-xfer-auth — SQLite 3.53.4 - Alta - Local - Privilegio residual - INSERT SELECT xfer omite la lectura de origen | Kitploit
Herramientas/GitHubGitHub/abraxas/sqlite-xfer-auth
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónVirtualización de SeguridadPapers e InvestigaciónSeguridad de Bases de DatosLabs y Práctica
GitHubabraxas/sqlite-xfer-auth

sqlite-xfer-auth

SQLite 3.53.4 - Alta - Local - Privilegio residual - INSERT SELECT xfer omite la lectura de origen

Ver Repositorio
22hace 9 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-xfer-auth

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

Análisis: https://abraxaslabs.tech/research/sqlite-xfer-auth

sqlite-xfer-auth

Clase: Privilegio residual Alcance: Local

SQLite 3.53.4 (b09c88c, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) todavía toma la ruta rápida xferOptimization para INSERT INTO dest SELECT * FROM src. sqlite3AuthCheck es SQLITE_INSERT solo sobre dest. La copia nunca llama a sqlite3Select ni a sqlite3AuthRead por columna sobre src. SELECT * FROM src es denegado. El INSERT SELECT copia el testigo. El registro del autorizador es INSERT:dest.

El autorizador está desactivado a menos que el embedder instale uno. No es RCE. DRH trató Fossil d1cdb817 como una funcionalidad de 3.54, no como un bugfix de 3.53. 3.54.0 sigue en borrador.

IDaún sin CVE
ClasePrivilegio residual (copia de tabla con READ denegado)
AlcanceLocal (embedder sqlite3_set_authorizer)
CWECWE-863
CVSSAlto: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProductoSQLite (Hwaci)
Afectado3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
AuthSQL local contra un autorizador instalado que DENIEGA READ/SELECT sobre src y permite INSERT sobre dest
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18850

Qué puede hacer un atacante

Preparar INSERT INTO dest SELECT * FROM src cuando dest es compatible a nivel de esquema y se permite INSERT. Los registros B-tree en bruto salen de una tabla origen con READ denegado y aterrizan en dest. Un SELECT * FROM src simple devuelve SQLITE_AUTH. La ruta xfer no compila el SELECT, por lo que SQLITE_SELECT sobre el origen, SQLITE_READ a nivel de tabla y sqlite3AuthRead por columna nunca se disparan.

Requiere un embedder que haya instalado sqlite3_set_authorizer como puerta de control de acceso para SQL no confiable / ACL por columna. La biblioteca por defecto tiene ese callback en NULL. No es RCE.

Cómo lo encontré

La misma caza de Crit/Alto sobre 3.53.4 que los otros residuales de esta GA. El autorizador está documentado en sqlite3_set_authorizer. La autorización de INSERT es solo sobre la tabla dest (insert.c:969). xfer se toma antes de sqlite3Select() (insert.c:1020-1038). xferOptimization copia registros. Grep de insert.c en este pin: un sqlite3AuthCheck, ningún sqlite3AuthRead. SQLITE_OMIT_XFER_OPT no es un flag de compilación por defecto.

Foro 2026-05-21T03:31:22Z. Trunk d1cdb817cafd03a4 es solo para 3.54. DRH: nueva funcionalidad, no irá a branch-3.53.

Laboratorio

cd lab
./run.sh

Compila la amalgama 3.53.4 más lab/xfer_auth.c. Compone sqlite-xfer-auth. Enlaza 127.0.0.1:18850. El oráculo es JSON del autorizador en proceso: SELECT * FROM src denegado; INSERT INTO dest SELECT * FROM src ok; dest tiene SQLITE-XFER-AUTH-WITNESS; las acciones de inserción son solo INSERT:dest.

SUCCESS sqlite-xfer-auth how=xfer-opt-skip-src-read select-src=denied insert-select=ok dest-has-witness=yes SQLITE-XFER-AUTH-WITNESS

La solución

Autoriza el origen tal como lo hace 3.54 d1cdb817: si hay un autorizador registrado, xferOptimization debe realizar sqlite3AuthCheck SELECT/READ sobre src (o rechazar la ruta rápida y pasar a sqlite3Select). Hasta entonces, los embedders que DENIEGAN READ sobre una tabla todavía tienen que DENEGAR INSERT en cualquier dest compatible, o compilar con -DSQLITE_OMIT_XFER_OPT.

Referencias

  • sqlite.org/src etiqueta version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/insert.c sqlite3AuthCheck INSERT dest, xferOptimization antes de sqlite3Select
  • Foro 2026-05-21T03:31:22Z · check-in d1cdb817cafd03a4
  • sqlite3_set_authorizer
Descargar herramienta