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
> > 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 > |