miércoles, 27 de febrero de 2008

La Importancia de Actualizar.

Muchos sostienen que la creación del software es más un arte que una técnica. Esto era especialmente cierto hace unas décadas donde se carecía de las herramientas tecnológicas y metodologías existentes hoy en día para el desarrollo de software.
Lo cierto es que en este llamado  "arte" de crear software la seguridad no figuraba como un objetivo a seguir y finalmente lo que se buscaba era una aplicación funcional que le sirviera al usuario.

Esta manera de desarrollar aplicaciones funcionales (y no forzosamente seguras) permaneció por mucho tiempo en el mundo del desarrollo de software, no sólo en las aplicaciones creadas por y para una empresa en particular, sino en el software comercial como lo son los sistemas operativos, aplicaciones de ofimática, navegadores o reproductores de música digital. Actualmente las metodologías y herramientas tecnológicas empiezan a considerar cada vez más el factor de seguridad dado que para muchos desarrolladores de software ya no es suficiente codificar programas funcionales sino también seguros. Lo anterior obedece a que cada vez más la seguridad en las aplicaciones es vista como un valor agregado apreciado por los clientes.
En nuestros días, el auge del comercio electrónico y la posibilidad de hacer transacciones financieras en línea ha hecho mucho más necesario que tanto el sistema operativo como las aplicaciones que corren en él sean lo más seguras posibles. Y es que en la práctica resulta difícil desarrollar software seguro, por lo que los fabricantes de software han optado por crear actualizaciones o parches a sus sistemas operativos y aplicaciones con el fin de resolver problemas de seguridad (vulnerabilidades).

Para los usuarios, dos de los principales problemas inherentes a un esquema de "parchado" son:
* saber de la existencia de la actualización para poder aplicarla.
* disponer del parche antes de que existan ataques que afecten la seguridad.

Para el primer caso, un usuario se enfrenta a la problemática de seguirle la pista a varias decenas de aplicaciones instaladas en su equipo con el fin de informarse sobre las últimas actualizaciones de seguridad. Si corremos con suerte, la aplicación notificará automáticamente sobre la existencia de un nuevo parche para que efectuemos su instalación (como lo es el caso de por ejemplo Adobe Reader para leer documentos tipo PDF). Algunos sistemas operativos como Windows Vista y Windows XP inclusive se pueden configurar para que se actualicen sin notificación previa y llevan a cabo la instalación de el o los parches sin más intervención del usuario. Sin embargo existen muchos programas que no tienen estas funcionalidades, dejando al usuario la responsabilidad de estar al tanto de nuevas actualizaciones. Lo recomendable es ingresar al menos una vez al mes a sitios como www.cert.org, www.cert.org.mx o www.secunia.com, donde se listan las últimas actualizaciones de parches para varias aplicaciones (junto con la liga para descargar el parche y un análisis del impacto de la debilidad). Otra opción más sencilla es ingresar a sitios gratuitos como www.f-secure.com/healthcheck/ donde después de analizar el equipo, se informa de las actualizaciones que hacen falta. Es una tarea tediosa pero es necesaria si es que deseamos eliminar las inseguridades de nuestro equipo de cómputo y minimizar el riesgo de que un atacante aproveche una vulnerabilidad  que resulte en diversas   consecuencias indeseables.

Para el segundo problema que se refiere a disponer de un parche antes de que exista un ataque, los usuarios se enfrentan a la difícil situación de que se conozca públicamente una debilidad y que el fabricante no emita ningún parche de seguridad, dejando indefenso al usuario a la merced de posibles ataques. Al respecto,  la empresa eEye publica un listado de todos aquellos programas que tienen un problema de seguridad públicamente conocido y que no cuentan con una solución (http://research.eeye.com/html/alerts/zeroday/index.html). Ante esta realidad, seguir las llamadas "mejores prácticas" puede ser de mucha utilidad, como lo es tener un firewall personal, un antivirus actualizado y una actitud preventiva ante los ataques que nos tratan de engañar (phising).
La problemática del esquema de "parchado" anteriormente descrita se puede ilustrar de manera muy clara con un ejemplo que recientemente se publicó en diversos sitios especializados en Internet. Entre diciembre del año pasado y enero del presente empezaron a circular diversos correos electrónicos diciendo que nos habían enviado una tarjeta de felicitación virtual; una variante también llegó por correo ofreciendo la lectura de una noticia importante de un periódico de México. Ambos correos solicitaban al usuario hacer "click" en una liga proporcionada en el correo ya sea para ver la tarjeta o la noticia en cuestión. Una vez hecho esto, la próxima vez que deseáramos ingresar a la banca en línea en el sitio financiero www.banamex.com, seríamos dirigidos automáticamente a un sitio fraudulento. ¿Cómo es esto posible? Aún teniendo el sistema operativo y aplicaciones actualizadas, el ataque era exitoso.

La razón es que los defraudadores habían encontrado una vulnerabilidad en el módem inalámbrico de la marca "2Wire",  que en México ofrece el servicio Prodigy Infinitum a sus clientes. Al hacer "click" en la liga de los correos ya mencionados, se llevaba a cabo un cambio en la configuración del módem. Esta debilidad permite a una persona mal intencionada atacar a este dispositivo, lo cual significa que aunque el usuario escriba en su navegador correctamente un sitio como lo es  "www.banamex.com", se mostrará el contenido de un sitio falso que en apariencia es similar al original. Una vez que el usuario ingresaba al sitio falso, se intentaba descargar un virus para robar las contraseñas de acceso al sitio bancario. Otros ataques podrían haber solicitado simplemente las contraseñas de acceso en el sitio falso sin intentar la infección con un virus. Aunque el ataque se centró en Banamex, no se descartó que se aprovechara este tipo de vulnerabilidad para otros sitios.

La vulnerabilidad del módem inalámbrico era públicamente conocida e inclusive existían ataques que se aprovechaban de ella, sin embargo eran pocas las personas que conocían de este problema y el fabricante no tenía disponible un parche o actualización, dejando a miles de usuarios de este servicio de banda ancha indefensos. Afortunadamente el fabricante publicó los parches correspondientes y Prodigy Infinitum confirmó que se distribuirían durante el mes de febrero de manera automática para varios de los modelos de la marca en cuestión.

Este ejemplo del módem inalámbrico ilustra claramente la problemática de mantenerse al día en cuestiones de parches de seguridad no sólo del sistema operativo y aplicaciones, sino hasta del módem inalámbrico que se usa. Seguir ciertas precauciones de seguridad pueden ser de utilidad para evitar estos riesgos. Para este caso específico del módem puede no ser suficiente el hecho de contar con un antivirus o firewall personal, sino que se deberán seguir medidas adicionales como lo puede ser la verificación de la validez del certificado digital de los sitios bancarios que se visiten, comprobando que el certificado esté a nombre de Banamex y que no muestre ningún error. Esto último se logra al hacer doble "click" en el candado cerrado que se habilita en el navegador antes de enviar las contraseñas de acceso a la banca en línea.
Independientemente de este ataque al módem inalámbrico, es una buena práctica siempre efectuar esta verificación en sitios que involucren transacciones financieras.

Conclusión.
Abordamos la problemática a la que se enfrenta un usuario final para mantener sus programas actualizados con el fin de eliminar debilidades de seguridad. Para el caso de las organizaciones, esta actividad (en teoría) será llevada a cabo por el área de sistemas para estar al pendiente de las nuevas vulnerabilidades con el fin de atenderlas. La recomendación final es que en los equipos que mantenemos en casa llevemos a cabo una labor preventiva y mantengamos nuestros sistemas al día.