Postgresql Global Development Group · Postgresql · CVE-2026-44477
**Nome do Software Vulnerável e Versões Afetadas**
CloudNativePG versões anteriores a 1.28.3
CloudNativePG versões anteriores a 1.29.1
**Description**
O exportador de métricas no CloudNativePG abre uma conexão PostgreSQL como o superusuário `postgres` via socket Unix local do pod e, posteriormente, rebaixa a sessão usando `SET ROLE pg monitor`. Como o `SET ROLE` modifica apenas o `current user` enquanto o `session user` permanece como `postgres`, qualquer expressão SQL avaliada durante uma sessão de coleta (scrape) pode executar `RESET ROLE` para recuperar privilégios de superusuário. Um invasor pode então usar o comando `COPY ... TO PROGRAM` para iniciar um subprocesso no nível do sistema operacional como o usuário `postgres` dentro do pod primário. A flag de transação `READ ONLY` não impede isso, pois ela restringe apenas gravações no estado do banco de dados, não processos externos.
Existem dois caminhos principais de exploração:
1. Consultas de métricas personalizadas com identificadores não qualificados: Um usuário que possua um esquema no `search path` pode implantar um objeto sombra. Quando o exportador avalia a consulta, a expressão sombra é executada com privilégios de superusuário.
2. Configuração de monitoramento padrão: A métrica `pg extensions` no `default-monitoring.yaml` utilizava uma chamada `current database()` não qualificada em todos os bancos de dados de destino. Qualquer usuário sem privilégios de superusuário que possua um banco de dados de usuário poderia sombrear essa função para disparar a escalada.
Isso permite que uma função de banco de dados com baixos privilégios escale para superusuário do PostgreSQL e obtenha execução remota de código (RCE) como o usuário `postgres` dentro do pod primário.
**Recommendations**
Atualize para a versão 1.28.3 ou 1.29.1.
Como solução temporária, qualifique o esquema de todos os identificadores em consultas de métricas personalizadas, utilizando prefixos `pg catalog.` explícitos para todas as funções e visualizações de catálogo.
Restrinja a propriedade do banco de dados para garantir que apenas funções totalmente confiáveis possuam bancos de dados de usuário em clusters monitorados.
Limite o escopo de consultas `target databases: '*'` para bancos de dados específicos e conhecidamente seguros.
Evite expor o SQL de consultas de métricas a usuários não confiáveis.