Mailinglist Archive: opensuse-es (1511 mails)

< Previous Next >
Re: [suse-linux-s] Fwd: [suse-security] SUSE Security Announcement: cron local privilege escalation (SUSE-SA:2006:027)
  • From: "Josep M. Queralt" <jmqueralt@xxxxxxxxx>
  • Date: Thu, 01 Jun 2006 21:07:28 +0200
  • Message-id: <20060601210723.9667.JMQUERALT@xxxxxxxxx>
> > Si, el método no es privativo de ningún sistema operativo. La mayoría de
> > agujeros que se encuentran en Linux son por desbordamiento de bufer, hay
> > que fastidiarse. Es inherente al C (y otros, pero no todos).
>
> entiendo entonces que son inherentes, no al lenguaje sino al
> desarrollador por no meter los controles necesarios de los datos que
> deberían venir frente a los que vienen... no?

Si, efectivamente. Los lenguaje en si mismos tiene muy pocos problemas
(pero los tienen) no así las aplicaciones. Por cada "exploid" que se
publica que afecte a PHP (como lenguaje) salen tres o cuatro que afectan
a PHP-BB o a PHP-Nuke y algunos más para el resto de aplicaciones
medianamente populares en PHP..

Aunque este no sea el lugar:


[OFF TOPIC ON]

Supongamos que validamos usuarios remotos mediante una base de datos SQL
(p.e. MySQL)

Para ello utilizamos la siguiente consulta SQL:

$sql = "SELECT * FROM usuario WHERE id = '" . $id ;
$sql .= "' AND pwd = '" . $pwd . "'" ;

Se entran los valores del formulario y hasta aquí todo normal. :-)

Comprobaremos si la contraseña entrada es correcta:

SELECT * FROM usuario WHERE id = 'primoroot' AND pwd = 'myPaSSword'

Y nos dirá si es verdadera o falsa.

Sin embargo si tu en cuando se te pide el password pones:

"NoLoSe ' OR " a=a '

Entonces se formará una cadena tal como esta:

SELECT * FROM usuario WHERE id = 'primoroot' AND pwd = 'NoLoSe ' OR ''a
=a ' '

... y claro, es evidente que todo el mundo es igual a si mismo (a=a) y
que aunque el password no es el mismo (myPaSSword es diferente que
NoLoSe) la segunda condición se cumple. (El OR significa que o se
cumple la primera o se cumple la segunda condición.

Como la segunda siempre se cumplirá ya no necesitaríamos ningún password
(ni propio ni ajeno) para acceder a cualquier lugar con validación con
PHP+SQL. :-)

[OFF TOPIC OFF]


De quien es la culpa de que no se validen correctamente las comillas ?
Del programdor de la aplicación, del desarrollador de PHP o del de SQL ?????

Personalmente creo que son culpas compartidas, aunque en general es más
del programador.


--
Salutacions - Saludos,

Josep M. Queralt

< Previous Next >
List Navigation