El mar, 15-01-2002 a las 12:22, Antonio Castro escribió: > On 15 Jan 2002, Juan Antonio Martinez wrote: > > > par de errores gordos de concepto en cuanto a seguridad ( el usar > > system() sin ajustar el entorno, por ejemplo ), pero por lo menos hace > > Eso no lo entiendo. A que te refieres con ajustar el entorno ? > En el man de system() lo único que veo sobre esto es: > > No llame a system() desde un programa con privilegios suid o sgid, > porque pudiera ser que se emplearan valores extraños para > algunas variables de entorno para comprometer la integridad del > sistema. > Yo creo que cuando system llama a un programa normal sin privilegios > no debería haber problemas a no ser que exista la posibilidad de salir > a la shell como es el caso de un montón de comandos de tipo interactivo. En los tiempos de maricastaña había un bug famoso del telnetd que hacía que se invocase a una shell desde éste. Daba la casualidad de que telnetd corre como setuid root.... El truco consistía en aprovechar que se utilizaba una llamada a un programa que tomaba como parámetros valores de las variables de entorno... algo así "ARGS=hola;/bin/bash" El telnetd, obediente, llamaba a su programita...( totalmente seguro y a prueba de hackers)... y acto seguido lanzaba una shell :) Normalmente, en lugar de system(), en entornos seguros se utilizan las funciones execvp() y familia, donde le puedes pasar como parámetro un puntero a la lista de variables de entorno, que TU has previamente definido. La verdad es que nadie debería utilizar system() en entornos "criticos" No hace falta que el programa al que llamas sea "seguro". El problema reside en meter en la línea de comandos datos de las variables de entorno que puedan haber sido editados por alguien ajeno a tí. El ejemplo del telnetd debería ser suficientemente elocuente -- Juan Antonio \|||/ / _ _ \ \ o o / =========================o00o===U===o00o====================================== Juan Antonio Martinez Universidad Politecnica de Madrid email: jantonio@dit.upm.es E.T.S.I Telecomunicacion http://www.dit.upm.es/~jantonio Ciudad Universitaria s/n Tel: 34-1-3367366 ext 416 Laboratorio de Programación. Desp A-127-2 Fax: 34-1-3367333 28040 Madrid, Spain ============================================================================== ¿Y que haríais si Dios os Dijera: "Os ordeno que, por encima de todo, seáis felices el resto de vuestra vida"? - Richard Bach
Attachment:
pgpGKQDNmIs0t.pgp
Description: PGP signature