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
7há 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-session-ncol

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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. Escrita ASan de tamanho 12 em sessionUpdateFind. Controle: aplicação de um único UPDATE de 2 colunas com apply-rc=0.

Não é uma amalgamação padrão a menos que SESSION esteja ativado. O NPD CVE-2026-50812 está fechado no 3.53.2+. Não é um payload RCE weaponizado. O oráculo é a escrita ASan.

IDainda sem CVE
Classeescrita OOB no heap (escrita 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 Session extra (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 escrita ASan de tamanho 12.

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 amalgamação 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 UPDATE. Escrita ASan de tamanho 12 em sessionUpdateFind. Controle: aplicação de um único UPDATE de 2 colunas com apply-rc=0.

Não trate este pacote como um gadget write-what-where. A escrita ASan de tamanho 12 é 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 de colunas declarada maior reutiliza aUpdateMask.

Caminhos errados já registrados: tratar a amalgamação 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

Amalgamação ASan do zip oficial sqlite-src-3530400. Extra de compilação -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK. 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 forma como um novo nome já faz: libere aUpdateMask, execute novamente sessionTableInfo, recuse um nCol maior que o esquema ativo. Trunk 3f57024aec / branch-3.53 a1dd7123d8 (2026-08-17) é posterior a este 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
  • O NPD de sessão CVE-2026-50812 está fechado no 3.53.2+
Baixar ferramenta