26 de octubre de 2008

Los BHO (Browser Helper Objects) y su seguridad personal

Hace ya tiempo que Microsoft liberó el API de desarrollo para una tecnología llamada BHO o Browser Helper Objects, sin embargo ha sido en los dos últimos años que esta tecnología empezó a ser utilizada por parte de los amigos de lo ajeno o cybercriminales para tratar de obtener acceso al robo de datos confidenciales en línea.

Para empezar hay cosas que explicar: ¿Qué es un BHO?
No hay forma más sencilla de explicarlo que mostrando el ejemplo de la conocida e inofensiva Barra de Google. Un BHO es una extensión programada que se utiliza para "mejorar" las capacidades del navegador, específicamente Internet Explorer, que aún a pesar de sus nuevos competidores y la población creciente de usuarios Firefox y Chrome, ocupa casi el 80% del mercado.

Si aquellos que instalaron la barra de Google en IE tienen buena memoria, recordarán que el sistema de instalación les solicitó permiso para poder transmitir sus hábitos de navegación a Google y así alimentar los sistemas estadísticos como PageRank. Si la instaló y no lo recuerda, usted es de los que instala y no lee lo que está instalando, y para usted este artículo posiblemente será más útil aún.

Independientemente de que se le haya o no otorgado permiso a la Barra de Google (o de Alexa otro conocido ejemplo) mi punto demuestra que este tipo de objetos tiene la capacidad para conectarse desde su navegador a un sitio externo, y no puede ser detectado por los cortafuegos o "firewalls" ya que usan al Internet Explorer para ello, y éste tiene indudablemente permisos para navegar y comunicarse al exterior de su equipo ya que de lo contrario usted no podría ver las páginas que solicita.

Compliquemos el escenario: Imaginemos que la empresa ahora ya no es ni Google ni Alexa sino un tercero mal intencionado que desea obtener información confidencial de su computadora. Este personaje ha creado una barra con algunas utilidades o "caprichos" para usuarios que parece ser bastante útil. Usualmente un bloqueador de POPups, unos cuantos emoticons o caritas, el estado del tiempo o alguna otra información dirigida al público al que desea llegar.

Al igual que sus serios contrapartes, este BHO específico también colecta información de navegación y en ella sus números de cuenta, sus claves de acceso bancarias y otra buena cantidad de información personal cuya pérdida puede convertir su vida en un infierno.

¿Recuerdan la película "La Red" con Sandra Bullock? ¿Quién imaginaría en 1995 que un poco más de un decenio después la realidad superaría a la ficción y por mucho?

Estos amigos de lo ajeno no solo desarrollan este tipo de "utilidades" sino las venden en el mercado negro, y además del BHO incluyen una interfaz administrativa en la que el atacante puede ver en tiempo real lo que hacen sus victimas.

Un problema adicional es que con este tipo de intruso en nuestro navegador, de nada sirve la conexión encriptada o SSL que utilizamos a la hora de entrar en una página que requiere cierto nivel de privacidad, ya que el BHO toma los datos del navegador, quien ya los ha convertido en información legible para nuestra lectura.

No estoy tratando de asustarles, el que está asustado soy yo cuando pienso en la cantidad de personas vulnerables a este tipo de ataque.

El problema se agrava radicalmente cuando pienso en que las defensas existentes ante este tipo de ataque aún no son muy eficientes, ya que como este tipo de objetos se acopla al Internet Explorer, quizás no sean tán fáciles de detectar como lo pudieran ser un programa malware o un virus reconocido. Sin embargo, los programas antivirus son nuestra primera línea de defensa ya que contiene la firma digital de algunos BHO reconocidos, pero igual que con los virus, pueden aparecer nuevas variantes y en el caso de los BHO son más difíciles de detectar.

Una razón más por la que preocuparnos a la hora de navegar en línea!
Hasta la próxima...

7 de octubre de 2008

Cross Site Scripting - XSS ¡Otro enemigo peligroso!

XSS o Cross Site Scripting que aunque las siglas no concuerden se coloca la X para evitar confusión con CSS (Cascading Style Sheets), es básicamente una técnica de inyección de código en un sitio mediante el uso de técnicas que permiten insertar específicamente Javascript o VBscript en los URLs o en los campos de un formulario que no ha sido validado para tal efecto para que ejecute en el contexto de otro sitio.

Así por ejemplo si insertamos XSS en un campo de un formulario cuyo contenido posteriormente será mostrado, podemos insertar código javascript para que se cree un pop-up, o se abra un iframe que contenga información de otro sitio.

Esta técnica puede permitir que un URL que normalmente lleve información por método GET se convierta en una vulnerabilidad de nuestro sistema, ya que enviando a dicho URL una inyección XSS, podemos hacer que el sitio receptor nos muestre contenido "tóxico" como por ejemplo una página de malware u otros.

También podemos hacer que dicho código insertado reemplace las "cookies" creadas para validación e ingreso en un área no permitida por ejemplo.

En fin las técnicas XSS son muchas y no podemos mencionarlas todas aquí, sin embargo si podemos explicarle al programador como prevenirlas (en parte por lo menos)

Es necesario primeramente evitar la inclusión de las cadenas "javascript:", "vbscript" y "<script" debido a que un código javascript sin ellas no se puede reconocer como tal, pero cuidado los hackers saben algo de esto y colocan las cadenas de formas diferentes, como ejemplo: "JaVaScRIpT" o las esconden con los códigos hexadecimales correspondientes ejemplo: %22%3e%3c%73%63%72%69%70% enviado por el URL significa "<script>"

En cuanto a los campos de los formularios es importante prevenir el uso de TAGS de HTML y preferiblemente evitar que el usuario pueda usar estilos directamente ya que en el URL de una imagen de fondo se puede colocar perfectamente código XSS también por ejemplo:

<DIV fu="alert('Hola mundo');" STYLE="background-image: url(javascript:eval(this.fu))">

Este código inserta una función "fu" y la llama desde una URL asignada a una imagen para el fondo del elemento DIV. Interesante ¿no?

Ahora imaginen que dicho código no es tan sencillo como para mostrar simplemente una ventanita con el texto "Hola mundo" y que en dicho URL llamamos una rutina javascript con capacidad de cargar un AJAX que envíe lo que vamos escribiendo en un formulario a otro lugar.
Escalofriante ¿no?




Entradas populares