cve: Una colección de código relacionado con CVE-2016-0728 (varios autores)
Extractos de Linux, que muestran la evolución y corrección del error
Código de exploit de Perception Point con comentarios añadidos que explican lo que hace cada línea.
Un script corto que utiliza la fuga para incrementar el contador de uso, útil para determinar si el error existe en su sistema.
Una versión del exploit que omite los envoltorios de syscall (para sistemas que no implementan los envoltorios keycntl).
El primer parche de emergencia de enero de 2016
La mejor manera de duplicar este exploit es encontrar una versión afectada de una compilación de Linux, enumerada a continuación. Las ISO pueden contener parches retroportados, por lo que debe descargar el código fuente y compilarlo usted mismo.
Ejecutar el exploit en una versión moderna de Ubuntu (modificada para mantener el error) dio resultados extraños. Escribí test.c para rastrearlo, generando salida al archivo keylog. El programa se ejecuta independientemente del exploit, usando nanosleep para controlar la frecuencia de muestreo. keylog es la salida de ejecutar con un período de 500 nanosegundos durante aproximadamente 1/2 segundo.
Interpretación del archivo keylog: El número de la izquierda es el número de iteración. Emite un valor cuando cambia la pendiente. tState cuenta cuántas iteraciones han pasado desde el último cambio de pendiente. Es completamente aleatorio y no vale la pena estudiarlo.
Para esta prueba hubo una salida impredecible y ningún desbordamiento de enteros, lo que significa que el exploit falla en una versión moderna, editada o no. En su lugar, compile una versión de la lista.
Versiones afectadas
Red Hat Enterprise Linux 7
CentOS Linux 7
Scientific Linux 7
Debian Linux stable 8.x (jessie)
Debian Linux testing 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