GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo es que no se crea un volcado de núcleo cuando una aplicación tiene configurado SUID?

La memoria de un programa setuid podría (incluso es probable que) contenga datos confidenciales. Por lo tanto, el volcado del núcleo tendría que ser legible solo por root.

Si el volcado del núcleo es propiedad de root, no veo un agujero de seguridad obvio, aunque el kernel debería tener cuidado de no sobrescribir un archivo existente.

Linux deshabilita los volcados del núcleo para los programas setxid. Para habilitarlos, debe hacer al menos lo siguiente (no he comprobado que sea suficiente):

  • Habilite los volcados del núcleo de setuid en general configurando el fs.suid_dumpable sysctl a 2, p. con echo 2 >/proc/sys/fs/suid_dumpable . (Nota:2, no 1; 1 significa "Estoy depurando el sistema en su totalidad y quiero eliminar toda la seguridad".)
  • Llamar prctl(PR_SET_DUMPABLE, 1) del programa.

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 está ejecutando 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 vuelca el núcleo, podrá leer esa información privilegiada.

De su ejemplo anterior, parece que puede obtener un volcado del núcleo cuando se ejecuta como root o si elimina la escalada de privilegios.

Si bien puede ser útil (creo que solo para los desarrolladores) tener fácil acceso a un volcado de núcleo desde un programa setuid, es un agujero de seguridad y debe dejarse en su lugar.


Linux
  1. Linux:¿Suid no tiene efecto en los directorios con Linux?

  2. ¿Cómo establecer parámetros cuando Pipe Bash Script to Bash?

  3. ¿Cómo es que cada programa o servicio tiene una cuenta propia en /etc/passwd?

  4. ¿Cómo cambiar el programa de "lectura" predeterminado?

  5. Cómo crear archivos Proc de Linux en el programa C usando LKM

Cómo crear un balanceador de carga de aplicaciones en AWS

Cómo configurar un clúster de Pacemaker para Linux de alta disponibilidad

¿Cómo crear un acceso directo de escritorio?

¿Cómo limitar un proceso a un núcleo de CPU en Linux?

¿Cómo establecer la ubicación (y el nombre) del archivo de volcado del núcleo?

¿Cómo agregar al grupo cuando el nombre tiene un espacio?