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-fj-using-auth — SQLite 3.53.4 - Alta - Locale - Privilegio residuo - FULL JOIN USING salta sqlite3AuthRead | Kitploit
Strumenti/GitHubGitHub/abraxas/sqlite-fj-using-auth
Autenticazione e AutorizzazioneEscalation di PrivilegiAnalisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceExploitPaper e RicercaSicurezza dei Database
GitHubabraxas/sqlite-fj-using-auth

sqlite-fj-using-auth

SQLite 3.53.4 - Alta - Locale - Privilegio residuo - FULL JOIN USING salta sqlite3AuthRead

Vedi Repository
66 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-fj-using-auth

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

sqlite-fj-using-auth

Classe: Privilegio residuo Portata: Locale

SQLite 3.53.4 (b09c88c / SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) - Hwaci

lookupName() riscrive una colonna FULL JOIN USING in coalesce(...) (TK_FUNCTION). sqlite3AuthRead viene eseguito solo per TK_COLUMN / TK_TRIGGER, quindi le colonne USING non ricevono mai una callback SQLITE_READ. Un embedder che ha installato sqlite3_set_authorizer e nega/ignora READ su t2.x restituisce comunque quella colonna tramite SELECT x FROM t1 FULL JOIN t2 USING(x).

L'authorizer è disattivato all'apertura predefinita. Residuo di quell'API C. Non è RCE. FULL JOIN ON e LEFT JOIN USING restano negati / nessuna fuga. coalesce(t2.x) esplicito viene comunque autorizzato.

IDnessuna CVE al momento
ClassePrivilegio residuo (salto dell'authorizer a livello di colonna)
PortataLocale (embedder sqlite3_set_authorizer; SQL dell'attaccante)
CWECWE-863, CWE-284
CVSSAlto: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProdottoSQLite (mirror GitHub sqlite/sqlite)
Affetto3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69). La correzione dell'authorizer FULL JOIN USING presente solo nella 3.54 (2cb2287768) non è in questa GA.
Authembedder ha installato sqlite3_set_authorizer; la callback predefinita è NULL
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18840. Stringa witness. Non è RCE.

Cosa può fare un attaccante

Contro un embedder che ha installato sqlite3_set_authorizer come ACL a livello di colonna, preparare SELECT x FROM t1 FULL JOIN t2 USING(x) (o NATURAL FULL JOIN). Il semplice SELECT x FROM t2 viene negato (SQLITE_AUTH 23). La forma FULL JOIN USING restituisce la colonna con READ negato. Zero callback READ t2.x vengono attivate.

L'authorizer è disattivato a meno che l'embedder non ne installi uno. Il sqlite3_open predefinito non presenta questo residuo. Non è RCE.

Come l'ho trovato

Venti ricerche nel sorgente della 3.53.4 dopo PHP. La skip list aveva già indicato il check-in dell'authorizer FULL JOIN USING della 3.54. È ancora assente nell'ultima GA. pExpr->op è TK_FUNCTION in lookupname_end, quindi il gate AuthRead non viene mai eseguito. Anche WRC_Prune impedisce al walker di scendere negli argomenti di coalesce.

lookupname_end:
  if( cnt==1 ){
#ifndef SQLITE_OMIT_AUTHORIZATION
    if( pParse->db->xAuth
     && (pExpr->op==TK_COLUMN || pExpr->op==TK_TRIGGER)
    ){
      sqlite3AuthRead(pParse, pExpr, pSchema, pNC->pSrcList);
    }
#endif

Vicoli ciechi già registrati: considerare l'authorizer attivo di default; aspettarsi che LEFT JOIN USING o FULL JOIN ON causino una fuga; aspettarsi che coalesce(t2.x) esplicito salti AuthRead; fissare la 3.54.0 mentre era ancora in bozza.

Lab

cd lab
./run.sh

Compila l'amalgamazione ufficiale sqlite-src-3530400. L'harness è lab/auth.c. Loopback 127.0.0.1:18840. Authorizer DENY READ t2.x. SELECT x FROM t2 negato. SELECT x FROM t1 FULL JOIN t2 USING(x) restituisce il witness, 0 READ t2.x. FULL JOIN ON negato. LEFT JOIN USING nessuna fuga. La baseline IGNORE è NULL; IGNORE FULL JOIN USING causa comunque la fuga.

SUCCESS sqlite-fj-using-auth how=full-join-using-skip-authread baseline=denied fj-using=witness fj-on=denied left-using=no-leak SQLITE-FJ-USING-AUTH-WITNESS

La correzione

Iterare sqlite3AuthRead su ogni figlio di pFJMatch dopo la riscrittura in coalesce, come fa il trunk 2cb2287768 / Git 5694c3bb per la 3.54. Autorizzare solo a[0] (bbd69ce274) non è sufficiente. LEFT JOIN USING e FULL JOIN ON autorizzano già; non sono questo residuo.

Riferimenti

  • sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/resolve.c riscrittura in coalesce di lookupName e gate AuthRead
  • src/auth.c sqlite3AuthRead / sqlite3AuthReadCol
  • Forum 2026-07-24T02:52:08Z / 2026-05-31T02:00:37Z
Scarica lo strumento