Atualização crítica RLSA-2026:28143 para PostgreSQL 16 no Rocky 8. Corrige RCE (CVE-2026-6473) e ataque de timing (CVE-2026-6478). Comandos práticos e automação.
Em 23 de junho de 2026, a Rocky Enterprise Software Foundation publicou o RLSA-2026:28143, uma atualização de segurança de severidade Important para o módulo postgresql:16 no Rocky Linux 8.
Esta atualização aborda duas vulnerabilidades críticas no PostgreSQL que podem comprometer a integridade, confidencialidade e disponibilidade dos dados:
A gravidade combinada destas falhas torna esta atualização mandatória para qualquer ambiente de produção que utilize PostgreSQL 16 no Rocky Linux 8.
Este guia documenta o procedimento completo de atualização, desde a avaliação de impacto até a validação pós-aplicação, com ênfase em automação, boas práticas operacionais e mitigação de riscos.
Pré-requisitos
Antes de iniciar, verifique os seguintes itens:
$ cat /etc/rocky-release Rocky Linux release 8.10 (Green Obsidian) $ uname -m x86_64 # ou aarch64
O advisory afeta exclusivamente Rocky Linux 8 em arquiteturas x86_64 e aarch64.
2. Versão do PostgreSQL em Execução
$ sudo -u postgres psql -c "SHOW server_version;" server_version ----------------- 16.12 (1 row)
A vulnerabilidade afeta PostgreSQL até 16.13 inclusive. Versões ≥ 16.14 já contêm a correção.
3. Pacotes Instalados Afetados
O RLSA-2026:28143 atualiza os seguintes pacotes:
- pgaudit – Auditoria de atividades do banco.
- pg_repack – Reorganização de tabelas sem bloqueio.
- postgres-decoderbufs – Decodificador para protocolo de replicação lógica (Debezium).
4. Backups
Nunca aplique uma atualização de segurança sem um backup válido. Para PostgreSQL, utilize:
Ou, para uma abordagem mais rápida (compatível com PITR):
5. Janela de Manutenção
Reserve uma janela de 30–60 minutos para ambientes com baixo volume de transações. Para ambientes de missão crítica, considere uma estratégia blue-green ou failover para zerar o downtime.
Passo a Passo
1. Verificação do Estado Atual do Sistema
Antes de qualquer alteração, documente o estado atual:# Lista pacotes PostgreSQL instalados com suas versões $ rpm -qa | grep -E '^(postgresql|pgaudit|pg_repack|postgres-decoderbufs)' | sort pgaudit-16.0-1.module+el8.10.0+1622+bd25b19c.x86_64 pg_repack-1.5.0-1.module+el8.10.0+1622+bd25b19c.x86_64 postgres-decoderbufs-2.4.0-1.Final.module+el8.10.0+1622+bd25b19c.x86_64 postgresql16-16.12-1.module+el8.10.0+1622+bd25b19c.x86_64 postgresql16-server-16.12-1.module+el8.10.0+1622+bd25b19c.x86_64
# Verifica se há serviços rodando $ systemctl status postgresql-16 ● postgresql-16.service - PostgreSQL 16 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; vendor preset: disabled) Active: active (running) since ...
2. Sincronização dos Repositórios
$ sudo dnf clean all $ sudo dnf makecache --refresh
3. Identificação das Atualizações Disponíveis
$ sudo dnf check-update --refresh | grep -E '(pgaudit|pg_repack|postgres-decoderbufs|postgresql)' pgaudit.x86_64 16.0-1.module+el8.10.0+40057+c37a0e3d appstream pg_repack.x86_64 1.5.1-1.module+el8.10.0+40057+c37a0e3d appstream postgres-decoderbufs.x86_64 2.4.0-1.Final.module+el8.10.0+40057+c37a0e3d appstream
Observe os build tags (+40057+c37a0e3d). Esta é a versão corrigida que contém os patches para CVE-2026-6473 e CVE-2026-6478.
4. Planejamento da Estratégia de Atualização
# Notifica usuários (via arquivo de configuração) $ sudo -u postgres psql -c "ALTER SYSTEM SET log_min_messages = 'NOTICE';" $ sudo -u postgres psql -c "SELECT pg_reload_conf();"
5.2. Parada Controlada do Serviço
# Modo inteligente: aguarda transações em andamento finalizarem (timeout: 60s) $ sudo systemctl stop postgresql-16 --timeout=60 # Verifica se o processo realmente morreu $ sudo pg_ctl -D /var/lib/pgsql/16/data status pg_ctl: no server running
Por quê? O systemctl stop com --timeout envia SIGTERM primeiro, permitindo que o PostgreSQL finalize transações ativas e faça um checkpoint limpo. Isso evita corrupção de WAL e reduz o tempo de recovery na próxima inicialização.
5.3. Aplicação dos Pacotes
# Atualização específica dos pacotes afetados $ sudo dnf update pgaudit pg_repack postgres-decoderbufs # Ou, para atualizar todo o módulo postgresql:16 $ sudo dnf module update postgresql:16
Saída esperada:
================================================================================ Package Arch Version Repository ================================================================================ Upgrading: pgaudit x86_64 16.0-1.module+el8.10.0+40057+c37a0e3d appstream pg_repack x86_64 1.5.1-1.module+el8.10.0+40057+c37a0e3d appstream postgres-decoderbufs x86_64 2.4.0-1.Final.module+el8.10.0+40057+c37a0e3d appstream Transaction Summary =============================================================================== Upgrade 3 Packages Total download size: 2.3 M Is this ok [y/N]: y
5.4. Verificação da Integridade dos Pacotes
$ rpm -V pgaudit pg_repack postgres-decoderbufs # (sem saída = integridade verificada) $ rpm -qa | grep -E '^(pgaudit|pg_repack|postgres-decoderbufs)' pgaudit-16.0-1.module+el8.10.0+40057+c37a0e3d.x86_64 pg_repack-1.5.1-1.module+el8.10.0+40057+c37a0e3d.x86_64 postgres-decoderbufs-2.4.0-1.Final.module+el8.10.0+40057+c37a0e3d.x86_64
6. Pós-Atualização: SQL e Extensões
$ sudo -u postgres psql -d postgres -c "ALTER EXTENSION pgaudit UPDATE;" ALTER EXTENSION $ sudo -u postgres psql -d postgres -c "ALTER EXTENSION pg_repack UPDATE;" ALTER EXTENSION
Por quê? Extensões possuem código SQL e objetos no banco que podem mudar entre versões. O comando ALTER EXTENSION UPDATE sincroniza a versão do catálogo com a versão binária instalada.
7. Reinicialização do Serviço
$ sudo systemctl start postgresql-16 $ sudo systemctl status postgresql-16 ● postgresql-16.service - PostgreSQL 16 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; vendor preset: disabled) Active: active (running) since ...
8. Validação Funcional
# Versão do servidor $ sudo -u postgres psql -c "SHOW server_version;" server_version ----------------- 16.14 (1 row) # Verifica se as extensões estão na versão correta $ sudo -u postgres psql -c "SELECT extname, extversion FROM pg_extension WHERE extname IN ('pgaudit','pg_repack');" extname | extversion -----------+------------ pgaudit | 16.0 pg_repack | 1.5.1 (2 rows) # Teste básico de conectividade e operações $ sudo -u postgres psql -c "SELECT 1+1 AS test;" test ------ 2 (1 row)
9. Automação com Ansible
Para ambientes com múltiplos servidores, utilize Ansible para padronizar a atualização:
--- - name: Aplicar RLSA-2026:28143 no PostgreSQL 16 hosts: postgresql_servers become: yes tasks: - name: Parar serviço PostgreSQL systemd: name: postgresql-16 state: stopped register: stop_result - name: Atualizar pacotes PostgreSQL dnf: name: - pgaudit - pg_repack - postgres-decoderbufs state: latest - name: Iniciar serviço PostgreSQL systemd: name: postgresql-16 state: started - name: Atualizar extensões no banco postgresql_query: db: postgres query: "ALTER EXTENSION {{ item }} UPDATE;" loop: - pgaudit - pg_repack become_user: postgres - name: Validar versão do PostgreSQL postgresql_query: db: postgres query: "SHOW server_version;" register: version_result failed_when: "'16.14' not in version_result.query_result"
📘 Indicação de Leitura
Esse livro é um guia prático e abrangente sobre a segurança do sistema operacional Linux como um todo. O livro ensina a pensar como um atacante para fortalecer a defesa do servidor, abordando tópicos fundamentais como:
- Ferramentas de rede: Nmap, Netcat, knockd.
- Monitoramento: de arquivos e sistemas de arquivos.
- Defesas: contra malware e ataques DDoS.
- Descoberta de vulnerabilidades: como invasores encontram pontos fracos.
Troubleshooting
Problema Comum: Falha na Inicialização com "could not access directory"
Sintoma:
$ sudo systemctl start postgresql-16 Job for postgresql-16.service failed because the control process exited with error code. See "systemctl status postgresql-16" and "journalctl -xe" for details. $ journalctl -u postgresql-16 | tail -5 postgres[1234]: FATAL: could not access directory "/var/lib/pgsql/16/data/pg_wal": Permission denied
Causa: Durante a atualização, o pacote pode ter alterado permissões ou o SELinux pode ter reaplicado contextos incorretamente.
Solução:
# Restaura permissões padrão do PostgreSQL $ sudo chown -R postgres:postgres /var/lib/pgsql/16/data $ sudo chmod 700 /var/lib/pgsql/16/data # Restaura contextos SELinux $ sudo restorecon -R -v /var/lib/pgsql/16/data # Verifica contexto $ ls -Z /var/lib/pgsql/16/data | head -5 unconfined_u:object_r:postgresql_db_t:s0 base unconfined_u:object_r:postgresql_db_t:s0 global
Após a correção, reinicie o serviço:
$ sudo systemctl restart postgresql-16Armadilha Comum: Esquecer de Atualizar as Extensões no Banco
O erro mais frequente entre administradores é instalar os novos RPMs e reiniciar o PostgreSQL, mas não executar ALTER EXTENSION UPDATE para as extensões afetadas.
Consequência: O banco continua operacional, mas funcionalidades como pgaudit podem apresentar comportamento inconsistente ou falhar silenciosamente. Em cenários críticos, isso pode comprometer logs de auditoria exigidos por conformidade (GDPR, PCI-DSS, etc.).
Como evitar:
1. Sempre consulte pg_extension antes e depois da atualização:
$ sudo -u postgres psql -c "SELECT extname, extversion FROM pg_extension ORDER BY extname;"
2. Inclua a atualização de extensões no runbook como etapa obrigatória, não opcional.
3. Para automação, utilize o módulo postgresql_ext do Ansible ou crie um script que itera sobre todas as extensões instaladas.
Conclusão
O RLSA-2026:28143 é uma atualização de segurança crítica que corrige duas vulnerabilidades de alto impacto no PostgreSQL 16 para Rocky Linux 8:
- CVE-2026-6473 (integer overflow → possível RCE/DoS)
- CVE-2026-6478 (covert timing channel → recuperação de credenciais)
A aplicação desta atualização deve ser tratada com a devida urgência, mas sem negligenciar os procedimentos de backup, planejamento de janela e validação pós-atualização.
Para ambientes de produção, recomenda-se a implementação de um processo automatizado (Ansible, Puppet ou script personalizado) que garanta a reprodutibilidade e rastreabilidade da atualização, reduzindo o risco de erro humano em momentos de alta pressão.

Nenhum comentário:
Postar um comentário