cve: Uma coleção de código relacionado a CVE-2016-0728 (vários autores)
Trechos do Linux, mostrando a evolução e a correção do bug
Código de exploit da Perception Point com comentários adicionados que explicam o que cada linha faz.
Um pequeno script que usa o vazamento para incrementar a contagem de uso, útil para determinar se o bug existe no seu sistema.
Uma versão do exploit que contorna os wrappers de syscall (para sistemas que não implementam os wrappers keycntl).
O primeiro patch de emergência de janeiro de 2016
A melhor maneira de duplicar este exploit é encontrar uma versão afetada de uma compilação do Linux, listada abaixo. ISOs podem conter patches backportados, então você precisa baixar o código-fonte e compilar você mesmo.
Executar o exploit em uma versão moderna do Ubuntu (editada para reter o bug) apresentou resultados estranhos. Eu escrevi test.c para rastreá-lo, gerando saída para o arquivo keylog. O programa é executado independentemente do exploit, usando nanosleep para controlar a frequência de amostragem. keylog é a saída da execução com período de 500 nanossegundos por cerca de 1/2 segundo.
Interpretando o arquivo keylog: O número à esquerda é o número da iteração. Ele gera um valor quando a inclinação muda. tState conta quantas iterações desde a última mudança de inclinação. É completamente aleatório e não vale a pena estudar.
Para este teste, houve saída imprevisível e nenhum estouro de inteiro, o que significa que o exploit falha em uma versão moderna, editada ou não. Em vez disso, compile uma versão da lista.
Versões Afetadas
Red Hat Enterprise Linux 7
CentOS Linux 7
Scientific Linux 7
Debian Linux estável 8.x (jessie)
Debian Linux teste 9.x (stretch)
SUSE Linux Enterprise Desktop 12
SUSE Linux Enterprise Desktop 12 SP1
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 12 SP1
SUSE Linux Enterprise Workstation Extension 12
SUSE Linux Enterprise Workstation Extension 12 SP1