Esto es extremadamente inseguro. ¡Me alegra que hayas preguntado en otro lugar antes de ejecutar esta configuración tú mismo! Espero que esas más de 3000 personas en AskUbuntu hayan sido igualmente cautelosas. Entonces, ¿por qué es esto inseguro? ¿Qué puede hacer un atacante si los pones en el grupo? Ese grupo podrá elevar privilegios a root. El motivo es simple: VeraCrypt permite montar un volumen cifrado de permisos de archivos arbitrarios, utilizando un sistema de archivos arbitrario con marcas de montaje arbitrarias. Considere el siguiente escenario:
-
Un usuario malvado se coloca en tu grupo especial, permitiéndoles ejecutar VeraCrypt como root sin una contraseña. Este usuario desea explotar su configuración para obtener un shell de root, permitiéndole ejecutar comandos que no sean /usr/bin/veracrypt
como root. Su objetivo final es simple: omita las restricciones que tiene y ejecute comandos arbitrarios como root.
-
El usuario malvado crea, administra y graba un volumen cifrado. Se formatea y se copia un binario bash
al sistema de archivos. Como el volumen se puede escribir directamente, el bit setuid se puede establecer en el binario. Normalmente esto es imposible, pero nuestro atacante puede modificar el volumen.
-
El usuario malvado ejecuta VeraCrypt como root y monta el volumen en /mnt
(una operación normalmente privilegiada). Ejecutan /mnt/bash
y obtienen un shell de root, desde el cual pueden ejecutar cualquier comando como usuario privilegiado. Tienen su shell raíz y pueden ejecutar lo que quieran.
Normalmente, un sistema de archivos que se puede montar por el usuario tendrá varias restricciones. Estos sistemas de archivos se configuran normalmente montando con el indicador user
. De acuerdo con la mount(8)
página de manual:
user
Allow an ordinary user to mount the filesystem. The name of the mounting
user is written to mtab so that he can unmount the filesystem again. This
option implies the options noexec, nosuid, and nodev (unless overridden
by subsequent options, as in the option line user,exec,dev,suid).
Cuando un sistema de archivos es montado por un usuario sin privilegios de esta manera, a pesar de que pueden crear un sistema de archivos con un ejecutable setuid, el sistema no respetará el bit setuid cuando se monta el sistema de archivos. VeraCrypt no tiene forma de saber todo esto, y felizmente monta el sistema de archivos de escritura como root, con soporte completo para binarios de setuid. Esta protección se omite y los atacantes obtienen la raíz, a pesar de que solo permita un comando "seguro" a través de sudoers.
Estoy seguro de que también hay otros posibles ataques. ¿Tiene su sistema de archivos algún indicador de montaje que, por sí solo, pueda dar una raíz de atacante? ¿Se pueden escribir archivos de claves o volúmenes nuevos en ubicaciones arbitrarias? Si es así, ¿pueden sus contenidos ser elegidos por el usuario? Cuando omite una salvaguarda importante, repentinamente debe confiar en que los diseñadores de VeraCrypt escriban el programa de tal manera que lo proteja de un modelo de amenaza que nunca consideraron. A diferencia del programa mount
, que fue diseñado desde el principio para ser seguro incluso cuando un usuario sin privilegios lo ejecuta como root, VeraCrypt no tenía tales objetivos. Las mismas consideraciones deberían aplicarse a cualquier cosa antes de ejecutarlo como root.