Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sqlite-collate-depth — SQLite 3.53.4 - Alta - Local - Crash - COLLATE chain skips SQLITE_LIMIT_EXPR_DEPTH | Kitploit
Ferramentas/GitHubGitHub/abraxas/sqlite-collate-depth
Análise EstáticaAnálise de VulnerabilidadesExploraçãoFuzzingSegurança de Banco de Dados
GitHubabraxas/sqlite-collate-depth

sqlite-collate-depth

SQLite 3.53.4 - Alta - Local - Crash - COLLATE chain skips SQLITE_LIMIT_EXPR_DEPTH

Ver Repositório
1há 6 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - sqlite-collate-depth

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

sqlite-collate-depth

Classe: Crash Alcance: Local

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

A ação gramatical COLLATE nunca chama sqlite3ExprCheckHeight. sqlite3ExprAddCollateToken aloca um nó TK_COLLATE com nHeight ainda em 1, e então pendura a expressão anterior em pLeft. Operadores comuns passam por sqlite3PExpr e recebem o SQLITE_LIMIT_EXPR_DEPTH documentado (padrão 1000). Este operador não.

O walker ainda recursa em cada pLeft. EP_Skip é para afinidade, não para sqlite3WalkExprNN. Uma cadeia de 50 nós retorna 1. Assim como 8k e 40k, além do limite de profundidade. 120k causa stack-overflow no ASan em sqlite3WalkExprNN (rc=134). Não é RCE.

A árvore canônica é https://sqlite.org/src. O GitHub sqlite/sqlite é um espelho Fossil. Zip oficial sqlite-src-3530400. Biblioteca de domínio público. Este pacote é AGPLv3.

IDsem CVE ainda
ClasseCrash (stack-overflow no ASan em sqlite3WalkExprNN; RCE não demonstrado)
AlcanceLocal (SQL não confiável ou uma VIEW plantada)
CWECWE-674, CWE-770
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
ProdutoSQLite 3.53.4
Afetado3.53.4 (b09c88c); resquício da verificação de altura de COLLATE do trunk posterior
AuthSQL não confiável ou VIEW; load_extension padrão permanece desativado
LicençaGNU Affero GPL v3.0
LabApenas 127.0.0.1:18800. Amalgamação ASan. Testemunha de crash.

O que um atacante pode fazer

Alimente uma longa cadeia pós-fixa COLLATE BINARY como SQL, ou plante-a em uma VIEW dentro de um .db não confiável. O processo hospedeiro percorre a cadeia e morre na pilha C. O limite documentado de profundidade de expressão nunca é executado neste operador.

SELECT 1 COLLATE BINARY COLLATE BINARY ... é suficiente. Mesma forma em CREATE VIEW v AS SELECT 1 COLLATE BINARY ... e então SELECT * FROM v em uma nova conexão. O SQLITE_LIMIT_SQL_LENGTH padrão (1e9) comporta a cadeia de ~1,8 MB que estourou uma pilha de 8 MB neste lab.

Isto é um crash do processo embutidor. Não é controle de ponteiro de instrução. load_extension permanece desativado.

Como eu encontrei

Vinte caçadas ao código-fonte da tag version-3.53.4 do SQLite após o OpenLiteSpeed. Última GA, não o rascunho 3.54.0. sqlite.org/security.html trata SQL não confiável e .db não confiável como cidadãos de primeira classe. load_extension padrão está desativado.

parse.y para COLLATE tem três linhas:

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

sqlite3ExprAddCollateToken define pNew->pLeft = pExpr e EP_Collate|EP_Skip. sqlite3ExprAlloc deixou nHeight = 1. Sem sqlite3ExprCheckHeight. sqlite3PExpr faz ambas as coisas para todos os outros operadores binários.

Caminhos errados: tratar 8k COLLATE como o crash (retornou 1); tratar 40k como o crash (também retornou 1, bem além do SQLITE_LIMIT_EXPR_DEPTH 1000); precisar de 120k antes do ASan morrer em sqlite3WalkExprNN.

Este é o G1 de quatorze resquícios no pin. Os irmãos são outros posts.

Lab

cd lab
./run.sh

Amalgamação ASan do sqlite-src-3530400 oficial (clone de fallback da tag version-3.53.4). Compose sqlite-collate-depth. HTTP dummy em 127.0.0.1:18800. Vincule ao loopback.

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

50 COLLATE retorna 1. 8k e 40k também retornam 1. 120k morre rc=134, stack-overflow no ASan em sqlite3WalkExprNN. A verificação de pin é SELECT sqlite_version() / SELECT sqlite_source_id().

A correção

Chame sqlite3ExprCheckHeight no nó COLLATE após anexar pLeft, da forma como sqlite3PExpr já faz. Recalcule nHeight a partir do filho. Um operador pós-fixo ainda é uma árvore de expressão.

O trunk 252c0b7bf5 (2026-10-04) é posterior a esta GA.

Referências

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite (espelho Fossil) tree https://github.com/sqlite/sqlite/tree/version-3.53.4
  • Zip oficial https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • https://sqlite.org/security.html
  • src/parse.y ação COLLATE
  • src/expr.c sqlite3ExprAddCollateToken, sqlite3ExprAlloc (nHeight = 1), sqlite3PExpr / sqlite3ExprCheckHeight
  • src/walker.c sqlite3WalkExprNN
  • src/sqliteLimit.h SQLITE_MAX_EXPR_DEPTH padrão 1000
  • CWE-674 Recursão Não Controlada
  • CWE-770 Alocação de Recursos Sem Limites ou Throttling
Baixar ferramenta