
CVE-2026-64531 (OVSwrap) PoC - LPE do Open vSwitch no kernel Linux; para validação de patches e pesquisa de segurança
PoC de escalonamento de privilégios local (usuário comum → root) no módulo Open vSwitch do kernel Linux. Utiliza o wraparound de inteiro do campo nla_len de 16 bits para elevar de usuário comum até root.
Quando o fluxo de actions aninhadas gerado pelo OVS excede 65535 bytes, o campo nla_len de 16 bits sofre wraparound. O atacante, apenas com CAP_NET_ADMIN dentro de um namespace privado de usuário/rede, pode construir uma action CLONE superdimensionada, fazendo o parser do kernel cair em dados conntrack controlados pelo atacante, obtendo assim primitivas de leitura arbitrária do kernel e decrementação byte a byte, e por fim adulterando suas próprias credenciais para escalar para root.
O bug decorre de uma atribuição insegura existente há 13 anos (commit 74f84a5726c7), anteriormente protegida pelo limite de 32 KiB no tamanho total; foi ativada depois que o commit a1e64addf3ff de março de 2025 removeu o limite.
openvswitch do kernel Linuxunshare -Urn (sem necessidade de privilégios no namespace inicial)As séries 6.13–6.17, 6.19 e 7.0 já estão em EOL (fim de vida) e não têm correção.
unshare -Urn), sudo instalado# 必须以普通(非 root)用户运行
python3 ovswrap-poc.py
O script faz unshare -Urn automaticamente para entrar em um namespace privado de usuário + rede; ele inclui uma tabela de offsets pré-derivada com cerca de 800 builds do kernel x86-64; se não houver correspondência, tenta derivar dinamicamente a partir de System.map / BTF / pahole. Após o sucesso, obtém um shell root sem senha gravando uma entrada em /etc/sudoers.d/.
Apenas para pesquisa de segurança, validação de vulnerabilidades e testes defensivos. Este PoC corrompe credenciais do kernel, modifica o arquivo sudoers, deixa processos zumbis e estado OVS corrompido; execute-o somente em uma máquina virtual descartável, não em ambientes de produção ou não autorizados.
3f1f755366687d051174739fb99f7d560202f60b| Série do kernel | Intervalo afetado | Primeira versão corrigida |
|---|
| 5.15.y | 5.15.180 – 5.15.211 | 5.15.212 |
| 6.1.y | 6.1.132 – 6.1.177 | 6.1.178 |
| 6.6.y | 6.6.84 – 6.6.144 | 6.6.145 |
| 6.12.y | 6.12.20 – 6.12.96 | 6.12.97 |
| 6.18.y | 6.18.0 – 6.18.39 | 6.18.40 |
| 7.1.y | 7.1.0 – 7.1.4 | 7.1.5 |