2011-04-29 20 views
8

La documentación de AppArmor menciona que las aplicaciones pueden ejecutar otros programas con o sin depuración ambiental. Aparentemente, un entorno depurado es más seguro, pero la documentación no parece especificar exactamente cómo ocurre el fregado del entorno.¿Cómo hace AppArmor "Barrido ambiental"?

¿Qué es fregar el entorno y qué hace AppArmor para limpiar el entorno?

Respuesta

4

"Eliminación del entorno" es la eliminación de varias variables de entorno "peligrosas" que pueden utilizarse para afectar el comportamiento de un archivo binario; por ejemplo, LD_PRELOAD se puede utilizar para hacer que el enlazador dinámico extraiga código que puede hacer esencialmente arbitrario cambios en la ejecución de un programa; algunas variables se pueden configurar para generar resultados de rastreo en archivos con nombres conocidos; etc.

Este fregado se realiza normalmente para binarios setuid/setgid como medida de seguridad, pero el kernel proporciona un enlace para permitir que los módulos de seguridad lo habiliten también para otros binarios arbitrarios.

Código del cargador ELF del kernel uses this hook para establecer la entrada AT_SECURE en el "vector auxiliar" de información que se pasa al binario. (Ver here y here para la ejecución de este gancho en el código AppArmor.)

Como la ejecución comienza en el espacio de usuario, el dynamic linker picks up this value y lo utiliza para establecer el indicador __libc_enable_secure; Verás que la misma rutina también contiene el código que establece este indicador para los binarios setuid/setgid. (Hay equivalent code elsewhere para binarios que están vinculados estáticamente.)

__libc_enable_secure afecta a un número de lugares en el main body of the dynamic linker code, y provoca una list of specific environment variables a eliminar.

Cuestiones relacionadas