VULNERABILIDADES EN UN SITIO WEB

El grado de inseguridad que puede presentar un sitio web depende directamente de las funcionalidades que el mismo tenga instaladas. Si el sitio está creado usando simplemente HTML (y en nuestras carpetas sólo tenemos archivos .htm, .html, .css, .jpg y .gif) entonces el peligro será mínimo, y las posibles vulnerabilidades estarán completamente del lado del lado que le toca atender a nuestro proveedor de hosting.

Si nuestro sitio web está creado usando un sistema de Server Side Scripting (como lo son PHP, ASP, JSP, etc) entonces ya existe la posibilidad de que en nuestros scripts aparezcan potenciales fallos de seguridad. Sobre todo, si en uno o más lugares del sitio hay formularios que permitan al usuario enviarnos datos (un formulario de contacto, o un formulario de suscripción a un boletín, por ejemplo).

Si además de usar un lenguaje como PHP o ASP, nuestro sitio usa bases de datos (como MySQL, Oracle, SQL-Server, etc) entonces las posibilidades de ataques se multiplican por diez.

Y si además de usar PHP (o ASP) y bases de datos, utilizamos scripts y programas estándar dentro de nuestro sitio (como ser scripts de administración de contenidos, foros, galerías de fotos, programas de intercambios de enlaces, etc) las posibilidades de resultar vulnerables y ser atacados por intrusos son mucho mayores. Lo mismo ocurre en caso de que usemos scripts o programas CGI.

RECOMENDACIONES:

Mantener los scripts y programas web actualizados y cambiarlos o parcharlos inmediatamente cuando se descubra un bug o un problema de inseguridad en los mismos. Ahora vale la pregunta: ¿y cómo hago para informarme inmediatamente cuando se descubre una vulnerabilidad en los scripts que tengo instalados? Hay varias formas de informarse:

El método “paranoico”

Muchos administradores de sistemas visitan diariamente sitios especializados que publican reportes de vulnerabilidades. Algunos de ellos son: securityfocus.com, secunia.com, us-cert.com. El problema de este método es que requiere de una gran dosis de disciplina y constancia: hay que consultar las listas de vulnerabilidades todos los días, revisando una por una a ver si hallamos alguna que afecte a nuestros sistemas. Personalmente tuve que hacerlo durante varios años, y confieso que es aburridor y tedioso.

El método automatizado

Consiste en crear una cuenta en Alertahacker.com (o HackerWarnings.com), ingresar al panel de control del servicio y configurar en nuestra cuenta cuáles son los productos que queremos monitorizar: si en algún momento se reporta alguna vulnerabilidad en alguno de nuestros scripts y programas, el sistema nos hará llegar un e-mail inmediatamente alertándonos y adjuntando la dirección de la página web donde se describe el problema descubierto.

Estos servicios son gratuitos y de libre acceso, y no compiten con los sitios que se dedican a registrar y documentar reportes de vulnerabilidades, tal cual lo hacen SecurityFocus (también conocido como BugTraq) o Secunia. AlertaHacker.com se limita a rastrear en la web y hallar reportes de seguridad recientes que se ajusten a las preferencias que le hemos configurado, entonces sólo nos enviará el aviso conteniendo las referencias al sitio del autor original del reporte. Y esto nos resuelve el problema de estar informados de los fallos de seguridad en nuestro software sin tener que invertir ni un minuto en leer largas listas de reportes de seguridad referentes a programas que ni usamos ni nos interesan.

Una vez enterados de un problema de seguridad en alguno de los softwares que tengamos instalados, el próximo paso será visitar el sitio web original del software en cuestión. Allí buscaremos cuál es la nueva versión del programa. En otros casos hallaremos un “parche” o “actualización” que solucione el problema. Estos parches suelen estar acompañados de instrucciones detalladas que explican cómo instalarlos. También existe la posibilidad de que los autores del programa se estén enterando de la existencia de la vulnerabilidad al mismo tiempo que nosotros… entonces deberemos aguardar a que creen el parche o la actualización, y lo publiquen en su web. En estos casos también es recomendable usar algún buscador para encontrar si en algún otro sitio web o foro alguien describe un método para “parchar” el problema de seguridad por nuestra cuenta (siempre y cuando no resulte muy difícil).

Usar un esquema seguro de nombres de usuario y passwords. Origen del 11% de los ataques exitosos contra sitios web

Muchos artículos escritos por expertos recomiendan usar nombres difíciles, donde se combinen letras mayúsculas, minúsculas, signos de puntuación y números. Por ejemplo: “R47n!Y2a5Mm”. No voy a discutir que esto es un password seguro… pero también es horrible para escribirlo cada vez que voy a usar el FTP. Además, es difícil, o imposible de memorizar. Y si además en cada sitio web y en cada programa tengo que poner uno diferente… sin duda estaré complicando mi trabajo.

En la práctica resultan buenos passwords aquellos conformados por breves frases como “quebuenaestalavecina” o “mevoyajugaralcounter”. Estos no contienen cifras, ni mayúsculas, ni signos de puntuación (por lo que no cumplen con las recomendaciones de mis colegas), y sin embargo son muy difíciles de crackear, aún usando programas automatizados (fundamentalmente debido a su longitud). Y tienen la enorme ventaja de que son fáciles de recordar y de escribir.

Y no olvidemos usar un password diferente en cada uno de los programas, en cada uno de los sitios web. Si vamos a escribir los passwords para no olvidarlos, nunca debe hacerse en un archivo en la PC. Si alguien pudiera penetrar en nuestra PC, se encontraría “de obsequio” con una hermosa lista de direcciones y passwords para divertirse en grande! En este caso es mejor anotar esta información en una tarjeta, y llevarla en la billetera. Al anotar los passwords no es conveniente aclarar completamente a qué corresponden: si alguien encontrase nuestra tarjeta de passwords tendría sólo eso: una tarjeta con passwords (no sabrá de qué cosa o de qué lugar son).

Borrar los scripts de instalación de los productos

Cuando instalamos un script, por ejemplo basado en PHP/MySQL, es habitual que durante el proceso de instalación debamos invocar un script que cree las tablas y las estructuras necesarias en las bases de datos. Este script puede llamarse install.php, ó /admin/configure.php, etc. Cada producto tiene su propio procedimiento de instalación, los archivos de creación inicial de tablas tendrán ubicaciones distintas, con nombres distintos.

Una vez que un atacante identificó que en nuestra web estamos usando un producto específico, entonces estará en condiciones de ir al sitio web del producto, leer los manuales de instalación, y luego volver a nuestro sitio y probar con (por ejemplo):

http://www.sitio-victima.com/admin/install/installdb.php

Recordemos que la misión de este script es crear las tablas de la base de datos, y si en este momento nuestra base de datos contiene información, entonces muy probablemente se esté borrando absolutamente todo el contenido actual (aunque este comportamiento puede variar de producto en producto).

Los manuales de instalación de los scripts normalmente indican cuáles son los ficheros que conviene borrar luego de completada la instalación, luego que el sistema queda funcionando. El problema es que luego de quedar funcionando, muchos webmasters simplemente ponen punto final a la instalación, y dejan funcionando el sitio web sin haber borrado nunca estos scripts que ahora no sólo son innecesarios sino que además resultan peligrosos. Una buena medida de seguridad sería revisar sitio por sitio a ver si hemos olvidado borrar alguno de estos scripts de instalación. Piensa que tal vez en este mismo momento alguno de tus enemigos esté leyendo este artículo, y sea él quien se tome el trabajo de revisar a ver si olvidaste borrar alguna de estas “bombas de tiempo”.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s