Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sqlite-fj-using-auth — SQLite 3.53.4 - Hoch - Lokal - Privilegien-Rest - FULL JOIN USING überspringt sqlite3AuthRead | Kitploit
Tools/GitHubGitHub/abraxas/sqlite-fj-using-auth
Authentifizierung & AutorisierungPrivilege EscalationStatische AnalyseSchwachstellenanalyseCode-AnalyseExploitationPapers & ForschungDatenbanksicherheit
GitHubabraxas/sqlite-fj-using-auth

sqlite-fj-using-auth

SQLite 3.53.4 - Hoch - Lokal - Privilegien-Rest - FULL JOIN USING überspringt sqlite3AuthRead

Repository anzeigen
6vor 6 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - sqlite-fj-using-auth

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

sqlite-fj-using-auth

Klasse: Privilegien-Überbleibsel Reichweite: Lokal

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

lookupName() schreibt eine FULL JOIN USING-Spalte in coalesce(...) (TK_FUNCTION) um. sqlite3AuthRead läuft nur für TK_COLUMN / TK_TRIGGER, daher erhalten USING-Spalten niemals einen SQLITE_READ-Callback. Ein Embedder, der sqlite3_set_authorizer installiert und READ auf t2.x verweigert/ignoriert, liefert diese Spalte dennoch über SELECT x FROM t1 FULL JOIN t2 USING(x) zurück.

Der Authorizer ist beim Standard-Öffnen deaktiviert. Überbleibsel dieser C-API. Kein RCE. FULL JOIN ON und LEFT JOIN USING bleiben verweigert / kein Leak. Explizites coalesce(t2.x) autorisiert weiterhin.

IDnoch keine CVE
KlassePrivilegien-Überbleibsel (Authorizer-Überspringen auf Spaltenebene)
ReichweiteLokal (Embedder sqlite3_set_authorizer; Angreifer-SQL)
CWECWE-863, CWE-284
CVSSHoch: 7.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProduktSQLite (GitHub-Mirror sqlite/sqlite)
Betroffen3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69). Der nur in 3.54 enthaltene Authorizer-FULL-JOIN-USING-Fix (2cb2287768) ist nicht in dieser GA-Version.
AuthEmbedder hat sqlite3_set_authorizer installiert; Standard-Callback ist NULL
LizenzGNU Affero GPL v3.0
LabNur 127.0.0.1:18840. Witness-String. Kein RCE.

Was ein Angreifer tun kann

Gegen einen Embedder, der sqlite3_set_authorizer als Spalten-ACL installiert hat, bereite SELECT x FROM t1 FULL JOIN t2 USING(x) vor (oder NATURAL FULL JOIN). Ein bloßes SELECT x FROM t2 wird verweigert (SQLITE_AUTH 23). Die FULL JOIN USING-Form liefert die READ-verweigerte Spalte zurück. Es feuern null READ t2.x-Callbacks.

Der Authorizer ist deaktiviert, sofern der Embedder keinen installiert. Das Standard-sqlite3_open ist nicht dieses Überbleibsel. Kein RCE.

Wie ich es gefunden habe

Zwanzig Quellcode-Suchen in 3.53.4 nach PHP. Die Skip-Liste nannte bereits den 3.54-FULL-JOIN-USING-Authorizer-Check-in. Er fehlt noch in der neuesten GA-Version. pExpr->op ist TK_FUNCTION bei lookupname_end, daher läuft das AuthRead-Gate nie. WRC_Prune hindert den Walker zudem daran, in die coalesce-Argumente abzusteigen.

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

Bereits dokumentierte Irrwege: den Authorizer als standardmäßig aktiv zu betrachten; zu erwarten, dass LEFT JOIN USING oder FULL JOIN ON leaken; zu erwarten, dass explizites coalesce(t2.x) AuthRead überspringt; 3.54.0 zu pinnen, während es noch ein Entwurf war.

Lab

cd lab
./run.sh

Baut die offizielle sqlite-src-3530400-Amalgamation. Harness ist lab/auth.c. Loopback 127.0.0.1:18840. Authorizer DENY READ t2.x. SELECT x FROM t2 verweigert. SELECT x FROM t1 FULL JOIN t2 USING(x) liefert den Witness, 0 READ t2.x. FULL JOIN ON verweigert. LEFT JOIN USING kein Leak. IGNORE-Baseline ist NULL; IGNORE FULL JOIN USING leakt weiterhin.

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

Der Fix

Schleife sqlite3AuthRead über jedes pFJMatch-Kind nach der coalesce-Umschreibung, so wie es der Trunk 2cb2287768 / Git 5694c3bb für 3.54 tut. Nur a[0] zu autorisieren (bbd69ce274) reicht nicht. LEFT JOIN USING und FULL JOIN ON autorisieren bereits; sie sind nicht dieses Überbleibsel.

Referenzen

  • sqlite.org/src Tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/resolve.c lookupName coalesce-Umschreibung und AuthRead-Gate
  • src/auth.c sqlite3AuthRead / sqlite3AuthReadCol
  • Forum 2026-07-24T02:52:08Z / 2026-05-31T02:00:37Z
Tool herunterladen