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-collate-depth — SQLite 3.53.4 - Élevé - Local - Crash - La chaîne COLLATE ignore SQLITE_LIMIT_EXPR_DEPTH | Kitploit
Outils/GitHubGitHub/abraxas/sqlite-collate-depth
Analyse StatiqueAnalyse des VulnérabilitésExploitationFuzzingSécurité des Bases de Données
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 - Élevé - Local - Crash - La chaîne COLLATE ignore SQLITE_LIMIT_EXPR_DEPTH

Voir le dépôt
1il y a 6 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-collate-depth

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

sqlite-collate-depth

Classe : Crash Portée : Locale

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

L'action de grammaire COLLATE n'appelle jamais sqlite3ExprCheckHeight. sqlite3ExprAddCollateToken alloue un nœud TK_COLLATE avec nHeight toujours à 1, puis accroche l'expression précédente à pLeft. Les opérateurs ordinaires passent par sqlite3PExpr et obtiennent la limite documentée SQLITE_LIMIT_EXPR_DEPTH (1000 par défaut). Cet opérateur, non.

Le walker récurse toujours sur chaque pLeft. EP_Skip concerne l'affinité, pas sqlite3WalkExprNN. Une chaîne de 50 nœuds renvoie 1. Il en va de même pour 8k et 40k, au-delà de la limite de profondeur. 120k provoque un débordement de pile ASan dans sqlite3WalkExprNN (rc=134). Pas de RCE.

L'arbre canonique est https://sqlite.org/src. GitHub sqlite/sqlite est un miroir Fossil. Zip officiel sqlite-src-3530400. Bibliothèque du domaine public. Ce pack est sous AGPLv3.

IDpas encore de CVE
ClasseCrash (débordement de pile ASan dans sqlite3WalkExprNN ; RCE non démontré)
PortéeLocale (SQL non fiable ou une VIEW plantée)
CWECWE-674, CWE-770
CVSSÉlevé : 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProduitSQLite 3.53.4
Affecté3.53.4 (b09c88c) ; reliquat de la vérification de hauteur COLLATE du trunk ultérieur
AuthSQL non fiable ou VIEW ; load_extension reste désactivé par défaut
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18800 uniquement. Amalgamation ASan. Témoin de crash.

Ce qu'un attaquant peut faire

Fournir une longue chaîne postfixe COLLATE BINARY en SQL, ou la planter dans une VIEW à l'intérieur d'un .db non fiable. Le processus hôte parcourt la chaîne et meurt sur la pile C. La limite documentée de profondeur d'expression ne s'applique jamais à cet opérateur.

SELECT 1 COLLATE BINARY COLLATE BINARY ... suffit. Même forme dans CREATE VIEW v AS SELECT 1 COLLATE BINARY ... puis SELECT * FROM v sur une nouvelle connexion. Le SQLITE_LIMIT_SQL_LENGTH par défaut (1e9) contient la chaîne d'environ 1,8 Mo qui a débordé une pile de 8 Mo dans ce lab.

Il s'agit d'un crash du processus intégrateur. Ce n'est pas un contrôle du pointeur d'instruction. load_extension reste désactivé.

Comment je l'ai trouvé

Vingt recherches dans les sources du tag SQLite version-3.53.4 après OpenLiteSpeed. Dernière GA, pas le brouillon 3.54.0. sqlite.org/security.html traite le SQL non fiable et le .db non fiable comme des cas de première classe. load_extension est désactivé par défaut.

parse.y pour COLLATE fait trois lignes :

expr(A) ::= expr(A) COLLATE ids(C). {
  A = sqlite3ExprAddCollateToken(pParse, A, &C, 1);
}

sqlite3ExprAddCollateToken définit pNew->pLeft = pExpr et EP_Collate|EP_Skip. sqlite3ExprAlloc a laissé nHeight = 1. Pas de sqlite3ExprCheckHeight. sqlite3PExpr fait ces deux choses pour tous les autres opérateurs binaires.

Fausses pistes : traiter 8k COLLATE comme le crash (il a renvoyé 1) ; traiter 40k comme le crash (il a aussi renvoyé 1, bien au-delà de SQLITE_LIMIT_EXPR_DEPTH 1000) ; nécessité de 120k avant qu'ASan ne meure dans sqlite3WalkExprNN.

C'est le G1 de quatorze reliquats sur le pin. Les frères sont d'autres posts.

Lab

cd lab
./run.sh

Amalgamation ASan depuis le sqlite-src-3530400 officiel (clone de secours du tag version-3.53.4). Compose sqlite-collate-depth. HTTP factice sur 127.0.0.1:18800. Le lier à loopback.

SUCCESS sqlite-collate-depth how=asan-stack-overflow control=50 crash-n=120000 SQLITE-COLLATE-DEPTH-WITNESS

50 COLLATE renvoie 1. 8k et 40k renvoient aussi 1. 120k meurt rc=134, débordement de pile ASan dans sqlite3WalkExprNN. La vérification du pin est SELECT sqlite_version() / SELECT sqlite_source_id().

Le correctif

Appeler sqlite3ExprCheckHeight sur le nœud COLLATE après avoir attaché pLeft, comme le fait déjà sqlite3PExpr. Recalculer nHeight à partir de l'enfant. Un opérateur postfixe est toujours un arbre d'expression.

Le trunk 252c0b7bf5 (2026-10-04) est postérieur à cette GA.

Références

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (miroir Fossil) arbre https://github.com/sqlite/sqlite/tree/version-3.53.4
  • Zip officiel https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y action COLLATE
  • src/expr.c sqlite3ExprAddCollateToken, sqlite3ExprAlloc (nHeight = 1), sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c sqlite3WalkExprNN
  • src/sqliteLimit.h SQLITE_MAX_EXPR_DEPTH par défaut 1000
  • CWE-674 Récursion non contrôlée
  • CWE-770 Allocation de ressources sans limites ni limitation
Télécharger l’outil