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-51992 — Prova de conceito e write-up detalhado para CVE-2026-51992, uma vulnerabilidade de injeção de SQL em dicionários ClickHouse PostgreSQL que permite execução arbitrária de comandos. | Kitploit
Ferramentas/GitHubGitHub/theliimbo/cve-2026-51992
Análise de VulnerabilidadesAnálise de CódigoExploraçãoTestes de PenetraçãoAprendizado e EducaçãoSegurança de Banco de Dados
GitHubtheliimbo/cve-2026-51992

CVE-2026-51992

Prova de conceito e write-up detalhado para CVE-2026-51992, uma vulnerabilidade de injeção de SQL em dicionários ClickHouse PostgreSQL que permite execução arbitrária de comandos.

Ver Repositório
4há 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-51992

No ClickHouse, existe um recurso que permite que um usuário com as permissões corretas crie dicionários para interagir com diferentes bancos de dados e executar consultas específicas neles. Para o PostgreSQL, as consultas SELECT são encapsuladas em uma declaração COPY( {QUERY} ) TO STDOUT antes de serem executadas no banco de dados. Ao adicionar parênteses a um dicionário criado, a declaração COPY( {QUERY} ) TO STDOUT pode ser escapada e instruções SQL arbitrárias podem ser executadas, o que por sua vez pode levar à execução de comandos arbitrários no servidor de banco de dados.

Detalhes

Os dicionários PostgreSQL são criados com a seguinte estrutura:

root@kitploit:~
SOURCE(POSTGRESQL(
    port 5432
    host 'postgresql-hostname'
    user 'postgres_user'
    password 'postgres_password'
    db 'db_name'
    table 'table_name'
    replica(host 'example01-1' port 5432 priority 1)
    replica(host 'example01-2' port 5432 priority 2)
    where 'id=10'
    invalidate_query 'SQL_QUERY'
    query 'SELECT id, value_1, value_2 FROM db_name.table_name'
))

A documentação para os mecanismos PostgreSQL usados nos dicionários menciona o seguinte:

Consultas SELECT no lado PostgreSQL são executadas como COPY (SELECT ...) TO STDOUT dentro de uma transação PostgreSQL somente leitura, com commit após cada consulta SELECT.

Como não há validação adicional nas consultas definidas no dicionário antes de serem enviadas para a instância Postgres, o "COPY(...) TO STDOUT" pode ser escapado iniciando a consulta com um ")", criando uma transação que não é somente leitura. Como exemplo, a seguinte consulta pode ser usada no ClickHouse para criar um dicionário Postgres "malicioso":

CREATE DICTIONARY exec_dict(id UInt64, value UInt64 DEFAULT 0) PRIMARY KEY id SOURCE(POSTGRESQL(port 5432 host '172.17.0.3' user 'postgres' password 'password' db 'postgres' query 'SELECT 1) TO PROGRAM \'id>/tmp/test\';-- ')) LAYOUT(DIRECT())

Assim que o dicionário é criado, ele pode ser carregado no ClickHouse referenciando o dicionário. O ClickHouse retornará um erro, indicando que a função COPY esperada pelo ClickHouse falhou. No entanto, o restante da consulta ainda será executado no banco de dados PostgreSQL de backend. Ao abusar do recurso PROGRAM do PostgreSQL, comandos arbitrários podem ser executados.

mostrar-codigo-executando-no-contêiner

Contexto

Embora os testes originais tenham sido feitos na versão 25.8.10.7, quando o relatório foi submetido em 30 de janeiro de 2025, a versão mais recente na época era a 26.3.9.8 e a vulnerabilidade ainda estava presente. Após análise, o problema foi marcado como "não aplicável" em 10 de abril de 2026, com a seguinte declaração:

não - isso não se deve a razões de segurança, mas principalmente à eficiência. Um usuário com credenciais do postgres + função de tabela remota já pode fazer muita coisa ou conectar-se diretamente ao banco de dados postgresql e executar essas consultas.

Sendo assim, isso não é um risco; o atacante aqui exige credenciais válidas para o banco de dados postgresql e um usuário válido no ClickHouse + permissão para usar a função de tabela postgresql.

Quanto à proteção do banco de dados Postgresql, os usuários devem usar permissões sensatas para qualquer credencial postgresql usada pelo usuário do ClickHouse - e isso significa permissão limitada, escopo restrito e não usar diretamente as credenciais padrão "postgres".

Sendo assim, isso ainda é aplicável nas versões mais recentes do ClickHouse no momento em que este relatório foi escrito:

mostrar-mesma-consulta-para-clickhouse

versão-mais-recente-para-clickhouse

mostrar-vulnerabilidade-ainda-ocorrendo-na-versão-mais-recente

Não parece provável que uma correção seja emitida, o que significa que todas as versões atuais e possivelmente futuras do ClickHouse serão afetadas.

Baixar ferramenta