FERRAMENTAS LINUX: RLSA-2026:28143 – Atualização de Segurança Crítica para PostgreSQL 16 no Rocky Linux 8

terça-feira, 23 de junho de 2026

RLSA-2026:28143 – Atualização de Segurança Crítica para PostgreSQL 16 no Rocky Linux 8

 


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:

1. Identificação do Ambiente
bash
$ 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

bash
$ 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. 


4. Backups


Nunca aplique uma atualização de segurança sem um backup válido. Para PostgreSQL, utilize:

bash
$ pg_basebackup -D /backup/postgresql-$(date +%Y%m%d) -Fp -Xs -P -U replicator

Ou, para uma abordagem mais rápida (compatível com PITR):

bash
$ sudo -u postgres pg_dumpall -f /backup/pg_dumpall-$(date +%Y%m%d).sql

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:

bash
# 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
bash
# 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

O Rocky Linux utiliza repositórios modulares. Atualize os metadados:
bash
$ sudo dnf clean all
$ sudo dnf makecache --refresh


Por quê? O --refresh força a sincronização com os mirrors, garantindo que você obtenha a versão mais recente dos pacotes, especialmente importante para atualizações de segurança recém-lançadas.

3. Identificação das Atualizações Disponíveis

bash
$ 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

O PostgreSQL não pode ser atualizado in-place enquanto o serviço está em execução sem risco de corrupção de dados. Você tem três abordagens:



Para esta atualização minor (16.12 → 16.14), recomenda-se a parada total controlada para a maioria dos ambientes, ou failover para ambientes com SLA rigoroso.

5. Aplicação da Atualização (Modo Parada Total)

5.1. Notificação e Drenagem de Conexões
bash
# 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

bash
# 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

bash
# 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:

text
================================================================================
 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

bash
$ 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

Pacotes como pgaudit e pg_repack são extensões que podem exigir atualização no catálogo do banco:
bash
$ 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

bash
$ 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

bash
# 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:

yaml
---
- 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.


Segurança em Servidores Linux Ataque e Defesa: (anúncio) ->  https://link.amazon/B026xLFNp 


Troubleshooting


Problema Comum: Falha na Inicialização com "could not access directory"

Sintoma:

text
$ 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:

bash
# 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:

bash
$ sudo systemctl restart postgresql-16


Armadilha 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:

  1. bash
    $ 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