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-session-ncol — SQLite 3.53.4 - Alta - Local - gravação fora dos limites no heap - crescimento de nCol com mesmo nome no changeset da sessão | Kitploit
Ferramentas/GitHubGitHub/abraxas/sqlite-session-ncol
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoFuzzingAnálise de BináriosPapers e PesquisaSegurança de Banco de Dados
GitHubabraxas/sqlite-session-ncol

sqlite-session-ncol

SQLite 3.53.4 - Alta - Local - gravação fora dos limites no heap - crescimento de nCol com mesmo nome no changeset da sessão

Ver Repositório
21há 9 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-session-ncol

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

Write-up: https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

Classe: escrita OOB no heap Alcance: Local

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) com -DSQLITE_ENABLE_SESSION. Um changeset de dois blocos que reutiliza o nome de tabela t com nCol=2 e depois nCol=64 ignora o reset de sessionTableInfo (sqlite3session.c:5619) e faz memset além do aUpdateMask do primeiro bloco. WRITE do ASan de tamanho 12 em sessionUpdateFind. Controle: UPDATE único de 2 colunas, apply-rc=0.

Não é uma amalgamation padrão, a menos que SESSION esteja ativado. O NPD do CVE-2026-50812 está fechado no 3.53.2+. Não é um payload de RCE armado. O oráculo é o WRITE do ASan.

IDainda sem CVE
Classeescrita OOB no heap (WRITE do ASan de tamanho 12; RCE não demonstrado)
AlcanceLocal (changeset não confiável via sqlite3changeset_apply*)
CWECWE-787
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProdutoSQLite extra Session (Hwaci)
Afetado3.53.4 (b09c88c) compilado com -DSQLITE_ENABLE_SESSION
Autenticaçãoo host aplica um changeset não confiável
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1:18900. Testemunho de WRITE de tamanho 12 do ASan.

O que um atacante pode fazer

Aplicar um changeset não confiável cujo segundo bloco de tabela reutiliza um nome de tabela com um nCol maior. Escrita OOB no heap. Extra de compilação. Não é uma amalgamation padrão, a menos que SESSION esteja ativado.

O primeiro bloco aloca aUpdateMask a partir de pIter->nCol. O bloco posterior com o mesmo nome ignora o reset de sessionTableInfo e faz memset de uma máscara maior sobre a alocação antiga. Lab: nCol=2 e depois nCol=64 em UPDATE. WRITE do ASan de tamanho 12 em sessionUpdateFind. Controle: UPDATE único de 2 colunas, apply-rc=0.

Não trate este pacote como um gadget write-what-where. O WRITE de tamanho 12 do ASan é o oráculo.

Como eu encontrei

Vinte buscas no código-fonte do SQLite 3.53.4 após a onda de FTS5 / session-NPD do 3.53.2. O CVE-2026-50812 está fechado (sessionBindRow trata um valor ausente como SQLITE_CORRUPT). O Session ainda indexa SessionApplyCtx apenas pelo nome da tabela. Um segundo bloco com o mesmo nome e uma contagem declarada de colunas maior reutiliza aUpdateMask.

Caminhos errados já registrados: tratar a amalgamation padrão como dentro do escopo (SESSION está desativado); reenviar o CVE-2026-50812; enviar um único bloco de tabela com nCol=64 contra um esquema de 2 colunas (schemaMismatch, sem escrita); alegar RCE a partir de um memset de 12 bytes.

Lab

cd lab
./run.sh

Amálgama ASan do zip oficial sqlite-src-3530400. Compile com -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK adicionais. Health em 127.0.0.1:18900. Vincule-o ao loopback.

SUCCESS sqlite-session-ncol how=asan-heap-write-sessionUpdateFind write-size=12 control-apply-rc=0 SQLITE-SESSION-NCOL-WITNESS

A correção

Quando um bloco de tabela de changeset posterior reutiliza um nome, reconstrua SessionApplyCtx da mesma forma que um novo nome já faz: libere aUpdateMask, execute novamente sessionTableInfo, recuse um nCol maior que o esquema ativo. O trunk 3f57024aec / branch-3.53 a1dd7123d8 (2026-08-17) é posterior a esta GA.

Referências

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619, sessionUpdateFind :4381-4412
  • Fórum https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 NPD de sessão está corrigido em 3.53.2+
Baixar ferramenta