
Exploit de prova de conceito para escalonamento local de privilégios da CVE-2017-7184, um estouro de pilha do netlink XFRM do kernel Linux. Demonstra abuso de namespace e ROP no kernel para obter root sem sudo.
Este repositório contém um exploit de prova de conceito para escalação local de privilégios para CVE-2017-7184, uma vulnerabilidade do kernel Linux no subsistema netlink XFRM (IPsec).
O exploit demonstra como um usuário sem privilégios pode obter root real (UID 0) através de:
Criando um namespace de usuário + rede sem privilégios
Obtendo CAP_NET_ADMIN dentro do namespace
Disparando um estouro de pilha do kernel no tratamento do netlink XFRM
Executando uma chain ROP no kernel para chamar:
prepare_kernel_cred(NULL)commit_creds()Retornando com segurança ao userland com privilégios totais de root
Nenhum sudo é necessário.
Namespace de Usuário sem Privilégios
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN sem sudoAbuso do Netlink XFRM
NETLINK_XFRMXFRM_MSG_NEWSA malformadaExecução de ROP no Kernel
Retorno ao Userland
swapgs; iretqunprivileged_userns_clone = 1gcc com suporte a pthreadVerifique o suporte a namespaces:
cat /proc/sys/kernel/unprivileged_userns_clone
Saída esperada:
1
gcc exploit.c -o exploit -pthread
./exploit
Não use sudo.
Se for bem-sucedido, você obterá um shell root real:
uid=0(root) gid=0(root) groups=0(root)
O exploit tenta:
Vazar símbolos de /proc/kallsyms
Se for restrito, recorrer a offsets fixos (hardcoded) para:
commit_credsprepare_kernel_cred⚠️ Gadgets ROP e offsets são específicos da versão do kernel. Você deve ajustá-los para outras compilações.
Isso ainda confirma que o sistema está vulnerável.
sysctl -w kernel.unprivileged_userns_clone=0
Este código é fornecido apenas para fins educacionais e de pesquisa em segurança.
commit_creds| Campo | Valor |
|---|
| CVE | CVE-2017-7184 |
| Componente | Kernel Linux – Netlink XFRM |
| Tipo de Bug | Estouro de Pilha do Kernel |
| Impacto | Escalação Local de Privilégios |
| Vetor de Ataque | Local (usuário sem privilégios) |
| Classe do Exploit | Abuso de namespace + ROP |
| Primeiro Afetado | Kernels Linux ≤ 4.8 |
| Corrigido Em | Patches do kernel lançados em 2017 |