A CVE-2026-31431 é uma vulnerabilidade grave de escalonamento local de privilégios no kernel do Linux. Este documento descreve como aplicar uma mitigação temporária ao desabilitar a criação de sockets AF_ALG por meio de um RPM de livepatch, sem reinicializar o sistema. Aplique esta mitigação apenas se seus serviços não dependerem de sockets AF_ALG.
Após a implantação desta solução, qualquer processo dependente de sockets
AF_ALGfalhará ao criá-los, o que pode indisponibilizar seus serviços. Não implante esta solução sem ter certeza absoluta de que seus serviços não utilizam socketsAF_ALG.Esta solução introduz riscos de estabilidade. Adote uma abordagem gradual na implantação e evite aplicá-la em todo o ambiente de produção simultaneamente.
Durante a implantação gradual, monitore atentamente a estabilidade dos serviços, os logs de erros e as métricas de desempenho. Reverta a alteração imediatamente caso detecte anomalias.
Contexto
A CVE-2026-31431 é uma vulnerabilidade grave de escalonamento local de privilégios no módulo algif_aead do kernel do Linux.
Ao combinar uma sequência específica de chamadas de socket AF_ALG com a chamada de sistema splice(), um invasor consegue burlar verificações padrão de permissão e executar uma gravação não autorizada de 4 bytes no cache de páginas de um arquivo arbitrário. Invasores exploram essa falha para adulterar a imagem na memória de programas setuid, como o /usr/bin/su, e escalar privilégios de usuário comum para root sem alterar o conteúdo do arquivo em disco.
Para mais detalhes, consulte [[Aviso de Segurança] Risco de vulnerabilidade de escalonamento local de privilégios no kernel do Linux (CVE-2026-31431)](https://www.aliyun.com/notice/118231).
Limitações
Essa mitigação desabilita, no nível do kernel, todas as operações de criptografia e descriptografia que utilizam sockets AF_ALG. Serviços dependentes dessas operações deixarão de funcionar. Verifique se seus serviços dependem de sockets AF_ALG antes de aplicar esta mitigação. Se houver dúvidas sobre a dependência dos seus serviços em relação ao recurso de socket AF_ALG, não prossiga.
Para verificar se seus serviços utilizam sockets AF_ALG em operações criptográficas no nível do kernel, use o auditd ou eBPF (extended Berkeley Packet Filter) para monitorar a criação desses sockets. O exemplo abaixo usa o auditd:
# First, ensure the auditd service is enabled.
systemctl start auditd
# If other audit rules are already configured on the system, back them up and assess the impact first.
# Add an audit rule for AF_ALG sockets.
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
# After a period of time, check the audit results.
ausearch -k afalg_socket -ts recent -i
# Expected result: If any process created an AF_ALG socket during this period, audit records are displayed.
# When you are finished, delete the audit rule for AF_ALG sockets.
auditctl -d always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
Essas verificações servem apenas como referência e não garantem a exclusão total de dependências do AF_ALG. Revise também o código-fonte da sua aplicação, a lista de dependências e o comportamento em tempo de execução.
Aplicar a mitigação
Antes de prosseguir, confirme que seus serviços não dependem da funcionalidade de socket AF_ALG e que você aceita as limitações nos recursos relacionados ao AF_ALG.
Etapa 1: Verificar pré-requisitos
Antes da implantação, verifique se o sistema atende às duas condições abaixo:
O kernel tem suporte a livepatch habilitado.
O pacote kernel-devel correspondente à versão atual do kernel está instalado.
# 1. Check whether the kernel-devel package for the running kernel is installed.
test -d "/lib/modules/$(uname -r)/build" && echo "kernel-devel OK" || echo "Please install kernel-devel-$(uname -r)"
# If the package is missing, install it:
sudo yum install -y kernel-devel-$(uname -r)
# 2. Check whether livepatch support is enabled in the kernel.
test -d /sys/kernel/livepatch && echo "livepatch sysfs OK"
Etapa 2: Instalar o pacote RPM
# 1. Download the RPM package for your operating system version. (The download links are protected by an allowlist. To get an authorized link, join DingTalk group 179525012975.)
# 2. Install the RPM package. For example, on Alibaba Cloud Linux 3:
sudo yum install disable-af-alg-livepatch-1.0.0-1.al8.noarch.rpm
Ao atualizar o kernel, reinstale o pacote RPM correspondente para manter a mitigação ativa.
Etapa 3: Verificar a mitigação
Método 1: Verificar o status do livepatch
Este método aplica-se ao Alibaba Cloud Linux 3 e ao Alibaba Cloud Linux 4:
# Check the livepatch status.
kpatch list
# Expected output: "disable_af_alg [enabled]" appears in the "Loaded patch modules:" list.
Método 2: Validar o bloqueio de sockets AF_ALG
Execute o script Python a seguir para confirmar o bloqueio na criação de sockets AF_ALG:
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(38, socket.SOCK_SEQPACKET, 0) # 38 = AF_ALG
print("AF_ALG socket create: SUCCESS (Mitigation is not effective)")
s.close()
except OSError as e:
if e.errno == errno.EAFNOSUPPORT:
print(f"AF_ALG socket create: FAILED (Mitigation is effective)")
else:
print(f"AF_ALG socket create: FAILED (Unexpected error),errno={e.errno}, msg={e.strerror}")
PY
Reverter a alteração
Caso enfrente problemas nos serviços após a implantação, desinstale a mitigação:
sudo yum remove disable-af-alg-livepatch
Após a desinstalação, execute o script de verificação para confirmar a remoção da interceptação de sockets AF_ALG.