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-fts5-securedel — SQLite 3.53.4 - Alto - Locale - Crash - FTS5 secure-delete PutVarint footer overrun | Kitploit
Strumenti/GitHubGitHub/abraxas/sqlite-fts5-securedel
Analisi StaticaMemory ForensicsAnalisi delle VulnerabilitàExploitFuzzingAnalisi di BinariPaper e RicercaSicurezza dei Database
GitHubabraxas/sqlite-fts5-securedel

sqlite-fts5-securedel

SQLite 3.53.4 - Alto - Locale - Crash - FTS5 secure-delete PutVarint footer overrun

Vedi Repository
115 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-fts5-securedel

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

sqlite-fts5-securedel

Classe: Crash Reach: Locale

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) - Hwaci

fts5DoSecureDelete ricostruisce un footer di foglia FTS5 con sqlite3Fts5PutVarint dopo nPg = iPgIdx. Gli offset delle chiavi decodificati dal footer non vengono limitati rispetto al blob originale, quindi il cursore di PutVarint esce da nn + FTS5_DATA_PADDING (20). Tipico extra SQLITE_ENABLE_FTS5. Il database dell'attacco usava già secure-delete.

Questo è un residuo del successivo trunk Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA). Quel check-in è successivo a questa GA. Non è CVE-2026-11824: fts5LeafRead rifiuta già szLeaf<4 su questo pin.

IDnessuna CVE al momento
ClasseCrash (ASan WRITE di dimensione 1; RCE non dimostrata)
ReachLocale (aprire un database FTS5 craftato, poi DELETE/flush)
CWECWE-787
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProdottoSQLite (mirror GitHub sqlite/sqlite)
Affected3.53.4 SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
Authnessuna (file indice non attendibile)
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18860. Scrittura heap ASan. Nessun payload RCE.

Cosa può fare un attaccante

Aprire un database FTS5 craftato che usava già secure-delete, poi DELETE (o qualsiasi scrittura che effettui il flush di un secure-delete) in modo che fts5DoSecureDelete scriva varint del footer oltre Fts5Data. Crash / scrittura heap ASan di dimensione 1. RCE non dimostrata. Non è CVE-2026-11824.

Il solo MATCH non è questo sink. Il trigger è DELETE/flush. Il file craftato non richiede SQLITE_DBCONFIG_DEFENSIVE disattivato.

Come l'ho trovato

Venti ricerche nel sorgente di SQLite 3.53.4 dopo altri pin di database e server HTTP. CVE-2026-11822 / CVE-2026-11824 è chiusa su questo albero (fts5LeafRead szLeaf<4). Il bound del trunk successivo di YEONBA non lo è. Il file fts5corruptB.test di 3.53.4 termina ancora al test 3.2; il test 4.0 del trunk è l'hexdb più DELETE FROM t WHERE rowid = 1.

iPgIdx -= nShift;
nPg = iPgIdx;
fts5PutU16(&aPg[2], iPgIdx);

for(iIdx=0; iIdx<nIdx; /* no-op */){
  u32 iVal = 0;
  iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
  iKeyIn += iVal;
  if( iKeyIn!=iDelKeyOff ){
    int iKeyOut = (iKeyIn - (iKeyIn>iOff ? nShift : 0));
    nPg += sqlite3Fts5PutVarint(&aPg[nPg], iKeyOut - iPrevKeyOut);
    iPrevKeyOut = iKeyOut;
  }
}

ext/fts5/fts5_index.c:5514-5544. iKeyIn è un int a 32 bit. Il trunk successivo mantiene nPg originale, usa i64 iKeyIn e rifiuta iKeyIn>nPg prima di PutVarint.

Vicoli ciechi: trattare CVE-2026-11824 come questo bug; MATCH invece di DELETE; un plant live CREATE/INSERT che manteneva szLeaf nel range e non andava in overflow; definire RCE la catena WAL-più-FTS5 di Winter senza un payload.

Lab

cd lab
./run.sh

Amalgamation ASan dallo zip ufficiale sqlite-src-3530400, -DSQLITE_ENABLE_FTS5. È richiesto l'hexdb lab/yeonba-fts5corruptB-4.hexdb (trunk fts5corruptB.test 4.0). Bind loopback 127.0.0.1:18860. Progetto Compose sqlite-fts5-securedel.

SUCCESS sqlite-fts5-securedel how=asan-heap-buffer-overflow-write-1-fts5DoSecureDelete db=yeonba-hexdb bytes=5120 SQLITE-FTS5-SECUREDEL-WITNESS

Frame ASan: fts5PutVarint64 -> sqlite3Fts5PutVarint -> fts5DoSecureDelete / fts5FlushSecureDelete.

La correzione

Mantenere nPg originale. Ampliare iKeyIn a i64. Rifiutare iKeyIn>nPg prima di sqlite3Fts5PutVarint. Questo è Fossil 9cd4f9e920 / branch-3.53 34171bee08. Applicarlo con cherry-pick su 3.53.

Riferimenti

  • https://sqlite.org/src tag version-3.53.4 Git b09c88c14082339b66c7b7158d609a771e64ca69
  • ext/fts5/fts5_index.c fts5DoSecureDelete, fts5FlushSecureDelete, fts5LeafRead
  • ext/fts5/fts5_varint.c sqlite3Fts5PutVarint
  • Fix del trunk Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA)
  • CVE-2026-11824 è il parent chiuso szLeaf<4, non questo residuo
Scarica lo strumento