Estoy configurando una cuenta de usuario restringida para el usuario ricardo
, un usuario problemático en mi sistema. Quiero otorgarle el derecho de crear directorios utilizando sudo
, lo que a veces necesita hacer. Estoy considerando esta regla en mi /etc/sudoers
archivo:
ricardo ALL=(root) NOPASSWD: /bin/mkdir
Usando solo esta regla, ¿hay alguna forma en que Ricardo pueda comprometer intencional o accidentalmente el sistema?
Respuestas:
Sospecho que un ataque como este funcionaría, donde «algo» es un módulo del núcleo que intentará cargar después de que se monte rootfs:
Tenga en cuenta también que podría usar otros nombres, dependiendo de los alias declarados en el módulo. Supongo que no se cargará hasta que se ejecute depmod, lo que sucederá la próxima vez que haya una actualización del kernel, por lo que el
mkdir
que ni siquiera se mostrará recientemente en el registro de sudo.Hay muchas cosas en / etc que leen todos los archivos en un directorio, a veces de forma recursiva. Peor aún, algunos de esos directorios no existen por defecto, y la única forma de conocerlos es leer la página de manual, los scripts de inicio, etc. para el programa que los usa. Algunas, peor aún, son cosas obsoletas de compatibilidad con versiones anteriores, y es posible que ya ni siquiera estén documentadas.
editar: Pensé en algunos directorios más, estos en
/usr/local
:/usr/local/lib/perl/5.14.2
(difiere según la versión de Perl, intenteperl -V
averiguarlo). Cree unFile
subdirectorio allí y póngaloFind.pm
. Ahora, cuando alguien useFile::Find
, usará la versión del atacante. Del mismo modo, haz lo mismo conGetopt::Long
. Las utilidades del sistema a menudo se escriben en Perl, por lo que esto probablemente da origen. (Pruebaack-grep --color -a 'use.+::' /usr/sbin | less -R
)/usr/local/include
.fuente
sudo mkdir
para crear un nuevo directorio donde pueda.Al ejecutarse
mkdir
como root, el usuario puede impedir que otros procesos / usuarios creen nuevos archivos y directorios creando directorios con nombres idénticos (y / o derechos incorrectos) anteriormente.Esto podría ser relevante para la seguridad, especialmente con archivos de registro y bloqueo .
Como señaló Jordan , el número máximo de inodos también se puede utilizar, lo que puede bloquear todo el sistema.
Al agregar al usuario a grupos específicos (o usar ACL ), debería poder resolver los problemas sin otorgar ningún derecho a través de
sudo
.fuente
mkdir
lado la lista de comandos que Ricardo puede usar.for((i = 0;; i++)); do touch $i; done
bien (bashism, lo siento; pero ya entiendes la idea).sudo
comandos que OP está considerando pueden permitir también inodos agotadores; OP necesita ser consciente de ese vector DoS.Deberías redirigirlo a una cárcel chroot. O incluso mejor, para un pequeño VM, que puede bloquearse una vez por hora. Todo lo que necesita hacer es proporcionar una nueva copia.
fuente
Hay posibilidades debido a la posibilidad de crear directorios con acceso de escritura. Con
mkdir -m 777 blah
elricardo
usuario puede escribir lo que quiera en el nuevo directorio. Necesitaría un proceso en el sistema que ya se ejecuta como un usuario diferente que recurrirá a un árbol de directorios para cargar configuraciones, scripts o módulos. Entonces, el usuario podría agregar sus propias cosas para cargar o ejecutar. Lo primero que puedo pensar es si ejecuta un servidor web que puede ejecutar php o cgi. Luego podría ejecutar scripts como ese usuario. Estoy luchando por encontrar más ejemplos del mundo real, especialmenteroot
algunos, pero estoy seguro de que se trata.ssh es un ejemplo de un demonio que atrapa este tipo de escenario. Si creó un
.ssh
directorio para un usuario que no tenía uno y puso su propioauthorized_hosts
archivo en su lugar.sshd
advierte que los permisos de los directorios son demasiado abiertos e ignora la clave pública.Definitivamente, podría ser una molestia crear directorios donde se espera que aparezcan archivos (como archivos transitorios tmp o swap) que muchos programas no manejarían bien.
Podrías crear muchos cgroups pero no parece que hagas nada con ellos. Es posible que pueda poner un sistema de rodillas al menos. Se necesitaron alrededor de 10000 cgroups en una caja con 256M para que el asesino OOM elimine sshd.
Si controlas la
-m
opciónmkdir
y el UMASK delsudo
entorno, creo que es solo una molestia.fuente