Teste de mutação com PITest
23 de novembro de 2021A importância do Pentest
20 de dezembro de 2021Nos últimos três meses, cerca de 40 bugs em sistemas suportados pelo PostgreSQL foram reportados pela comunidade, e, tendo isto em vista, além da busca incansável por otimizações cada vez mais satisfatórias aos clientes, o Grupo Desenvolvedor Global do PostgreSQL liberou uma atualização para as versões suportadas atualmente, incluindo as versões 14.1, 13.5, 12.9, 11.14, 10.19 e 9.6.24, trazendo, além das correções pertinentes a esses bugs, um encerramento definitivo às duas vulnerabilidades de segurança.
Importante salientar que esta é a última atualização e encerramento do suporte à versão 9.6 do PostgreSQL. Se você ainda é um usuário dessa versão em um sistema de produção, sugerimos que avalie a possibilidade de realizar, o mais breve possível, uma atualização.
Problemas de Segurança solucionados:
CVE-2021-23214: Servidor processa bytes não criptografados de um ataque man-in-the-middle*
Quando o servidor é configurado para usar autenticação confiável (trust) com um requisito clientcert ou para usar autenticação cert, um invasor man-in-the-middle pode injetar consultas SQL arbitrárias quando uma conexão é estabelecida pela primeira vez, apesar do uso de criptografia e verificação de certificado SSL.
Versões afetadas: 9.6 – 14.
CVE-2021-23222: libpq processa bytes não criptografados de um ataque man-in-the-middle
Um invasor man-in-the-middle pode injetar respostas falsas nas primeiras consultas do cliente, apesar do uso de criptografia e verificação de certificado SSL.
Se houver mais condições prévias, o invasor pode extrair a senha do cliente ou outros dados confidenciais que podem ser transmitidos no início de uma sessão. O invasor deve encontrar uma maneira de enganar o servidor pretendido do cliente para tornar os dados confidenciais acessíveis ao invasor.
Como acontece com qualquer exploração do CVE-2021-23214, o servidor deve estar usando autenticação confiável com um requisito de clientcert ou usando autenticação cert. Para divulgar uma senha, o cliente deve possuir uma senha, o que é atípico quando se usa uma configuração de autenticação vulnerável ao CVE-2021-23214. O invasor deve ter alguma outra maneira de acessar o servidor para recuperar os dados extraídos (uma conta de login válida e sem privilégios seria suficiente).
Versões afetadas: 9.6 – 14.
* O man-in-the-middle é uma forma de ataque em que os dados trocados entre duas partes são de alguma forma interceptados, registrados e, possivelmente, alterados pelo atacante sem que as vítimas percebam.
Correções de bugs e melhorias implementadas:
A breve lista a seguir afeta a versão 14 do PostgreSQL, sendo que alguns destes itens podem também afetar outras versões suportadas.
Algumas melhorias incluem:
– Correção da replicação física para os casos em que o primário trava após enviar um segmento do WAL que termina com um registro parcial do WAL. Ao aplicar esta atualização, atualize seus servidores de standby antes do primário para que eles estejam prontos para atuar com a correção se o primário travar.
– Correção do VACUUM paralelo para que processe índices abaixo do limite min_parallel_index_scan_size se a tabela tiver pelo menos dois índices acima desse tamanho. Este problema não afeta o autovacuum. Se você for afetado por esse problema, deverá reindexar todas as tabelas que recebem o VACUUM manualmente.
– Correção das causas de CREATE INDEX CONCURRENTLY e REINDEX CONCURRENTLY gravando índices corrompidos. Você deve reindexar todos os índices CONCURRENTLY.
– Correção para anexar / desanexar uma partição que poderia permitir que certas consultas INSERT/UPDATE funcionassem incorretamente em sessões ativas.
– Correção para criar um novo tipo de intervalo com CREATE TYPE que poderia causar problemas para triggers de eventos posteriores ou execuções subsequentes do comando CREATE TYPE.
– Correção de atualizações de campos de elemento em matrizes (array) de um domínio que faz parte de um composto.
– Proibição da combinação de FETCH FIRST WITH TIES e FOR UPDATE SKIP LOCKED.
– Correção da perda de precisão corner-case na função numérica power().
– Correção da restauração de um snapshot do Portal dentro de uma subtransação, o que poderia causar um travamento. Por exemplo, isso pode ocorrer em PL/pgSQL quando um COMMIT é seguido imediatamente por um bloco BEGIN … EXCEPTION que executa uma consulta.
– Limpeza correta se uma transação falhar após exportar seu snapshot. Isso poderia ocorrer se um slot de replicação fosse criado e depois revertido e, em seguida, outro slot de replicação fosse criado na mesma sessão.
– Correção para rastreamento de envoltório de “overflowed-subtransaction” em servidores stanby que podem levar à degradação do desempenho.
– Garantia de que as transações preparadas sejam devidamente contabilizadas durante a promoção de um servidor standby.
– Garantia de que o nível correto de lock seja usado ao renomear uma tabela.
– Impedimento de travar ao realizar um drop de uma role que possui objetos sendo “dropados” simultaneamente
– Desabilitado a configuração de huge_pages para “on” quando o shared_memory_type está “sysv”
– Correção da verificação do tipo de consulta em PL/pgSQL RETURN QUERY.
– Várias correções para o pg_dump, incluindo a capacidade de dump de privilégios padrão não-globais corretamente.
– Uso dos dados do projeto CLDR para mapear os nomes dos fusos horários do Windows para os fusos horários da IANA.
Da atualização:
Todas as versões de atualização do PostgreSQL são cumulativas. Tal como acontece com outras versões secundárias, os usuários não são obrigados a necessariamente usar o pg_upgrade para aplicar estas versões de atualização, é possível simplesmente desligar o PostgreSQL e atualizar os binários.
importante atentar-se ao fato de que se usuários pularam uma ou mais versões de atualização, podem precisar executar etapas adicionais de pós-atualização.