Publicado el 14-Nov-2016 CVE-2016-4484 en todas las webs de seguridad.

Procede del documento: http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html

Vulnerabilidad en sistemas DEBIAN/Ubuntu/Fedora, el resto no parece que se hayan probado (nosotros no, desde luego).

Traducción de http://www.bleepingcomputer.com/news/security/you-can-bypass-linux-disk-encryption-by-pressing-the-enter-key-for-70-seconds/

Acceso a shell root pulsando la tecla INTRO durante 70 segundos

Un error en Cryptsetup, utilizado para el cifrado de particiones y discos por seguridad, permitiría a un atacante saltarse los procedimientos de autenticación de usuario en sistemas linux con sólo pulsar la tecla INTRO durante unos 70 segundos. El resultado deriva en la apertura de una terminal con privilegios de root en linux.

La incidencia, marcada como CVE-2016-4484, ha sido descubierta por un español llamado Héctor Marco, que también consiguió saltarse la autenticación de GRUB2 en linux pulsando espacio 28 veces en el campo de usuario (WTF!).

Esta vez lo ha descubierto estudiando Cryptsetup, utilidad que permite cifrar discos duros o particiones vía LUKS (Linux Unified Key Setup).

Cryptsetup permite a los usuarios intentar contraseñas una y otra vez

El problema parte en cómo los scripts de Cryptsetup maneja el proceso de arranque cuando se le consulta al usuario su contraseña de acceso. Esta contraseña se necesita para descifrar la información contenida en discos duros o particiones protegidas, arranque del sistema y asegurar el acceso de usuarios legítimos a sus datos.

El fallo lo causa un manejo incorrecto de la comprobación de contraseña en el script /scripts/local-top/crypt rot“, según indica Héctor Marco.

Cuando un usuario excede el número máximo de reintentos (por defecto 3), la secuencia de arranque continua con normalidad“.

Cryptsetup interpreta este error como un “dispositivo lento” que necesita más tiempo para rearmarse. Debido a este error de diseño por parte del desarrollador, Cryptsetup permite al usuario usar su contraseña de descifrado mediante recarga del procedimiento de autenticación. Este procedimiento se recarga hasta 30 veces en un sistema x86 (93 intentos de contraseña), y 150 veces en un PowerPC (452 intentos).

Cryptsetup abre una shell con privilegios de “root”

Aunque el número de intentos de introducir claves no permite realizar un ataque por fuerza bruta, Marco indica que el mayor problema aparece cuando un usuario ha terminado con todos los intentos de acceso.

dropping-shell

Tal y como muestra la imagen superior, en vez de bloquearse el acceso al sistema, Cryptsetup inicia una shell Initrd con privilegios de administración (root) para, en teoría, depuración.

Un atacante podría usar esta shell para iniciar una serie de acciones, tal y como muestra Héctor:

  • Elevación de privilegios: Si la partición boot no está cifrada (o como dicen por ahí, encriptada):
    • Se puede usar para cargar un archivo ejecutable con bit SetUID activado. Esto se puede usar después para escalar privilegios por parte de un usuario local.
    • Si el arranque no es seguro, es posible reemplazar el kernel y la imagen initrd.
  • Obtención de información: Es posible acceder a todos los discos. Aunque la partición esté cifrada, ésta podría copiarse a un dispositivo externo, desde donde se puede atacar por fuerza bruta. Obviamente, es posible acceder a cualquier otro dispositivo que no esté cifrado.
  • Denegación de servicio: El atacante puede borrar o secuestrar la información de cualquiera de los discos.

Para todo ello, el atacante sólo tiene que mantener pulsada la tecla INTRO durante aproximadamente 70 segundos o más.

Muchos sistemas Linux afectados, incluidos servidores en la nube

LUKS, el sistema estándar de cifrado de discos en Linux, está implementado en Debian y Ubuntu, así como otras distribuciones.

Explotar este fallo requiere acceso físico al sistema afectado con objeto de disparar el procedimiento de arranque y acceso al terminal. Para sistemas en nube, donde los sistemas con Linux se usan de forma masiva, el atacante puede utilizar el mecanismo vía remota (VNC o similar).

Según Héctor “en general, el ecosistema GNU/Linux (kernel, aplicaciones, distros, …) se han desarrollado para desarrolladores. Por tanto, en caso de fallo, las opciones de recuperación son muy ‘amigables para el desarrollador’, lo cual es muy interesante mientras se desarrolla o en entornos controlados, pero cuando se utiliza Linux en entornos más hostiles, este sistema de recuperación no debería ser la opción por defecto“.

De momento no hay actualización o parche de seguridad, pero Héctor ha publicado una modificación/parche manual que puede ser útil:

patch

Licencia

La licencia del presente artículo es, como siempre Creative Commons. Puedes compartir-igual-nocomercial-mención. Se han añadido todas las referencias en la cabecera del artículo, así como enlaces directos y definiciones en su lugar correspondiente. La traducción es de David Casas M.

Si detectas errores, que es probable, háznoslo saber. Estamos aquí para aprender 😉

Errores detectados:

17-11-2016 Después de revisión, modificamos el artículo traducido de bleeping que indicaba que se podían saltar las particiones cifradas. En realidad, el cifrado no se rompe (salvo fuerza bruta) aunque sí tendrías acceso root, lo que permitiría realizar otras tareas.