Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 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
há 10 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

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

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

Resumo

CampoDetalhe
CVECVE-2026-2005
TipoEstouro de buffer no heap
Componentecontrib/pgcrypto/pgp-pubdec.c — pgp_parse_pubenc_sesskey()
ImpactoRCE como o usuário do SO que executa 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
AfetadosPostgreSQL 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 offsets do heap e o layout do MBuf são específicos da arquitetura/glibc

Início Rápido

root@kitploit:~
# 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"

# Install node deps
npm install

# Run the full RCE exploit chain
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)

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

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

Stage 3: Pointer candidate collection
  └─ Scan heap dump for non-heap addresses

Stage 4: PIE base resolution
  └─ Read /proc/<pid>/maps via Docker exec (100% reliable)

Stage 5: (skipped — PIE base is known from maps)

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

root@kitploit:~
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)

root@kitploit:~
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 de chave de sessão criptografada por chave pública (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 dentro do buffer
  4. Lê o comprimento da chave de sessão dos dados descriptografados sem validação de limites
  5. Copia via memcpy os 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 do heap, corrompendo metadados ou dados adjacentes do heap, o que leva à execução arbitrária de código.

Detalhes da Cadeia de Exploração

  1. Vazamento de ponteiro do heap — Corromper o cabeçalho do chunk do malloc; analisar a mensagem de erro do pfree() para extrair o endereço do heap de mdst->data.
  2. Resolução da base PIE — Ler /proc/<pid>/maps do contêiner Docker para encontrar o endereço de carregamento do binário do postgres em tempo de execução.
  3. Escrita arbitrária — Forjar as structs MBuf msrc (origem) e mdst (destino) por meio do estouro no heap. msrc aponta para um pacote symenc incorporado contendo o OID de superusuário (10); mdst aponta para CurrentUserId - 4 (considerando o cabeçalho SET_VARSIZE de 4 bytes).
  4. Escalonamento de privilégio — Com CurrentUserId = 10 (superusuário bootstrap), executar COPY FROM PROGRAM para rodar comandos arbitrários do SO.

Opções de CLI

Notas

  • A extensão pgcrypto é confiável — qualquer usuário com privilégio CREATE (não superusuário) pode instalá-la, tornando-a explorável com privilégios baixos.
  • A compilação Docker inclui --enable-debug para facilitar a depuração com gdb.
  • Os offsets do heap (SRC_CHUNK_OFFSET=100, DST_CHUNK_OFFSET=172) são específicos de aarch64 + glibc — outras arquiteturas/alocadores precisam de offsets diferentes.
  • O contêiner usa restart: always para se recuperar automaticamente de travamentos do backend durante o teste de candidatos a PIE.
  • A base PIE é resolvida via /proc/<pid>/maps dentro do contêiner Docker — não é necessário readelf no host.
  • A tabela de símbolos para o offset de CurrentUserId é lida via docker exec readelf.

Referências

  • Aviso de Segurança do PostgreSQL
  • Análise Técnica da ZeroDay.Cloud
  • Entrada no NVD
Baixar ferramenta
FlagPadrãoDescrição
--cmdidComando do SO a executar após a exploração bem-sucedida
--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 do postgres para símbolos
--scan-offsetautoSubstituir o offset de varredura do heap a partir do ponteiro vazado
--verboseoffHabilitar saída de depuração detalhada
--gdboffAnexar o GDB via tmux no ponto do estouro