Mensajes con el Tag ‘sql injection’

SQL injection ¿que es y como evitarlo?

31 de Mayo de 2011

La inyección de SQL (o en inglés SQL injection) es una técnica de inyección de código que se aprovecha de una vulnerabilidad de seguridad en una aplicación o en una base de datos.

La vulnerabilidad está presente cuando en la parte del código SQL de una aplicación se produce el filtrado incorrecto de las variables. De este modo la inyección de SQL se produce cuando se inserta un código SQL (malicioso) dentro del código SQL  de la aplicación con el fin de alterar la correcta ejecución de la consulta. Esto provoca que mediante la ejecución de este código malicioso se pueda obtener, modificar o eliminar cualquier información de la base de datos de la aplicación (incluidos nombres de usuario, contraseñas, etc).

Este sería un ejemplo básico de una aplicación con una vulnerabilidad:


Evitar caracteres peligrosos:

Una forma de evitar inyecciones es evitar caracteres peligrosos ( barra invertida, punto y coma, apóstrofes). En el lenguaje de programación PHP es habitual evitar esto utilizando la función mysql_real_escape_string antes de enviar la consulta a SQL.

$Uname = mysql_real_escape_string($Uname);
$Pword = mysql_real_escape_string($Pword);
$query = “SELECT * FROM Users where UserName=’$Uname’ and Password=’$Pword’”;
mysql_query($query);


Consultas parametrizadas:

Una consulta parametrizada utiliza marcadores de posición de entrada y los valores de los parámetros se suministran en tiempo de ejecución.

$params = array($Uname, $Pword);
$sql = ‘INSERT INTO Users (UserName, Password) VALUES (?, ?)’;
$query = sqlsrv_query($connection, $sql, $params);

Existe una extensa documentación en Internet para protegerse contra las inyecciones de SQL, en este breve repaso hemos querido ayudar a entender un poco mejor qué es y cómo evitarlo.

La importancia de mantener actualizados los scripts

4 de Abril de 2011

En este mes de Abril, queremos retomar de nuevo la seguridad en Internet. Puede ser un tema muy recurrente, pero todavía hay algunas asignaturas pendientes de las que nos gustaría hablar.

La pasada semana se produjo un ataque (más información) de gran tamaño en Internet que ha infectado millones de sitios web a través del método “SQL injection“, que consiste en añadir varias líneas de código en los sitios web con scripts vulnerables con la finalidad de crear una redirección hacia otro dominio en el que descargar un falso antivirus.

De acuerdo a las estadísticas enviadas por Google se calcula en unos 3,8 millones de dominios afectados, que lo convierte en el ataque de mayor tamaño realizado en Internet y que ya ha sido bautizado como “LizaMoon” (uno de los dominios en donde descargar ese falso antivirus). Estas aplicaciones maliciosas pueden estar creadas con múltiples fines, como recopilar datos personales del PC infectado, servir como ordenador zombie para realizar ataques ddos y en definitiva comprometer el correcto funcionamiento del equipo.

Existen múltiples métodos para protegerse de estas amenazas de Internet, los proveedores de hosting trabajamos con herramientas como Mod Security, que permite establecer unas reglas de seguridad para que estos ataques no puedan aprovechar la mayoría de los errores de diseño en el código fuente (bugs) que pueda tener un script. Pero aunque el servidor se encuentre actualizado y se utilicen variedad de aplicaciones destinadas a proteger los sitios web (y en algunas ocasiones crear dolores de cabeza a los programadores que no cumplen los estándares), los usuarios que administran un sitio web también deben tomar ciertas precauciones.

- La gran mayoría de dominios trabajan con scripts prefabricados (Joomla, WordPress, Prestashop, Moodle, etc), que deben ser actualizados de manera periódica debido a que su cada vez mayor código HTML puede esconder pequeños agujeros de seguridad que permitan al atacante aprovechar esa vulnerabilidad y atacar el sitio web. En Evalice para simplificar la actualización de los scripts sin conocimientos técnicos, disponemos de herramientas como Softaculous que permiten notificar al cliente de cuando existe una nueva versión y actualizarlo.

- La segunda precaución y que en ocasiones todavía no se le presta la suficiente importancia, es mantener actualizado el sistema operativo y protegido (con antivirus y antispyware) el equipo desde el que se administra el sitio web o la cuenta de hosting. En nuestro trabajo diario siempre observamos ciertos usuarios que no toman las suficientes precauciones y trabajan durante meses con software espía en su PC que recopila todos los movimientos, incluidas las contraseñas de acceso al sitio web, correo o ftp.

- Por último, no olvidar utilizar contraseñas seguras y actualizadas. El año pasado publicamos una entrada en el blog sobre el tipo de contraseñas y su formato más recomendable, pero no sólo es importante que sean seguras, no debemos olvidar actualizarlas periódicamente especialmente las de servicios críticos en donde se almacenen datos importantes.