
Um ambiente de testes para CVE-2016-0728, um bug de vazamento/estouro de refcount no Linux
Este repositório contém um programa de teste para o CVE-2016-0728, um bug de vazamento e estouro de contagem de referência (refcount) no Linux, que leva a um uso após liberação (use-after-free).
O bug foi encontrado e explicado pela Perception Point. Não sou afiliado a eles.
Welcome to the CVE-2016-0728 testbed
sizeof(struct msg_msg) == 0x30, sizeof(struct key) == 0xb8
PID: 27673, UID: (1000/1000)
Keyring: 1b66e5d6, "test-1a328d6e"
Usage: 1
Press a key: (f)ork (i)ncref (a)uto-incref (r)evoke (h)eap-spray (s)hell (q)uit
No meu sistema de teste, um shell root pôde ser obtido da seguinte forma:
revokeexecl("/bin/sh", "sh", NULL)Achei útil executar watch -n0.1 cat /proc/keys para ver o que está acontecendo.
Este código foi testado apenas no x86-64, mas deve funcionar em outras arquiteturas também, porque não usei offsets mágicos, mas copiei as definições de estrutura dos cabeçalhos do Linux e usei sizeof (exceto que codifiquei os endereços de prepare_kernel_cred e commit_creds).