Dado , es un requisito frecuente permitir a los usuarios sin privilegios acceso restringido a funciones privilegiadas: los administradores de sistemas de trabajo a veces proporcionan esto en forma de shellscripts, que luego se invocan a través de un envoltorio setuid
, como entonces:
int main()
{
setuid( 0 );
system( "/path/to/script.sh" );
return 0;
}
(La evidencia de esta afirmación se puede encontrar buscando setuid el script no funciona en su motor de búsqueda favorito o en desbordamiento de pila . No, no deberían estar haciendo esto, pero lo hacen. Cuando los consejos de seguridad son demasiado difíciles o demasiado oscuros para que los administradores de sistemas los sigan, se necesita otra solución.)
Tenga en cuenta que esto puede no ser simplemente ignorancia. ¿Quién esperaría que un script que contenga solo esto sea peligroso?
#!/bin/bash
kill -HUP $(< /var/run/demonname.pid)
Obviamente, la intención es pedirle a demonname que vuelva a leer su archivo de configuración. No llama más que bash incorporados (por lo que no debería usar la ruta), y no consulta el entorno una vez. En mi opinión, incluso un administrador de sistemas experimentado podría ser perdonado por pensar que un suidwrapper estaba bien en este caso .
Como se descubrió anteriormente, Shellshock, e (incluso sin él) la función de Importación desde entorno (FIE) de bash, plantea vulnerabilidades de escalamiento de privilegios.
Suponiendo que:
- tales cosas existen en su instalación, y usted no sabe que lo hacen, y
- puede asumir de manera confiable que se crearán nuevos ...
Sería aconsejable:
- volcar bash y usar algo para siempre amén?
- parche para golpear a la FIE por completo (la opción de "bomba nuclear desde la órbita") ?
- parchear bash para incluir en la lista blanca las rutas completas de los scripts que pueden utilizar esta función?
- parche
system
ypopen
para borrar el entorno de forma predeterminada si se ejecuta como root? (La gente no debería estar usando estas funciones). - ¿Enviar al administrador cada vez que alguien llama a
system
como root? ¿O comienza un shellscript como root? - o qué?
En otras palabras, ¿se utiliza FIE en la producción para algo más que para explotar sistemas? Si es así, ¿podemos incluir esos usos en la lista blanca y prohibirlos en cualquier otro lugar? Si no, no podemos simplemente eliminar la función ?