Os desenvolvedores do PostgreSQL acabam de liberar as últimas versões de seu banco de dados relacional de código aberto e revelaram sobre a brecha de segurança crítica que levaram ao fechamento do acesso ao código-fonte dessa ferramenta na semana passada, enquanto uma correção era implementada. As versões afetadas do PostgreSQL são 9.0, 9.1 e 9.2, porém os desenvolvedores não descobriram nenhuma exploração dessa falha até o presente momento. Já os usuários da versão 8.2 do PostgreSQL não foram afetados por essa brecha em particular. Os desenvolvedores também lembram aos usuários de versões anteriores à série 8.x que os mesmos estão rodando versões não-suportadas desse banco de dados relacional, os quais não mais recebem correções de falhas.
A Brecha
Esse é um problema de segurança muito sério. Se um atacante consegue obter a porta de rede de comunicação do PostgreSQL (por exemplo, se o banco de dados estiver na nuvem pública) é possível causar danos ao servidor. A falha permite ao atacante utilizar a linha de comando de uma conexão PostgreSQL para acessar o servidor, o qual só deveria permitir acesso em modo mono-usuário de recuperação do sistema. A requisição precisa fazer um pedido de conexão para uma base de dados que começa com "-".
Ao explorar a falha, um atacante não autorizado pode gerar um DoS (Denial of Service) persistente. Ele é capaz de anexar mensagens de erro do PostgreSQL para arquivos de sua escolha no diretório de dados da própria base de dados, os quais podem gerar a queda do servidor. Os arquivos podem ser corrigidos ao remover as mensagens de erro ou efetuar uma recuperação dos dados via backup (se existir).
Para piorar as coisas, caso o usuário possua um login legítimo no servidor onde o PostgreSQL esteja operando, com o mesmo nome da base de dados, então a vulnerabilidade pode ser abusada, permitindo que os privilégios desse usuário sejam suficientes para alterar uma variável de configuração como se possuísse privilégios de super-usuário. Assim sendo, se o atacante possui todos os pré-requisitos básicos e tem a capacidade de salvar arquivos em qualquer lugar do sistema (incluindo /tmp), então o mesmo poderá ir mais além e executar código C arbitrário.
Os administradores de sistemas com PostgreSQL são aconselhados a baixar as versões 9.2.4, 9.1.9 ou 9.013 para resolver esse problema. Os desenvolvedores também liberaram uma FAQ que fornece maiores detalhes sobre essa falha e o motivo para fechar temporariamente o acesso ao código fonte das versões antigas afetadas.
Saiba Mais:
Heise Online: PostgreSQL critical security fix now available (em Inglês)