Guia prático para aplicar a atualização de segurança ELSA-2026-29702 do runc no Oracle Linux 9, com comandos reais, verificação prévia e pós-atualização, troubleshooting e boas práticas.
Em 26 de junho de 2026, a Oracle liberou o aviso de segurança ELSA-2026-29702, uma atualização Important para o pacote runc no Oracle Linux 9.
O runc é a implementação de referência da Open Container Initiative (OCI) para criar e executar containers — ou seja, é o coração de qualquer stack containerizada no Linux, desde Docker e Podman até Kubernetes e ambientes OpenShift.
Esta atualização corrige três CVEs que afetam o runtime do container em camadas críticas:
A severidade Important não é para ser tratada como um simples "patch de rotina". As vulnerabilidades de negação de serviço (CVE-2026-32280 e CVE-2026-32281) podem tornar um nó containerizado inoperante ao consumir CPU excessiva durante validações TLS.
Já a CVE-2026-25679, por afetar o parsing de IPv6, pode gerar comportamentos inesperados em ambientes com redes IPv6.
Público-alvo: administradores de infraestrutura com conhecimento intermediário/avançado em linha de comando. O foco aqui é ação — comandos reais, saídas esperadas e o "porquê" de cada passo.
Pré-requisitos
Antes de qualquer coisa, valide os seguintes pontos:
1. Sistema alvo: Oracle Linux 9 (qualquer arquitetura: x86_64 ou aarch64).
2. Acesso root ou sudo com privilégios elevados.
3. Repositório configurado: Acesso ao Unbreakable Linux Network (ULN) ou ao repositório público da Oracle.
4. Backup: Em ambientes de produção, tenha um plano de rollback — o runc é dependência crítica de Docker, Podman, containerd e CRI-O.
5. Janela de manutenção: A atualização exige reinicialização do dockerd/containerd e de todos os containers em execução.
⚠️ Importante: A atualização para runc-1.4.2-2.el9_8 é cumulativa e substitui qualquer versão anterior. Não há atualização parcial — ou você aplica o pacote completo ou fica vulnerável.
Passo a Passo
$ rpm -q runc runc-1.4.1-1.el9_8.x86_64
Ou, se preferir verificar o binário diretamente:
$ runc --version runc version 1.4.1 commit: v1.4.1-0-gb14b3c4 spec: 1.0.2-dev
$ uname -a Linux oracle9-node01 5.15.0-400.xxx.el9uek.x86_64 #1 SMP ... x86_64 x86_64 x86_64 GNU/Linux
Por quê ? O pacote runc é específico por arquitetura — x86_64 e aarch64 têm RPMs distintos. Saber a arquitetura evita baixar o pacote errado.
$ sudo lsof | grep -E "runc|containerd" | head -20 $ sudo systemctl status docker containerd podman 2>/dev/null | grep -E "Active|Loaded"
Registre quais serviços estão ativos. Você precisará reiniciá-los após a atualização.
2. Obtendo a Atualização
A Oracle disponibiliza o pacote atualizado através do ULN (Unbreakable Linux Network).
2.1. Via yum/dnf (recomendado)
$ sudo dnf check-update runc Last metadata expiration check: 0:05:12 ago on Thu Jun 26 10:15:33 2026. runc.x86_64 1.4.2-2.el9_8 ol9_baseos_latest
Para aplicar:
$ sudo dnf update runc -y
Saída esperada (trecho):
Transaction Summary ================================================================================ Install 1 Package Upgrade 1 Package Total download size: 3.2 M Downloading Packages: runc-1.4.2-2.el9_8.x86_64.rpm 2.1 MB/s | 3.2 MB 00:01 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Upgrading : runc-1.4.2-2.el9_8.x86_64 1/2 Cleanup : runc-1.4.1-1.el9_8.x86_64 2/2 Verifying : runc-1.4.2-2.el9_8.x86_64 1/2 Verifying : runc-1.4.1-1.el9_8.x86_64 2/2 Upgraded: runc-1.4.2-2.el9_8.x86_64 Complete!
2.2. Via RPM manual (fallback)
Caso precise baixar o RPM diretamente:
# Para x86_64 $ curl -O http://oss.oracle.com/ol9/SRPMS-updates/runc-1.4.2-2.el9_8.src.rpm # Para aarch64, o URL é similar, mas com o sufixo adequado
💡 O SRPM (Source RPM) está disponível em http://oss.oracle.com/ol9/SRPMS-updates/. Para instalação direta, use os RPMs binários, não o SRPM.
3. Pós-Atualização: Reinicialização e Validação
A atualização do runc não requer reboot do sistema operacional, mas requer reinicialização dos serviços que o utilizam (containerd, dockerd, podman, etc.).
3.1. Verificar a nova versão
$ rpm -q runc runc-1.4.2-2.el9_8.x86_64 $ runc --version runc version 1.4.2 commit: v1.4.2-0-g123abc spec: 1.0.2-dev
3.2. Reiniciar serviços dependentes
A ordem correta é:
# Para ambientes Docker $ sudo systemctl stop docker $ sudo systemctl restart containerd $ sudo systemctl start docker # Para Podman (geralmente não requer restart, mas é recomendado) $ sudo systemctl restart podman # Para CRI-O (Kubernetes) $ sudo systemctl restart crio
3.3. Validar containers em execução
Após reiniciar os serviços, verifique se os containers existentes estão operacionais:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abc123def456 nginx:latest "nginx -g '…" 2 hours ago Up 2 minutes 80/tcp web-nginx $ podman ps -a
🧠 Por quê ? O runc é o runtime que efetivamente "executa" o container. Ao substituir o binário, os processos filhos (containers) continuam rodando, mas novos containers usarão a nova versão. Containers existentes não são migrados automaticamente para a nova versão do runc — eles continuam associados à versão antiga até serem recriados.
3.4. Recriar containers para garantir a nova versão
Para garantir que todos os containers estejam usando o novo runtime:
# Para Docker: drenar e recriar (em produção, use estratégias de rollout) $ docker stop $(docker ps -q) $ docker rm $(docker ps -aq) $ docker-compose up -d # ou docker run ...
Em ambientes Kubernetes, um rollout dos Deployments/StatefulSets é suficiente:
$ kubectl rollout restart deployment/<nome-do-deployment>
4. Verificação de Segurança (Opcional, mas Recomendado)
Para confirmar que as CVEs foram realmente corrigidas, você pode verificar se o pacote contém os patches:
$ rpm -q --changelog runc | grep -E "CVE-2026-25679|CVE-2026-32280|CVE-2026-32281" - Resolves: RHEL-158787 (CVE-2026-25679, CVE-2026-32280, CVE-2026-32281)
Ou, de forma mais detalhada:
$ rpm -qi runc | grep -E "Version|Release|Build Date" Name : runc Version : 1.4.2 Release : 2.el9_8 Build Date : Thu Jun 25 08:00:00 2026
A data de build (25 de junho de 2026) é consistente com a liberação do advisory.
📘 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.
Eu ganho uma comissão quando você faz uma compra.
Troubleshooting
Problema Comum: "runc: symbol lookup error" após a atualização.
Sintoma:
$ docker run hello-world docker: Error response from daemon: OCI runtime create failed: runc: symbol lookup error: /usr/bin/runc: undefined symbol: [...]
Causa: Incompatibilidade de versão entre o runc e a biblioteca libseccomp ou libc do sistema. O Oracle Linux 9 utiliza libseccomp para restrições de syscall — se a versão for muito antiga, o novo runc pode não encontrar símbolos esperados.
Solução:
1. Atualize libseccomp simultaneamente:
$ sudo dnf update libseccomp -y
2. Verifique a versão da biblioteca:
$ rpm -q libseccomp libseccomp-2.5.4-3.el9.x86_64
3. Se o problema persistir, reinstale o runc forçadamente:
$ sudo dnf reinstall runc -y
4. Reinicie o containerd e o docker novamente.
Prevenção: Sempre atualize o sistema como um todo (dnf update) em vez de pacotes isolados, para evitar inconsistências de dependências.
Armadilha Comum: Não reiniciar os serviços após a atualização
O erro: O administrador aplica o dnf update runc, verifica a versão com rpm -q runc e considera o trabalho concluído. Porém, o containerd/dockerd continua usando o binário antigo em memória até ser reiniciado.
Consequência: Novos containers continuam sendo criados com a versão vulnerável do runc. A correção só é efetivada após o restart dos serviços.
Solução correta:
$ sudo systemctl restart containerd $ sudo systemctl restart docker
Verificação: Para confirmar que o serviço está usando o novo binário:
$ sudo lsof -p $(pidof containerd) | grep runc containerd 12345 root mem REG 253,0 3456789 /usr/bin/runc
Se o caminho apontar para /usr/bin/runc (e não para uma versão anterior em /tmp ou /var/lib), está correto.
Conclusão
A atualização ELSA-2026-29702 para o runc no Oracle Linux 9 é uma correção de segurança Important que aborda três CVEs críticas:
- CVE-2026-25679: parse incorreto de IPv6 no net/url
- CVE-2026-32280: DoS por validação ineficiente de cadeias de certificados TLS
- CVE-2026-32281: DoS por validação ineficiente no crypto/x509
O processo de atualização é simples — um dnf update runc seguido de reinicialização dos serviços dependentes — mas requer atenção aos detalhes: verificação da arquitetura, validação pós-atualização e, crucialmente, o restart de containerd/dockerd para que a nova versão seja efetivamente utilizada.
Em ambientes de produção, planeje a atualização com rollout gradual: atualize os nós de teste primeiro, monitore os logs e, somente então, proceda com os nós de produção.
Lembre-se de que containers existentes continuam usando a versão antiga do runtime — recrie-os para garantir a correção completa.
O runc é a base de toda a stack containerizada. Manter-se atualizado não é apenas uma boa prática — é um requisito operacional para infraestruturas seguras e resilientes.

Nenhum comentário:
Postar um comentário