Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sqlite-xfer-auth — SQLite 3.53.4 - Élevé - Local - Résidu de privilège - INSERT SELECT xfer ignore la lecture de la source | Kitploit
Outils/GitHubGitHub/abraxas/sqlite-xfer-auth
Analyse des VulnérabilitésAnalyse de CodeExploitationVirtualisation de SécuritéArticles et RechercheSécurité des Bases de DonnéesLabs et Pratique
GitHubabraxas/sqlite-xfer-auth

sqlite-xfer-auth

SQLite 3.53.4 - Élevé - Local - Résidu de privilège - INSERT SELECT xfer ignore la lecture de la source

Voir le dépôt
22il y a 8 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - sqlite-xfer-auth

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

Write-up : https://abraxaslabs.tech/research/sqlite-xfer-auth

sqlite-xfer-auth

Classe : Privilège résiduel Portée : Locale

SQLite 3.53.4 (b09c88c, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) emprunte toujours le chemin rapide xferOptimization pour INSERT INTO dest SELECT * FROM src. sqlite3AuthCheck ne porte que sur SQLITE_INSERT sur dest. La copie n'appelle jamais sqlite3Select ni sqlite3AuthRead par colonne sur src. SELECT * FROM src est refusé. L'INSERT SELECT copie le témoin. Le journal de l'authorizer affiche INSERT:dest.

L'authorizer est désactivé sauf si l'embedder en installe un. Pas de RCE. DRH a traité Fossil d1cdb817 comme une fonctionnalité de la 3.54, pas comme un correctif de la 3.53. La 3.54.0 est encore en brouillon.

IDpas encore de CVE
ClassePrivilège résiduel (copie de table refusée en READ)
PortéeLocale (embedder sqlite3_set_authorizer)
CWECWE-863
CVSSÉlevé : 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProduitSQLite (Hwaci)
Affecté3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
AuthSQL local contre un authorizer installé qui refuse READ/SELECT sur src et autorise INSERT sur dest
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18850 uniquement

Ce qu'un attaquant peut faire

Préparer INSERT INTO dest SELECT * FROM src lorsque dest est compatible au niveau du schéma et que INSERT est autorisé. Des enregistrements B-tree bruts quittent une table source refusée en READ et atterrissent dans dest. Un simple SELECT * FROM src renvoie SQLITE_AUTH. Le chemin xfer ne compile pas le SELECT, donc SQLITE_SELECT sur la source, SQLITE_READ au niveau de la table et sqlite3AuthRead par colonne ne se déclenchent jamais.

Nécessite un embedder qui a installé sqlite3_set_authorizer comme barrière ACL pour le SQL non fiable / les colonnes. La bibliothèque par défaut a ce callback à NULL. Pas de RCE.

Comment je l'ai trouvé

Même chasse Crit/High sur la 3.53.4 que les autres résidus de cette GA. L'authorizer est documenté à sqlite3_set_authorizer. L'auth INSERT ne porte que sur la table dest (insert.c:969). Le xfer est emprunté avant sqlite3Select() (insert.c:1020-1038). xferOptimization copie les enregistrements. Grep de insert.c sur ce pin : un seul sqlite3AuthCheck, aucun sqlite3AuthRead. SQLITE_OMIT_XFER_OPT n'est pas un flag de build par défaut.

Forum 2026-05-21T03:31:22Z. Le trunk d1cdb817cafd03a4 est réservé à la 3.54. DRH : nouvelle fonctionnalité, ne sera pas intégrée à la branche 3.53.

Lab

cd lab
./run.sh

Compile l'amalgamation 3.53.4 plus lab/xfer_auth.c. Compose sqlite-xfer-auth. Lie 127.0.0.1:18850. L'oracle est le JSON de l'authorizer in-process : SELECT * FROM src refusé ; INSERT INTO dest SELECT * FROM src ok ; dest contient SQLITE-XFER-AUTH-WITNESS ; les actions d'insertion sont uniquement 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

Le correctif

Autorisez la source comme le fait la version 3.54 d1cdb817 : si un authorizer est enregistré, xferOptimization doit effectuer un sqlite3AuthCheck SELECT/READ sur src (ou refuser le chemin rapide et basculer vers sqlite3Select). D'ici là, les intégrateurs qui refusent (DENY) la lecture (READ) sur une table doivent toujours refuser (DENY) l'insertion (INSERT) dans toute destination (dest) compatible, ou compiler avec -DSQLITE_OMIT_XFER_OPT.

Références

  • sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/insert.c sqlite3AuthCheck INSERT dest, xferOptimization avant sqlite3Select
  • Forum 2026-05-21T03:31:22Z · check-in d1cdb817cafd03a4
  • sqlite3_set_authorizer
Télécharger l’outil