Configuré mi entorno para crear un volcado de núcleo de todo lo que falla, sin embargo, cuando ejecuto un programa con SUID configurado en un usuario diferente que el usuario ejecutor, no crea un volcado de núcleo. ¿Alguna idea de por qué podría ser esto? No pude encontrarlo en ninguna parte de la web, creo que es algún tipo de característica de seguridad, pero me gustaría deshabilitarlo ...
Problema:
$ cd /tmp
$ cat /etc/security/limits.conf | grep core
* - core unlimited
root - core unlimited
$ ls -l ohai
-rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai
$ ./ohai
...
Floating point exception
$ sudo -i
# ./ohai
...
Floating point exception (core dumped)
# chmod -s ohai
# exit
$ ./ohai
...
Floating point exception (core dumped)
Editar: para que funcione de la manera más segura posible, ahora tengo el siguiente script para configurar el entorno:
mkdir -p /var/coredumps/
chown root:adm /var/coredumps/
chmod 772 /var/coredumps/
echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf
echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf
echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf
Ahora todo lo que queda por hacer es agregar ACL a / var / coredumps para que los usuarios solo puedan agregar archivos y no modificarlos ni leerlos nunca más. La única reducción es que todavía tendría un problema con las aplicaciones chroot que necesitarían bind mount
algo o algo así.
fs.suid_dumpable
dice la documentación . ¿Puedes intentar configurarfs.suid_dumpable
sin llamarpctrl
al programa? Tal vez estoy malinterpretando la documentación y en este caso obtienes un núcleo pero propiedad de root.El volcado del núcleo contiene una copia de todo lo que estaba en la memoria en el momento de la falla. Si el programa se ejecuta suid, eso significa que necesita acceso a algo a lo que usted, como usuario, no tiene acceso. Si el programa obtiene esa información y luego descarga el núcleo, podrá leer esa información privilegiada.
Según su ejemplo anterior, parece que puede obtener un volcado de núcleo cuando se ejecuta como root o si elimina la escalada de privilegios.
Si bien puede ser útil (solo para los desarrolladores me parece) tener un acceso fácil a un coredump desde un programa setuid, es un agujero de seguridad y debe dejarse en su lugar.
fuente
Decidí que también compartiría mi caso de uso, hasta que lo olvide. También podría ser útil para el futuro, ya que estaba resolviendo el mismo problema hace meses y me llevó demasiado tiempo descubrirlo una vez más. Okay. en realidad no es un volcado del núcleo, sino un seguimiento de la pila que también es útil.
Problema: No tengo idea de lo que está pasando allí:
Solución: mover el bit suid
sudo
avalgrind
funciona bien:Si se instala debuginfo, se escribe una buena traza inversa.
fuente
valgrind
lo que quieran. No hagas esto , es un gran riesgo de seguridad.