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
9hace 6 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

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 está 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ó el Fossil d1cdb817 como una característica de 3.54, no como un bugfix de 3.53. 3.54.0 sigue siendo un 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
Labsolo 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 INSERT está permitido. Los registros B-tree en bruto salen de una tabla origen con READ denegado y aterrizan en dest. Un SELECT * FROM src simple es 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 la puerta de ACL de SQL no confiable / columnas. La biblioteca por defecto tiene ese callback en NULL. No es RCE.

Cómo lo encontré

La misma caza de Crit/High sobre 3.53.4 que los otros residuales en esta GA. El autorizador está documentado en sqlite3_set_authorizer. La autenticació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 una bandera de compilación por defecto.

Foro 2026-05-21T03:31:22Z. El trunk d1cdb817cafd03a4 es solo para 3.54. DRH: nueva característica, no va a la rama 3.53.

Lab

cd lab
./run.sh

Compila la amalgama 3.53.4 más lab/xfer_auth.c. Compose sqlite-xfer-auth. Bind 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

Autorizar el origen de la forma en que lo hace d1cdb817 en 3.54: si hay un autorizador registrado, xferOptimization debe hacer sqlite3AuthCheck de SELECT/READ sobre src (o rechazar la ruta rápida y caer 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 tag 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