Solucionan una vulnerabilidad grave en el Kernel Linux que permite ejecutar código como root

Solucionan una vulnerabilidad grave en el Kernel Linux que permite ejecutar código como root

Rubén Velasco

Aunque por lo general el kernel Linux se desarrolla, comprueba y analiza por un gran número de personas (la comunidad), siempre existen pequeñas vulnerabilidades que es posible que hayan sido pasadas por alto por todos los que han revisado el código. Este es el caso de la nueva vulnerabilidad CVE-2016-0728, un fallo presente en dos de las funciones del llavero de Linux que podían dar lugar a ejecución de código en una máquina con permisos de kernel, el mayor nivel disponible.

Esta vulnerabilidad, descubierta por los investigadores de Percepción Point, lleva presente desde la versión 3.8 del kernel, es decir, desde el año 2012. Este fallo de seguridad puede permitir a un usuario no autorizado, con acceso físico a la máquina y con los permisos mínimos por defecto, obtener acceso root y poner en peligro toda la máquina ejecutando código con el máximo nivel de permisos. La vulnerabilidad también afecta a más de un tercio de todos los dispositivos Android (KitKat y superiores) al utilizar, en común, esta versión del kernel.

Este fallo de seguridad se encuentra concretamente en el llavero que se instala en los sistemas Linux y que permite almacenar y cifrar todo tipo de contraseñas en el sistema para evitar que estas puedan caer en malas manos a la vez que facilita el acceso a otras aplicaciones (siempre que le demos permiso) a dichas contraseñas. El fallo se encuentra en dos funciones concretas de los llaveros, Add_key y request_key keyctl, diseñadas para permitir la ejecución de código con permisos de kernel en el espacio del usuario para que el usuario pueda añadir y recuperar las claves y utilizarlas junto a otras aplicaciones.

Aunque este error puede generar problemas de pérdida de información de la memoria, es posible que las consecuencias sean bastante más graves, llegando hasta la ejecución de código remoto con permisos de kernel. En resumen, los pasos a seguir para poder explotar esta vulnerabilidad son:

  • Se debe mantener una referencia legítima a un objeto clave para posteriormente desbordarlo.
  • Una vez desbordado, obtenemos acceso liberado al llavero y le asignamos un nuevo objeto diferente dentro del espacio del usuario, pero sobre la misma memoria de antes.
  • Haciendo uso de la referencia antigua del objeto podemos ejecutar código con permisos máximos en el sistema.

Algunas de las distribuciones afectadas por el fallo de seguridad son:

  • Red Hat Enterprise Linux 7
  • CentOS 7
  • Scientific Linux 7
  • Debian stable 8.x (jessie) / testing 9.x (stretch)
  • SUSE Enterprise Desktop 12 & 12 SP1 / Server 12 & 12 SP1 / Workstation Extension 12 & 12 SP1
  • Ubuntu 14.04 LTS (Trusty Tahr) / 15.04 (Vivid Vervet) / 15.10 (Wily Werewolf)
  • Opensuse LEAP and version 13.2

Podemos ver un sencillo concepto de explotación desde GitHub.

Linux Secure

Cómo solucionar y protegerse de la vulnerabilidad CVE-2016-0728 del Kernel Linux

Tal como afirman muchos de los desarrolladores, solucionar el fallo de seguridad era algo sencillo, el problema está en que no todos los usuarios son capaces de recibir actualizaciones automáticas (o simplemente de actualizarse, como es el caso de los smartphones antiguos Android), por lo que la brecha de seguridad puede quedar abierta en un considerable número de dispositivos.

Los usuarios que reciban parches de seguridad automáticos no deben preocuparse (aunque es recomendable reiniciar el sistema para asegurar que el parche se aplica correctamente), sin embargo, aquellos que no tengan actualizaciones automáticas deberán actualizar manualmente su sistema. Para ello bastará con teclear en un terminal los siguientes comandos:

Ubuntu / Debian:


sudo apt update
sudo apt upgrade
sudo reboot

CentOS / RHEL:


sudo yum update
reboot

También debemos asegurarnos de tener habilitados los módulos de seguridad SMEP y SMAP (y SELinux en Android) que hacen mucho más difícil el hecho de ejecutar código del kernel en entornos de usuario.

¿Qué opinas sobre este fallo de seguridad? ¿Crees que existirán fallos en el Kernel y en otros componentes del sistema operativo libre que aún no se hayan dado a conocer?

Quizá te interese:

  • Las distribuciones Linux más buscadas de 2015
  • Google parchea un fallo crítico en el uso del protocolo TCP en el kernel Linux
2 Comentarios