Mdisec

#624de 60,391
346.3CVSS total
Vulnerabilidades · 43
Baixa
1
Média
5
Alta
31
Crítica
6
PT-2026-39753
2026-05-11
9.9
CVE-2026-44477
Postgresql Global Development Group
Postgresql
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.