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
postgres-basebackup-symlink — PostgreSQL 18.6 - Alta - Remoto - Escrita de arquivo - pg_basebackup segue symlink tar absoluto remanescente do CVE-2026-6475 | Kitploit
Ferramentas/GitHubGitHub/abraxas/postgres-basebackup-symlink
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoPapers e PesquisaSegurança de Banco de DadosLabs e Prática
GitHub
abraxas/postgres-basebackup-symlink

postgres-basebackup-symlink

PostgreSQL 18.6 - Alta - Remoto - Escrita de arquivo - pg_basebackup segue symlink tar absoluto remanescente do CVE-2026-6475

Ver Repositório
6há 3 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 - postgres-basebackup-symlink

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  postgres-basebackup-symlink

postgres-basebackup-symlink

Classe: Escrita de arquivo Alcance: Remoto

PostgreSQL 18.6 (724edf9) - PostgreSQL Global Development Group

CVE-2026-6475 adicionou path_is_safe_for_extraction para nomes de membros tar. Alvos de symlink absolutos ainda ignoram essa verificação para que tablespaces funcionem. astreamer_file.c então faz symlink() do alvo e depois fopen(..., "wb") o segue. O formato padrão do pg_basebackup é plain (-F p). O create_target_symlink do pg_rewind verifica o caminho e nunca cria o link.

Uma origem hostil que fala BASE_BACKUP pode plantar um symlink absoluto e sobrescrever qualquer arquivo que o UID do backup possa escrever. Mesmo modelo de vítima do 6475. Isto não é um re-file das verificações de nome de membro.

IDainda sem CVE
ClasseEscrita de arquivo (resíduo de symlink tar absoluto do CVE-2026-6475)
AlcanceRemoto (UI:R cliente vs PostgreSQL hostil)
CWECWE-59, CWE-22
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProdutoPostgreSQL
Afetadotag 18.6 REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7), pg_basebackup / pg_rewind in-tree
Autenticaçãovítima executa pg_basebackup -D <dir> padrão contra uma origem atacante
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Alguém que consiga fazer um operador executar pg_basebackup -D contra o seu PostgreSQL (o mesmo modelo UI:R do CVE-2026-6475) pode escrever fora de -D.

PrivilégioMétodo / sinkComprovado em lab ou inferido
Integridade: escrever um arquivo fora de -DTar BASE_BACKUP hostil: membro com typeflag '2' com um nome relativo seguro (pg_tblspc/16384) e um alvo de link absoluto, depois um membro regular sob esse nome. extract_link então create_file_for_extract fopen(..., "wb") sem O_NOFOLLOWComprovado em lab. Escreveu POSTGRES-BASEBACKUP-SYMLINK-WITNESS em /work/oracle/. O destino contém o symlink. O tar de controle (sem symlink) deixou o oracle vazio e escreveu apenas PG_VERSION dentro de -D
Integridade: sobrescrever shell rc, authorized_keys, uma unit systemd de usuário ou crontabMesmo sink, qualquer caminho que o UID do cliente possa escreverInferido. Este lab não toca nesses arquivos
Disponibilidade: destruir configuração ou chaves do clienteMesma escritaInferido. Não demonstrado
Reconhecimento do disco do clienteextract é escrita, não leituraFechado
Percorrer .. ou nomes de membros absolutospath_is_safe_for_extractionFechado. Isso é o CVE-2026-6475
SQL sem privilégios no lado do servidor / protocolo sem autenticaçãoservidor padrão 18.6Fechado. Este resíduo é o cliente
Backup apenas tarpg_basebackup -F t armazena o tar sem extrairFechado
RCE dentro do postgresnão é este sinkFechado

pg_rewind tem o mesmo resíduo de create_target_symlink / open(). Este lab aciona apenas o pg_basebackup.

Como eu encontrei

Fixe em postgres/postgres REL_18_6 após a onda 18.6 (28 CVEs, mais o conjunto 18.4/18.2 já nesta árvore). Vinte e duas caçadas. Servidor padrão, SQL sem privilégios, protocolo sem autenticação: nenhum neste nível. O CVE-2026-6475 era o irmão a reler.

Nomes de membros são verificados. Alvos de symlink absolutos não são:

if (!is_absolute_path(linktarget) &&
    !path_is_safe_for_extraction(member->linktarget))
{
    pg_fatal("link target has unsafe path name: \"%s\"",
             member->linktarget);
}
extract_link(mystreamer->filename, linktarget);

create_file_for_extract ainda é fopen(filename, "wb"). O comentário em astreamer_file.c:351-356 diz que o mapeamento é aplicado sem verificar se o link está dentro de pg_tblspc.

Caminhos errados já registrados: tratar o 6475 como fechado e ir embora; apontar -D para um diretório de dados ativo; sobrescrever shell rc por teatro. Um servidor 18.6 honesto só emite symlinks pg_tblspc/<oid> e coloca o conteúdo do tablespace em um arquivo separado. Uma origem maliciosa que fala BASE_BACKUP pode colocar o membro regular de acompanhamento no mesmo tar. Esse é o resíduo.

Lab

python3 postgres-basebackup-symlink-Abraxas-Labs.py

ou

cd lab
./run.sh

postgres:18.6 como imagem de origem, executando um falante BASE_BACKUP. O cliente é o pg_basebackup in-tree da mesma tag (pg_basebackup (PostgreSQL) 18.6). Loopback 127.0.0.1:19370. Projeto compose postgres-basebackup-symlink. Não aponte -D para um diretório de dados ativo.

SUCCESS postgres-basebackup-symlink control-inside=yes oracle-outside=yes dest-is-symlink=yes image=postgres:18.6 how=pg_basebackup POSTGRES-BASEBACKUP-SYMLINK-WITNESS

A correção

Trate alvos de symlink absolutos como inseguros, a menos que sejam reescritos por --tablespace-mapping. Abra arquivos extraídos com O_NOFOLLOW / lstat para que um link plantado não possa ser seguido. Aplique path_is_safe_for_extraction ao link do rewind, bem como ao path. Rejeite um membro regular cujo caminho passe por um symlink que saiu de -D.

Referências

  • github.com/postgres/postgres tag REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7)
  • src/fe_utils/astreamer_file.c · src/fe_utils/astreamer_tar.c
  • src/bin/pg_rewind/file_ops.c
  • Corrigido nas proximidades (nomes de membros, não este alvo): CVE-2026-6475
  • CWE-59 · CWE-22

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta