¿Cómo Escribir Programas Seguros? - El shell es demasiado listo

11 - El shell es demasiado listo

[editar]
Tutorial creado por Mononeurona.org. Extraido de: http://www.mononeurona.org/index.php?idp=535
08 de Noviembre de 2005
A veces recurrir al "shell" es tentador ya que nos evita codificar alguna tarea que él hace ya perfectamente. No obstante ello tiene sus riesgos. En particular el "shell" hace uso de variables de entorno que no están bajo nuestro control, además de que su gestión de los metacaracteres siempre es complicada. Por ejemplo, la ejecución de

sprintf(buf,"/usr/bin/ls -la /var/mail/%s",usuario);
system(buf);

puede tener consecuencias catastróficas si el "usuario" nos inyecta "pepe; rm -r /*"

En general es bastante mala política invocar al "shell", incluso aunque se filtren las variables de entorno (en especial $PATH y $IFS) y los metacaracteres. Hay que tener cuidado, por tanto, con funciones como "system()", "popen()" o la familia "exec*()".

Si no hay más remedio que invocar un shell, hay que fijar las variables de entorno de forma explícita y especificar siempre el "path" completo a los comandos. Cualquier parámetro pasado debe ser comparado previamente con una lista de caracteres válidos. No, como hace mucha gente, con una lista de inválidos. De esta forma no se nos pasará ninguno.
[editar]

Sé el primero en opinar


Tutoriales relacionados con '¿Cómo Escribir Programas Seguros?'

En este artículo vamos a intentar dar algunos consejos para la programación segura en C.... Más »
El objetivo de este documento es enseñar las bases de la instalación de un cortafuegos... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »
Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
Bienvenidos al manual de HTML de Indaya.A través de todos estos capítulos vamos a descubrir... Más »

Autor y licencia de '¿Cómo Escribir Programas Seguros?'


Tutorial de Mononeurona.org. Extraido de: http://www.mononeurona.org/index.php?idp=535 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.