Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sqlite-collate-depth — SQLite 3.53.4 - Alto - Locale - Crash - La catena COLLATE salta SQLITE_LIMIT_EXPR_DEPTH | Kitploit
Strumenti/GitHubGitHub/abraxas/sqlite-collate-depth
Analisi StaticaAnalisi delle VulnerabilitàExploitFuzzingSicurezza dei Database
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 - Alto - Locale - Crash - La catena COLLATE salta SQLITE_LIMIT_EXPR_DEPTH

Vedi Repository
16 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - sqlite-collate-depth

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

sqlite-collate-depth

Classe: Crash Reach: Locale

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

L'azione grammaticale COLLATE non chiama mai sqlite3ExprCheckHeight. sqlite3ExprAddCollateToken alloca un nodo TK_COLLATE con nHeight ancora a 1, poi aggancia l'espressione precedente a pLeft. Gli operatori ordinari passano attraverso sqlite3PExpr e ottengono il valore documentato SQLITE_LIMIT_EXPR_DEPTH (predefinito 1000). Questo operatore no.

Il walker ricorre comunque su ogni pLeft. EP_Skip è per l'affinità, non per sqlite3WalkExprNN. Una catena di 50 nodi restituisce 1. Anche 8k e 40k, oltre il limite di profondità. 120k causano uno stack-overflow ASan in sqlite3WalkExprNN (rc=134). Non è RCE.

L'albero canonico è https://sqlite.org/src. GitHub sqlite/sqlite è un mirror Fossil. Zip ufficiale sqlite-src-3530400. Libreria di pubblico dominio. Questo pacchetto è AGPLv3.

IDnessuna CVE al momento
ClasseCrash (stack-overflow ASan in sqlite3WalkExprNN; RCE non dimostrato)
ReachLocale (SQL non attendibile o una VIEW impiantata)
CWECWE-674, CWE-770
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProdottoSQLite 3.53.4
Affetto3.53.4 (b09c88c); residuo del successivo controllo di altezza COLLATE sul trunk
AuthSQL non attendibile o VIEW; load_extension predefinito resta disattivato
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18800. Amalgamation ASan. Crash witness.

Cosa può fare un attaccante

Fornire una lunga catena postfissa COLLATE BINARY come SQL, oppure impiantarla in una VIEW all'interno di un .db non attendibile. Il processo host percorre la catena e muore sullo stack C. Il limite documentato di profondità delle espressioni non viene mai applicato a questo operatore.

SELECT 1 COLLATE BINARY COLLATE BINARY ... è sufficiente. Stessa forma in CREATE VIEW v AS SELECT 1 COLLATE BINARY ... poi SELECT * FROM v su una connessione nuova. Il valore predefinito SQLITE_LIMIT_SQL_LENGTH (1e9) contiene la catena da ~1,8 MB che ha causato l'overflow di uno stack da 8 MB in questo lab.

Si tratta di un crash del processo embedder. Non è controllo dell'instruction pointer. load_extension resta disattivato.

Come l'ho trovato

Venti ricerche nel sorgente del tag SQLite version-3.53.4 dopo OpenLiteSpeed. Ultima GA, non la bozza 3.54.0. sqlite.org/security.html tratta SQL non attendibile e .db non attendibile come first-class. load_extension predefinito è disattivato.

parse.y per COLLATE è di tre righe:

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

sqlite3ExprAddCollateToken imposta pNew->pLeft = pExpr e EP_Collate|EP_Skip. sqlite3ExprAlloc ha lasciato nHeight = 1. Nessun sqlite3ExprCheckHeight. sqlite3PExpr fa entrambe queste cose per ogni altro operatore binario.

Vicoli ciechi: considerare 8k COLLATE come il crash (restituiva 1); considerare 40k come il crash (restituiva anch'esso 1, ben oltre SQLITE_LIMIT_EXPR_DEPTH 1000); servivano 120k prima che ASan morisse in sqlite3WalkExprNN.

Questo è G1 di quattordici residui sul pin. I fratelli sono altri post.

Lab

cd lab
./run.sh

Amalgamation ASan dall'ufficiale sqlite-src-3530400 (clone di fallback del tag version-3.53.4). Compose sqlite-collate-depth. HTTP fittizio su 127.0.0.1:18800. Associalo al loopback.

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

50 COLLATE restituisce 1. Anche 8k e 40k restituiscono 1. 120k muore rc=134, stack-overflow ASan in sqlite3WalkExprNN. Il controllo del pin è SELECT sqlite_version() / SELECT sqlite_source_id().

La correzione

Chiamare sqlite3ExprCheckHeight sul nodo COLLATE dopo aver agganciato pLeft, come fa già sqlite3PExpr. Ricalcolare nHeight dal figlio. Un operatore postfisso è comunque un albero di espressioni.

Il trunk 252c0b7bf5 (2026-10-04) è successivo a questa GA.

Riferimenti

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (mirror Fossil) tree https://github.com/sqlite/sqlite/tree/version-3.53.4
  • Zip ufficiale https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y azione COLLATE
  • src/expr.c sqlite3ExprAddCollateToken, sqlite3ExprAlloc (nHeight = 1), sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c sqlite3WalkExprNN
  • src/sqliteLimit.h SQLITE_MAX_EXPR_DEPTH predefinito 1000
  • CWE-674 Uncontrolled Recursion
  • CWE-770 Allocation of Resources Without Limits or Throttling
Scarica lo strumento