Sitios seguros

Saul Bass
junio 11, 2012
20 cosas que he aprendido sobre internet
junio 16, 2012

La introducción de servicios de navegación de banda ancha y banda ancha móvil en México, así como la creación de herramientas más accesibles para el desarrollo de nuevas tecnologías han permitido que, durante la última década, un mayor número de empresas decida aventurarse a crear una presencia más formal en la Internet ya sea mediante servicios de marketing online, o bien, haciendo uso de aplicaciones Web como tiendas virtuales, ERPs, etc.

Si bien se recibe un excelente beneficio por las nuevas posiblidades que ofrece este medio, también es cierto que la exposición a nuevos ataques informáticos cada vez es mayor.

Decidimos entrevistar a Gerardo Sotelo, experto en seguridad de la información en Quartik, quien nos platica sobre las mejores prácticas para reducir las posibilidades de éxito en ataques a nuestros sitios electrónicos.

Hola, Gerardo. Primeramente , ¿A qué te dedicas?
Soy ingeniero en Quartik. Nos dedicamos al desarrollo de aplicaciones  y tecnologías de alto rendimiento. Además, brindamos consultoría en el área de la seguridad de la información a empresas del sector público y privado.

Gerardo, ¿Podrías compartirnos un poco de tu trayectoria profesional?
Claro. Tengo estudios superiores en Seguridad de Redes y Sistemas por la universidad de Toulouse lll, en Francia. Fui invitado a realizar proyectos de investigación en el Instituto de Investigación de Informática de Toulouse (IRIT ) y laboré en el departamento de seguridad de la información de Siemens VDO en Francia.

Como bien sabemos, ante un aumento impresionante de la presencia de las empresas en Internet, ¿Cuáles son los retos a los que se enfrentan los profesionales de la web hablando de la Seguridad de la Información?
Hay 4 puntos importantes  que debemos garantizar en nuestros proyectos Web: confidencialidad, integridad, disponiblidad y autenticación.

– Confidencialidad. Debemos asegurar que únicamente las personas autorizadas tengan acceso a la información adecuada. Por ejemplo, al transmitir los datos bancarios de un usuario, estos no deben ser vistos o interpretados por un atacante.

–  Integridad. Es la garantía de que la información publicada es exacta y fidedigna, es decir, que esta no ha sido alterada por terceros no autorizados.

– Disponibilidad. En este concepto aseguramos que los usuarios tengan acceso a la información autorizada cuando así lo requieran.  En este caso, que el uptime de nuestra web alcance, prácticamente, un 99.999% [risas].

– Autenticación. Es el garantizar que quien genera la información es quien dice ser y no un tercero buscando una suplantación de identidad.

Entonces, ¿De qué manera un atacante podría comprometer a cada uno de estos conceptos?
En caso de la confidencialidad, un atacante puede «escuchar» la comunicación que existe entre un sitio Web  y el usuario (mediante herramientas llamadas sniffers), de tal forma que, en un ambiente no cifrado, pueda leer datos de autenticación como contraseñas. Esto se da comúnmente en redes públicas o en redes domésticas no aseguradas.

En el aspecto de la integridad de la información, podemos ver el caso de los defacements, los cuales alteran los contenidos de páginas web por otros a manera de protesta o simple diversión. Casos muy famosos son los ataques a las dependencias del Gobierno Mexicano.

http://dscleon.wordpress.com/2009/11/16/deface-masivo-a-paginas-de-gobierno-mexicano-por-cpm-team/

La disponiblidad se interrumpe cuando  el atacante logra bloquear el acceso a un sitio web mediante diferentes técnicas. Tal es el caso de los ataques que realiza el grupo Anonymous a varias instituciones, cuyos sitios dejó fuera de servicio de forma temporal.

http://www.cnn.mx/tecnologia/2012/01/27/anonymous-ataca-los-sitios-del-senado-y-gobernacion-por-la-ley-doring

¿Cuáles son las técnicas  más comunes para lograr estos ataques?
Hay muchas, entre las más comunes (y menos sofisticadas) encontramos:

SQL Injections, que consisten en engañar al intérprete de estas instrucciones para acceder a datos no autorizados. Podemos descubrir contraseñas, datos personales de los usuarios registrados, etc.

Cross-site scripting, es el envío de comandos en el navegador de la víctima para secuestrar sesiones de usuario o dirigirlo a un sitio malicioso, o bien, a uno diferente con el fin de obtener visitas.

Ataques man-in-the-middle que buscan interceptar paquetes a través de la red para robar o modificar datos que permitan conducir robos de identidad, fraudes u otros crímenes.

Ataques (Distributed) Denial of Service cuyo objetivo es saturar los recursos del servidor que hospeda a un sitio Web de tal manera que quede fuera de servicio de forma temporal.

Entonces, ¿Cómo podemos reducir la exposición de nuestros sitios a estos ataques?
Hay dos situaciones:

1. Si eres programador:

a) Siempre valida los puntos de entrada de información a las bases de datos. Sanitiza las variables.
b) Todos los datos delicados envíalos a través de canales cifrados (HTTPS, SSL/ TLS).
c) Utiliza ORMs o equivalentes para un mejor tratamiento de los datos.
d) Utiliza escáneres de vulnerabilidades Web para conocer los puntos débiles de tu aplicación o CMS.
e) Lee, lee y lee sobre las mejores prácticas de tu lenguaje favorito.

2. Si eres diseñador:

a) Mantén actualizado tu CMS preferido.
b) Mantente al tanto de las vulnerabilidades que vayan encontrando en él en: http://www.securityfocus.com/
c) Busca procedimientos de hardening de tu CMS favorito.


¿Hay algunos recursos que puedas recomendarnos para profundizar más en el tema de la seguridad en el desarrollo Web?

Claro. Hay dos básicos de mucha utilidad:

  1. Prácticas seguras de programación para sistemas web de Gunnar Wolf y puede ser encontrada en:
    http://gwolf.org/files/VI%2021,%2091-111%20-%20Wolf.pdf
  2. Prácticas recomendadas contra el hacking de Google para Webmasters:
    http://googlewebmaster-es.blogspot.mx/2009/03/practicas-recomendadas-contra-el.html

Gerardo, te agradecemos el tiempo para esta entrevista. ¿Hay algún comentario final que quieras agregar?
Ha sido un placer. Es importante saber que un sistema (sea un CMS, aplicación Web privada, etc) nunca puede considerarse seguro. Lo único que podemos hacer es reducir las probabilidades de éxito de un ataque. Si gustan contactarme, pueden encontrarme en Twitter como @jdotpy.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *