FERRAMENTAS LINUX: RLSA-2026:33577 — Atualização Crítica de Segurança do Ruby no Rocky Linux 9

quarta-feira, 1 de julho de 2026

RLSA-2026:33577 — Atualização Crítica de Segurança do Ruby no Rocky Linux 9

 



Atualização crítica de segurança Ruby no Rocky Linux 9 corrige três CVEs no net-imap. Guia prático com comandos, verificação pós-patch e troubleshooting para equipes de infraestrutura.


Em 1º de julho de 2026, a Rocky Linuxx publicou o aviso de segurança RLSA-2026:33577, classificado como Importante, direcionado ao módulo ruby:4.0 no Rocky Linux 9. 

O boletim aborda três vulnerabilidades críticas na biblioteca net-imap do Ruby, afetando diretamente os pacotes rubygem-mysql2 e rubygem-pg.

As CVEs corrigidas são:


  • CVE-2026-42245 — complexidade quadrática no Net::IMAP::ResponseReader ao processar respostas com muitas strings literais, causando DoS por consumo excessivo de CPU.

  • CVE-2026-42246 — STARTTLS stripping: atacante MITM pode forçar Net::IMAP#starttls a retornar "sucesso" sem estabelecer TLS, expondo o tráfego em texto plano.

  • CVE-2026-42258 — injeção de comandos IMAP via argumentos do tipo Symbol (CRLF Injection), permitindo execução arbitrária de comandos com CVSS 9.8 (Crítico).


Este guia apresenta o procedimento de aplicação do patch, verificação de integridade e boas práticas operacionais para ambientes de produção.


Pré-requisitos


  • Sistema: Rocky Linux 9 (x86_64, aarch64, ppc64le ou s390x)

  • Acesso: sudo ou root

  • Repositórios: repositórios base e appstream configurados e sincronizados

  • Backup: recomendado backup dos Gemfiles e aplicações Ruby antes da atualização


Janela de manutenção: planeje um downtime ou rotação de instâncias, pois a atualização pode reiniciar serviços dependentes do Ruby.


Passo a Passo


1. Identificação do Estado Atual

Antes de qualquer alteração, documente a versão dos pacotes instalados:

bash
$ rpm -qa | grep -E 'rubygem-(mysql2|pg)|ruby'
ruby-4.0.0-1.module+el9.8.0+40094+ce01217c.x86_64
rubygem-mysql2-0.5.4-1.module+el9.8.0+40094+ce01217c.x86_64
rubygem-pg-1.3.5-1.module+el9.8.0+40094+ce01217c.x86_64

Por que fazer isso ? Ter um registro do estado pré-patch permite auditoria e rollback, caso necessário. Em ambientes com múltiplos nós, mantenha um inventário das versões.

2. Atualização dos Pacotes via DNF

A atualização pode ser aplicada de duas formas:

Opção A — Atualização seletiva (recomendada para produção):

bash
$ sudo dnf update --security --assumeno

A flag --assumeno simula a operação e exibe o que será atualizado. Após revisão, execute:

bash
$ sudo dnf update --security -y

Opção B — Atualização específica do módulo ruby:4.0:

bash
$ sudo dnf module update ruby:4.0 --security -y

Saída esperada (trecho):

text
Dependencies resolved.
================================================================================
 Package              Arch    Version                       Repository      Size
================================================================================
Upgrading:
 rubygem-mysql2       x86_64  0.5.7-1.module+el9.8.0+40094+ce01217c  appstream  87 k
 rubygem-pg           x86_64  1.4.6-1.module+el9.8.0+40094+ce01217c  appstream  92 k
...
Transaction Summary
================================================================================
Upgrade  12 Packages

Por que --security ? O DNF filtra apenas atualizações com classificação de segurança, evitando upgrades indesejados de pacotes não relacionados.

3. Verificação Pós-Atualização

Confirme que os pacotes foram atualizados para as versões corrigidas:

bash
$ rpm -q rubygem-mysql2 rubygem-pg
rubygem-mysql2-0.5.7-1.module+el9.8.0+40094+ce01217c.x86_64
rubygem-pg-1.4.6-1.module+el9.8.0+40094+ce01217c.x86_64

A versão alvo do rubygem-mysql2 é 0.5.7-1 (anteriormente 0.5.4). Para o rubygem-pg, a versão corrigida é 1.4.6-1.

Verifique também se o módulo foi atualizado:

bash
$ dnf module list ruby --show-duplicates

4. Validação Funcional da Biblioteca net-imap

A vulnerabilidade CVE-2026-42246 (STARTTLS stripping) exige atenção especial: o patch não altera o comportamento da API, mas a aplicação deve agora verificar explicitamente Net::IMAP#tls_verified? após starttls.

Exemplo de código vulnerável (pré-patch):

ruby
imap = Net::IMAP.new('mail.example.com', port: 143)
imap.starttls
imap.login('user', 'pass')  # se starttls falhou silenciosamente, a senha vai em texto plano

Exemplo corrigido (pós-patch):

ruby
imap = Net::IMAP.new('mail.example.com', port: 143)
imap.starttls
unless imap.tls_verified?
  raise SecurityError, 'STARTTLS negotiation failed — connection not encrypted'
end
imap.login('user', 'pass')

Por que isso é crítico ? O CVE-2026-42246 permite que um atacante em posição de MITM suprima a negociação TLS sem que a aplicação perceba. A correção no net-imap torna o comportamento mais seguro, mas a camada de aplicação ainda precisa validar o status da conexão.


5. Reinicialização de Serviços Dependentes

Após a atualização, serviços que carregam as gems afetadas (Sidekiq, Action Mailer, qualquer worker que use Net::IMAP) precisam ser reiniciados:

bash
$ sudo systemctl restart sidekiq
$ sudo systemctl restart my-rails-app

Em ambientes containerizados, reconstrua as imagens ou reinicie os pods:

bash
$ kubectl rollout restart deployment/my-app

📘  Indicação de Leitura 


Livro: Segurança em Servidores Linux Ataque e Defesa

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/B028FU0iW

Eu ganho uma comissão quando você faz uma compra.


Troubleshooting


Problema Comum: Net::IMAP ainda reporta versão vulnerável

Cenário: Após a atualização, a aplicação Ruby ainda carrega uma versão antiga do net-imap por meio de uma Gem instalada via Bundler, ignorando a versão do sistema.

Solução:

1. Verifique a versão carregada no runtime:

  1. bash
    $ ruby -e "require 'net/imap'; puts Net::IMAP::VERSION"

2. Se a versão for inferior a 0.4.24 (ou 0.5.14 / 0.6.4, dependendo do branch), a Gem local está sobrescrevendo a do sistema.

3. Atualize o Gemfile da aplicação:

  1. ruby
    gem 'net-imap', '~> 0.6.4'  # ou '~> 0.5.14' para compatibilidade

4. Execute bundle update net-imap e reinicie a aplicação.


Armadilha comum: 

Iniciantes assumem que o patch do sistema (dnf update) é suficiente para aplicações Ruby que usam Bundler. 

Não é. O Bundler isola as Gems do sistema. A atualização do sistema corrige a biblioteca base, mas a aplicação precisa ser explicitamente recompilada/reinstalada para usar a versão corrigida.


Conclusão


O RLSA-2026:33577 é uma atualização obrigatória para qualquer ambiente Rocky Linux 9 que utilize Ruby com funcionalidades IMAP. 

As três CVEs corrigidas abrangem desde negação de serviço (CVE-2026-42245) até injeção de comandos com CVSS 9.8 (CVE-2026-42258) e interceptação de tráfego por STARTTLS stripping (CVE-2026-42246).

O procedimento de patch é direto via dnf update --security, mas a validação pós-patch — especialmente a verificação de versão das Gems e a adaptação do código para tls_verified? — é igualmente crítica. 

Em ambientes com Bundler, a atualização do sistema é apenas o primeiro passo; a aplicação precisa ser reconfigurada para consumir a versão corrigida da biblioteca.

Mantenha-se atento aos avisos de segurança da Rocky Linux e priorize a automação dessas atualizações em esteiras de CI/CD para reduzir o tempo entre a divulgação e a aplicação do patch em produção.

Nenhum comentário:

Postar um comentário