[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

system() y variables de entorno



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


Reply to: