Resumo Rápido

  • A equipe do Docker lançou uma mitigação para a vulnerabilidade Copy Fail (CVE-2026-31431).
  • Para se proteger contra a vulnerabilidade Copy Fail, você deve atualizar para o Docker Engine v29.4.3 ou superior.
  • Esta versão corrigida implementa uma estratégia de defesa em profundidade usando AppArmor e SELinux para bloquear a criação de sockets AF_ALG, que é a superfície de chamada de sistema específica que o exploit requer.

Introdução

Se você usa Linux, provavelmente já ouviu falar de um grave bug de segurança chamado Copy Fail (CVE-2026-31431) que afetou recentemente muitos sistemas Linux. Essa falha afeta quase todos os sistemas Linux construídos desde 2017.

Como o Docker compartilha o núcleo do seu sistema Linux com seus containers, esse bug coloca seus containers em risco. Felizmente, a equipe do Docker lançou uma correção para a vulnerabilidade Copy Fail.

O que é o Bug Copy Fail?

Copy Fail (CVE-2026-31431) é uma falha lógica de alta gravidade no kernel Linux que permite que um usuário local não privilegiado obtenha acesso root ou escape de containers escrevendo quatro bytes controlados no page cache do sistema.

Em termos simples, Copy Fail é um erro na forma como o Linux lida com a matemática para dados criptografados. Um usuário comum pode explorar esse erro lógico para escrever dados no page cache. Como o page cache armazena cópias de arquivos na memória, um atacante pode "alterar" arquivos sem realmente tocar no disco.

Por exemplo, um hacker poderia alterar um arquivo do sistema para conceder a si mesmo poderes de "root". Em um ambiente Docker, um único container comprometido poderia potencialmente atacar todo o host ou outros containers.

Descoberta por pesquisadores da Xint Code, a vulnerabilidade Copy Fail explora o subsistema de criptografia do kernel e afeta quase todas as distribuições Linux populares lançadas desde 2017.

Um detalhe surpreendente sobre o Copy Fail é sua furtividade. É totalmente invisível para análise forense de disco. Como a escrita maliciosa ignora o caminho padrão do Virtual File System (VFS), os dados corrompidos existem apenas na RAM e nunca atingem o disco físico.

Consequentemente, uma imagem forense do disco mostrará o arquivo original limpo, e a corrupção desaparece completamente sem deixar vestígios assim que o sistema reinicia ou o page cache é liberado.

Como o Docker Protege Você

O exploit depende de um tipo específico de conexão chamado socket AF_ALG. Para interromper o ataque, o Docker precisava bloquear a criação dessas conexões pelos containers.

A Primeira Tentativa (v29.4.2)

Inicialmente, o Docker tentou bloquear esses sockets usando uma ferramenta chamada seccomp. No entanto, esta versão também bloqueou uma ferramenta de sistema mais antiga chamada socketcall. Embora isso interrompesse o bug, acidentalmente quebrou a rede para aplicativos de 32 bits, programas Go e jogos legados.

A Correção Melhorada (v29.4.3)

A versão v29.4.3 do Docker corrige esses problemas. Em vez de bloquear demais, ela usa camadas de segurança mais inteligentes, como AppArmor e SELinux. Essas ferramentas interrompem especificamente as conexões do "Copy Fail" sem quebrar seus aplicativos de 32 bits.

Passos para Aplicar a Mitigação do Copy Fail no Docker

Para proteger seus containers Docker contra o exploit Copy Fail:

1. Atualize seu Kernel Linux

Esta é a única maneira de corrigir a causa raiz do bug. Verifique sua distribuição Linux para as últimas correções de segurança.

Distribuições Linux populares já lançaram patches para corrigir a vulnerabilidade Copy Fail. O Fedora 41, por exemplo, recebeu o kernel 7.0.4 com a correção. Para aplicar as correções, basta atualizar seu sistema e reiniciar.

Ubuntu / Debian

sudo apt update && sudo apt full-upgrade -y
sudo reboot

Fedora

sudo dnf upgrade --refresh -y
sudo reboot

RHEL / AlmaLinux / Rocky Linux

sudo dnf update -y
sudo reboot

CentOS Stream

sudo dnf upgrade -y
sudo reboot

Arch Linux

sudo pacman -Syu
sudo reboot

openSUSE

sudo zypper refresh
sudo zypper update -y
sudo reboot

Alpine Linux

sudo apk update
sudo apk upgrade
sudo reboot

2. Atualize o Docker Engine

Se você não puder corrigir o kernel imediatamente, o Docker lançou uma mitigação no Docker Engine v29.4.3 e posteriores.

$ sudo docker version
[sudo: authenticate] Password:
Client: Docker Engine - Community
Version:           29.5.2
API version:       1.54
Go version:        go1.26.3
Git commit:        79eb04c
Built:             Wed May 20 14:38:06 2026
OS/Arch:           linux/amd64
Context:           default
Server: Docker Engine - Community
Engine:
Version:          29.5.2
API version:      1.54 (minimum version 1.40)
Go version:       go1.26.3
Git commit:       568f755
Built:            Wed May 20 14:38:06 2026
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          v2.2.4
GitCommit:        193637f7ee8ae5f5aa5248f49e7baa3e6164966e
runc:
Version:          1.3.5
GitCommit:        v1.3.5-0-g488fc13e
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

Isso fornece uma camada vital de defesa mesmo que você não possa reiniciar todo o servidor ainda.

No entanto, atualizar o kernel Linux e reiniciar o sistema ainda é fortemente recomendado.

3. Colocar Módulos na Lista Negra

Se você não puder atualizar seu sistema imediatamente, pode desabilitar manualmente as partes afetadas do Linux. Você pode fazer isso adicionando blacklist af_alg às configurações de módulo do seu sistema.

Considerações Finais

Bem, agora há uma mitigação disponível para o Docker para ajudar a proteger contra a vulnerabilidade Copy Fail (CVE-2026-31431). Se você não puder corrigir o kernel do host imediatamente, deve atualizar para o Docker Engine v29.4.3 ou superior.

No entanto, ainda é fortemente recomendado que você atualize o kernel do host e reinicie o sistema. Ao atualizar tanto o kernel quanto o Docker Engine, você pode proteger seus sistemas contra várias vulnerabilidades críticas de escalonamento de privilégio local (LPE).