Os desenvolvedores do PostgreSQL liberaram as versões (veja aqui) mais recentes do banco de dados e revelaram a falha de segurança crítica que os levou a fechar o acesso ao código fonte do PostgreSQL, na semana passada, enquanto era feita a correção. Foram afetados o PostgreSQL 9.0, 9.1 e 9.2, embora os desenvolvedores não conheçam nenhum exploit da falha sendo usado em estado selvagem. Usuários do PostgreSQL 8.4 não são afetados por este problema particular. Os desenvolvedores lembram os usuários de versões anteriores de que estão executando edições sem suporte do banco de dados e das falhas de segurança sem correção em seus servidores.
Se um invasor puder acessar a porta de rede PostgreSQL, por exemplo no caso do banco de dados estar em nuvem pública, é possível causar danos ao servidor. A falha permite que um invasor utilize um switch de linha de comando em uma conexão PostgreSQL para um servidor em execução, que só foi feito para ser usado em modo de recuperação single-user. A requisição precisa fazer um pedido de conexão para um banco de dados que começa com um "-".
Explorando a falha, um invasor não autenticado poderia realizar um persistente ataque do tipo denial of service, capazes de acrescentar mensagens de erro PostgreSQL para arquivos selecionados no diretório de dados do banco de dados que, por sua vez, poderiam fazer com que o servidor deixasse de funcionar. Os arquivos podem ser corrigidos ao se remover o texto da mensagem de erro ou por recuperação do sistema via backup.
Se o usuário possuir um login legítimo para o servidor, e apenas se o usuário possuir o mesmo nome do banco de dados, então a vulnerabilidade seria ainda mais explorada, com a elevação de privilégios suficientes para alterar uma variável de configuração a privilégios de super usuário. Se o invasor cumprir os requisitos anteriores e puder salvar arquivos em qualquer lugar do sistema, inclusive no /tmp, então poderia ir ainda mais longe, carregando e executando código arbitrário C.
Administradores de sistemas PostgreSQL são aconselhados a baixar o PostgreSQL 9.2.4, 9.1.9 ou 9.0.13 para resolver o problema. Os desenvolvedores também lançaram uma FAQ que fornece mais detalhes sobre a falha e o encerramento do código. Ela também explica a quem foi dado acesso ao código fixo e como o fornecedor de nuvem Heroku teve acesso antecipado devido à sua vulnerabilidade e preparação para testar as correções contra os aplicativos em execução.
A falha crítica, no entanto, não é a única correção de segurança apresentada. Duas outras correções de segurança - uma para corrigir geração de números aleatórios e outra que permitia que usuários sem privilégios interferissem em backups - também foram feitas. Dois problemas com instaladores gráficos PostgreSQL em Linux e Mac OS X que envolviam passagem insegura de senhas de superusuário em um script e do uso de arquivos /tmp previsíveis também foram corrigidos.
Além da segurança, uma série de outras pequenas correções foram feitas no banco de dados, incluindo correções para indexação GIST, vazamentos de buffer e memória, melhoria na recuperação de falhas, e prevenção de várias outras falhas. Há também uma atualização 8.4, a 8.4.17, que inclui estas mudanças, se necessário. Detalhes completos estão disponíveis nas notas de lançamento para as versões.