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-wal-pagesize — SQLite 3.53.4 - Hoch - Lokal - Info-Leak - WAL/DB-Seitengrößen-Fehlanpassung nicht initialisierter Seitenrest | Kitploit
Tools/GitHubGitHub/abraxas/sqlite-wal-pagesize
SpeicherforensikSchwachstellenanalyseExploitationInformationsbeschaffungPapers & ForschungDatenbanksicherheitLabs & Praxis
GitHubabraxas/sqlite-wal-pagesize

sqlite-wal-pagesize

SQLite 3.53.4 - Hoch - Lokal - Info-Leak - WAL/DB-Seitengrößen-Fehlanpassung nicht initialisierter Seitenrest

Repository anzeigen
8vor 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-wal-pagesize

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

sqlite-wal-pagesize

Klasse: Info-Leak Reichweite: Lokal

SQLite 3.53.4 (b09c88c) liest einen WAL-Frame weiterhin als Kurzlesevorgang in eine vollständige Pager-Seite ein, ohne den Rest mit memset zu nullen. walIndexRecover akzeptiert jede Zweierpotenz als WAL-Seitengröße in [512, SQLITE_MAX_PAGE_SIZE] und vergleicht sie nie mit der Datenbank-Seitengröße. Recycelte pcache-Slots geben dann über gewöhnliches SQL vorherige Heap-/Seiten-Bytes zurück.

Labor: 4096-Seiten-WAL-Modus-.db, benachbarte -wal-Header-Seitengröße 512, SELECT b FROM t gab 2000 Bytes zurück. Der Rest hinter dem 512-Byte-Frame war SQLITE-WAL-PAGESIZE-WITNESS. Kein RCE.

IDnoch keine CVE
KlasseInfo-Leak (nicht initialisierter Pager-Rest über SQL)
ReichweiteLokal (nicht vertrauenswürdige .db plus benachbarte -wal)
CWECWE-908, CWE-200
CVSSHoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
ProduktSQLite (Hwaci)
Betroffen3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69); SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Authkeine (Opfer öffnet die Dateien des Angreifers)
LizenzGNU Affero GPL v3.0
Labornur 127.0.0.1:18830

Was ein Angreifer tun kann

Eine WAL-Modus-.db plus eine benachbarte -wal ausliefern, deren Header-Seitengröße eine kleinere gültige Zweierpotenz als die der Datenbank ist. Die Wiederherstellung akzeptiert sie. sqlite3WalReadFrame kopiert nur die WAL-Frame-Größe in einen Pager-Puffer, dessen Größe aus der .db stammt. Eine Tabellenblatt-Zelle, die eine größere Nutzlast als dieser Frame beansprucht, wird aus dem recycelten pcache-Rest bedient. SELECT / substr() / hex() auf diesem Blob geben übrig gebliebene Pager-/Heap-Bytes aus vorherigen Seiten im selben Prozess zurück.

Die umgekehrte Diskrepanz (WAL größer als der Pager) ergibt SQLITE_CORRUPT beim Checkpoint. Dieser Rest betrifft nur den Lesepfad bei kleinerem WAL. Kein RCE.

Wie ich es gefunden habe

Zwanzig Quellcode-Suchen in 3.53.4 nach der Leftover-Matrix des späteren Trunks. Winter meldete es im Forum als 2026-08-17T15:54:41Z. Trunk f9b4ee3695 / branch-3.53 4fde87b2a0 (2026-08-16) liegt nach diesem GA (2026-07-24). sqlite3WalReadFrame ist bei diesem Pin weiterhin (nOut>sz ? sz : nOut) ohne memset des Rests.

Irrweg: Eine frühe Blattzelle war fehlerhaft und SELECT gab SQLITE_CORRUPT rc=11 zurück. Die funktionierende Zelle beansprucht 2000 Bytes lokaler Nutzlast über einen 512-Byte-Frame auf einer 4096-Byte-Pager-Seite.

Labor

cd lab
./run.sh

Baut SQLite 3.53.4 aus dem kanonischen Quell-Zip. Compose sqlite-wal-pagesize. Veröffentlicht 127.0.0.1:18830. Füllt den pcache mit 48x4000-Byte-Witness-Zeilen vor, dann SELECT b FROM t auf dem Kurzlese-Blatt.

SUCCESS sqlite-wal-pagesize how=wal-shortread-pcache-tail len=2000 rootpage=2 SQLITE-WAL-PAGESIZE-WITNESS

Der Fix

Vergleiche die WAL-Header-Seitengröße mit der Datenbank-Seitengröße während der Wiederherstellung. Wenn sie nicht übereinstimmen, lehne die WAL ab oder initialisiere die Pager-Seite vollständig:

if( nOut>sz ){
  memset(pOut+sz, 0, nOut-sz);
  nOut = sz;
}

Dieser Hunk ist nach diesem GA im Trunk. Er ist nicht in 3.53.4.

Referenzen

  • sqlite.org/src Tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • src/wal.c sqlite3WalReadFrame, walIndexRecover
  • src/pager.c readDbPage
  • Forum 2026-08-17T15:54:41Z (Winter)
Tool herunterladen