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-collate-depth — SQLite 3.53.4 – Hoch – Lokal – Absturz – COLLATE-Kette überschreitet SQLITE_LIMIT_EXPR_DEPTH | Kitploit
Tools/GitHubGitHub/abraxas/sqlite-collate-depth
Statische AnalyseSchwachstellenanalyseExploitationFuzzingDatenbanksicherheit
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 – Hoch – Lokal – Absturz – COLLATE-Kette überschreitet SQLITE_LIMIT_EXPR_DEPTH

Repository anzeigen
1vor 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-collate-depth

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

sqlite-collate-depth

Klasse: Crash Reichweite: Lokal

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

Die COLLATE-Grammatikaktion ruft niemals sqlite3ExprCheckHeight auf. sqlite3ExprAddCollateToken allokiert einen TK_COLLATE-Knoten mit nHeight noch auf 1 und hängt dann den vorherigen Ausdruck an pLeft. Gewöhnliche Operatoren laufen durch sqlite3PExpr und erhalten das dokumentierte SQLITE_LIMIT_EXPR_DEPTH (Standard 1000). Dieser Operator nicht.

Der Walker rekursiert weiterhin auf jedem pLeft. EP_Skip ist für Affinität, nicht für sqlite3WalkExprNN. Eine 50-Knoten-Kette gibt 1 zurück. Ebenso 8k und 40k, jenseits des Tiefenlimits. 120k führt zu einem ASan-Stack-Overflow in sqlite3WalkExprNN (rc=134). Kein RCE.

Der kanonische Baum ist https://sqlite.org/src. GitHub sqlite/sqlite ist ein Fossil-Mirror. Offizielles Zip sqlite-src-3530400. Public-Domain-Bibliothek. Dieses Paket ist AGPLv3.

IDnoch keine CVE
KlasseCrash (ASan-Stack-Overflow in sqlite3WalkExprNN; kein nachgewiesenes RCE)
ReichweiteLokal (nicht vertrauenswürdiges SQL oder eine eingeschleuste VIEW)
CWECWE-674, CWE-770
CVSSHoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProduktSQLite 3.53.4
Betroffen3.53.4 (b09c88c); Überbleibsel der späteren Trunk-COLLATE-Höhenprüfung
Authnicht vertrauenswürdiges SQL oder VIEW; Standard-load_extension bleibt aus
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1:18800. ASan-Amalgamation. Crash-Witness.

Was ein Angreifer tun kann

Eine lange Postfix-COLLATE BINARY-Kette als SQL einspeisen oder sie in einer VIEW innerhalb einer nicht vertrauenswürdigen .db platzieren. Der Host-Prozess durchläuft die Kette und stirbt auf dem C-Stack. Das dokumentierte Ausdruckstiefenlimit greift bei diesem Operator nie.

SELECT 1 COLLATE BINARY COLLATE BINARY ... genügt. Gleiche Form in CREATE VIEW v AS SELECT 1 COLLATE BINARY ... und dann SELECT * FROM v auf einer frischen Verbindung. Das Standard-SQLITE_LIMIT_SQL_LENGTH (1e9) hält die ~1,8 MB lange Kette, die in diesem Lab einen 8-MB-Stack überlaufen ließ.

Dies ist ein Absturz des Embedder-Prozesses. Es ist keine Instruction-Pointer-Kontrolle. load_extension bleibt aus.

Wie ich es gefunden habe

Zwanzig Quellcode-Suchen in SQLite-Tag version-3.53.4 nach OpenLiteSpeed. Neuestes GA, nicht der 3.54.0-Entwurf. sqlite.org/security.html behandelt nicht vertrauenswürdiges SQL und nicht vertrauenswürdige .db als erstklassig. Standard-load_extension ist aus.

parse.y für COLLATE sind drei Zeilen:

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

sqlite3ExprAddCollateToken setzt pNew->pLeft = pExpr und EP_Collate|EP_Skip. sqlite3ExprAlloc ließ nHeight = 1. Kein sqlite3ExprCheckHeight. sqlite3PExpr erledigt beides für jeden anderen binären Operator.

Irrwege: 8k COLLATE als den Crash zu behandeln (es gab 1 zurück); 40k als den Crash zu behandeln (es gab ebenfalls 1 zurück, weit jenseits von SQLITE_LIMIT_EXPR_DEPTH 1000); 120k zu benötigen, bevor ASan in sqlite3WalkExprNN starb.

Dies ist G1 von vierzehn Überbleibseln auf dem Pin. Geschwister sind andere Posts.

Lab

cd lab
./run.sh

ASan-Amalgamation aus offiziellem sqlite-src-3530400 (Fallback-Clone von Tag version-3.53.4). Compose sqlite-collate-depth. Dummy-HTTP auf 127.0.0.1:18800. Binde es an Loopback.

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

50 COLLATE gibt 1 zurück. 8k und 40k geben ebenfalls 1 zurück. 120k stirbt mit rc=134, ASan-Stack-Overflow in sqlite3WalkExprNN. Pin-Prüfung ist SELECT sqlite_version() / SELECT sqlite_source_id().

Der Fix

sqlite3ExprCheckHeight auf dem COLLATE-Knoten aufrufen, nachdem pLeft angehängt wurde, so wie es sqlite3PExpr bereits tut. nHeight vom Kind neu berechnen. Ein Postfix-Operator ist immer noch ein Ausdrucksbaum.

Trunk 252c0b7bf5 (2026-10-04) ist nach diesem GA.

Referenzen

  • https://sqlite.org/src Tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (Fossil-Mirror) Baum https://github.com/sqlite/sqlite/tree/version-3.53.4
  • Offizielles Zip https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y COLLATE-Aktion
  • src/expr.c sqlite3ExprAddCollateToken, sqlite3ExprAlloc (nHeight = 1), sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c sqlite3WalkExprNN
  • src/sqliteLimit.h SQLITE_MAX_EXPR_DEPTH Standard 1000
  • CWE-674 Unkontrollierte Rekursion
  • CWE-770 Allokation von Ressourcen ohne Limits oder Drosselung
Tool herunterladen