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
CVE-2026-2005 — PoC de estouro de buffer no heap do pgcrypto do PostgreSQL demonstrando CVE-2026-2005: RCE com baixo privilégio e escalada de privilégios para superusuário via pacote OpenPGP elaborado. | Kitploit
Ferramentas/GitHubGitHub/open-flaw/cve-2026-2005
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoPós-ExploraçãoAnálise de BináriosSegurança de Banco de DadosExploração de Binários
GitHubopen-flaw/cve-2026-2005

CVE-2026-2005

PoC de estouro de buffer no heap do pgcrypto do PostgreSQL demonstrando CVE-2026-2005: RCE com baixo privilégio e escalada de privilégios para superusuário via pacote OpenPGP elaborado.

Ver Repositório
20há 1 mêsAinda 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

CVE-2026-2005 — Estouro de Buffer de Heap no pgcrypto do PostgreSQL

Commit alvo: 4b324845ba5d24682b9b3708a769f00d160afbd7 (PostgreSQL 18.1 — vulnerável)

Resumo

CampoDetalhe
CVECVE-2026-2005
TipoEstouro de buffer de heap
Componentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ImpactoRCE como o usuário do SO executando o PostgreSQL
CVSS8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Autenticação necessáriaBaixa — qualquer usuário autenticado com privilégio CREATE
AfetadoPostgreSQL 14.0–14.20, 15.0–15.15, 16.0–16.11, 17.0–17.7, 18.0–18.1
Corrigido em14.21, 15.16, 16.12, 17.8, 18.2 (12 de fevereiro de 2026)
Arquiteturaaarch64 (ARM64) — os deslocamentos de heap e o layout do MBuf são específicos da arquitetura/glibc

Início Rápido

# Build and start PostgreSQL 18.1 (vulnerable)
docker compose up -d --build

# Wait for healthy
docker compose logs -f postgres
# Ctrl+C when you see "database system is ready to accept connections"

# One-time setup: copy the postgres binary for offline symbol parsing
docker cp cve-2026-2005-poc:/usr/local/pgsql/bin/postgres ./postgres

# Install node deps
npm install

# Run the full RCE exploit chain (pure SQL — no Docker interaction)
node exploit.js --cmd "id"

# With verbose output
node exploit.js --cmd "id" --verbose

# Execute a custom command
node exploit.js --cmd "whoami"

Cadeia de Exploração (7 estágios)

Stage 1: Heap pointer leak
  └─ Corrupt mdst chunk header → parse pfree() error message

Stage 2: Arbitrary read (multi-window scan)
  └─ Overwrite mdst->data → scan memory near leaked pointer

Stage 3: Pointer candidate collection
  └─ Scan heap dumps for pointer-like 8-byte values

Stage 4: PIE base resolution
  └─ Vote leaked addresses against ELF symbol offsets (page-offset
     grouped, offline — symbols parsed from the local binary copy)

Stage 5: PIE validation
  └─ Arb read CurrentUserId at candidate base → compare with session OID

Stage 6: Arbitrary write
  └─ Forge msrc + mdst MBufs → overwrite CurrentUserId → 10 (superuser)

Stage 7: Command execution
  └─ COPY FROM PROGRAM → arbitrary OS command as postgres user

Estrutura de Arquivos

CVE-2026-2005/
├── Dockerfile              # Builds PostgreSQL 18.1 from source
├── docker-compose.yml      # PostgreSQL service with auto-restart
├── init.sh                 # Entrypoint — initdb + listen config
├── README.md               # This file
└── poc/
    ├── package.json        # Node.js dependencies (pg)
    ├── exploit.js          # Full 7-stage RCE exploit (Node.js)
    ├── verify.sh           # Shell-based quick verification
    └── test-pgcrypto.sql   # SQL-only test of pgcrypto loading

Compilação Manual (macOS / Linux)

git clone https://github.com/postgres/postgres.git
cd postgres
git checkout 4b324845ba5d24682b9b3708a769f00d160afbd7
./configure \
    --prefix="$HOME/projects/pg/pgsql" \
    --with-libxml \
    --with-libxslt \
    --enable-debug \
    --with-ssl=openssl
make -j$(nproc)
make install-world-bin

Requisitos

  • Docker + Docker Compose (host aarch64, por exemplo, Mac com Apple Silicon)
  • Node.js ≥ 18
  • ~2 GB de disco para a compilação do PostgreSQL
  • A compilação leva ~3–5 minutos na primeira execução
  • tmux (opcional — necessário apenas com a flag --gdb)

Detalhes da Vulnerabilidade

O bug está em pgp_parse_pubenc_sesskey() em contrib/pgcrypto/pgp-pubdec.c. Ao analisar um pacote OpenPGP Public-Key Encrypted Session Key (tag 1):

  1. O código lê o comprimento do MPI (inteiro de múltipla precisão) do pacote
  2. Aloca um buffer com base nesse comprimento
  3. Descriptografa o MPI via RSA para dentro do buffer
  4. Lê o comprimento da chave de sessão dos dados descriptografados sem validação de limites
  5. Executa memcpy dos dados da chave de sessão para um buffer de tamanho fixo com base no comprimento não validado

O memcpy pode escrever além do limite do buffer de heap, corrompendo metadados ou dados adjacentes do heap, levando à execução arbitrária de código.

Detalhes da Cadeia de Exploração

  1. Vazamento de ponteiro do heap — Corrompe o cabeçalho do chunk do malloc; analisa a mensagem de erro do pfree() para extrair o endereço de heap mdst->data.
  2. Resolução da base do PIE — Lê /proc/<pid>/maps do contêiner Docker para encontrar o endereço de carregamento do binário postgres em tempo de execução.
  3. Escrita arbitrária — Forja ambas as estruturas MBuf msrc (origem) e mdst (destino) através do estouro de heap. msrc aponta para um pacote symenc embutido contendo o OID do superusuário (10); mdst aponta para CurrentUserId - 4 (considerando o cabeçalho SET_VARSIZE de 4 bytes).
  4. Escalação de privilégios — Com CurrentUserId = 10 (superusuário bootstrap), executa COPY FROM PROGRAM para rodar comandos arbitrários do SO.

Opções de CLI

FlagPadrãoDescrição
--cmdidComando do SO a executar após o exploit bem-sucedido
--key-size3072Tamanho da chave RSA em bits
--host127.0.0.1Host do PostgreSQL
--port5432Porta do PostgreSQL
--userpostgresUsuário do banco de dados
--password(vazio)Senha do banco de dados
--dbnamepostgresNome do banco de dados
--binary./postgresCaminho para o binário ELF postgres para símbolos
--scan-offsetautoSubstitui o deslocamento de varredura do heap a partir do ponteiro vazado
--verbosedesativadoHabilita saída de depuração detalhada
--gdbdesativadoAnexa o GDB via tmux no ponto de estouro

Notas

  • A extensão pgcrypto é confiável — qualquer usuário com privilégio CREATE (não superusuário) pode instalá-la, tornando isso explorável com privilégios baixos.
  • A compilação Docker inclui --enable-debug para facilitar a depuração com gdb.
  • Os deslocamentos de heap (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) são específicos para aarch64 + glibc — outras arquiteturas/alocadores precisam de deslocamentos diferentes.
  • A base do PIE é resolvida a partir dos ponteiros de heap vazados via votação de deslocamento de símbolo, e então confirmada lendo CurrentUserId através da mesma primitiva de leitura arbitrária.

Referências

  • PostgreSQL Security Advisory
  • ZeroDay.Cloud Technical Writeup
  • NVD Entry
Baixar ferramenta