Vulnerabilidad en navegadores al manejar UNICODE

Un investigador chino ha descubierto un “ataque de phishing casi imposible de detectar”, que puede ser utilizado para engañar incluso a los usuarios más cuidadosos en Internet.

Los atacantes pueden usar una conocida vulnerabilidad en los navegadores Chrome, Firefox y Opera para mostrar nombre de dominio falsos en la barra de direcciones y simular sitios web de servicios legítimos.

El investigador chino Xudong Zheng creo esta página web de demostración en la cual es imposible identificar el sitio fraudulento sin inspeccionar cuidadosamente la URL del sitio o el certificado digital.

Como se puede ver, el navegador muestra “apple.com” en la barra de direcciones pero el contenido de la página procede de otro servidor.

Este ataque homográfico es conocido desde 2001, y los navegadores siempre han luchado para solucionar el problema. Es una especie de ataque de suplantación donde una dirección de sitio web parece legítima, pero no lo es porque un carácter o caracteres han sido sustituidos engañosamente por caracteres Unicode.

Muchos caracteres Unicode, que representan alfabetos como griego, cirílico y armenio en nombres de dominio internacionalizados, se parecen a las letras latinas para el ojo casual, pero son tratados de manera diferente por ordenadores con la dirección web completamente diferente.
Por ejemplo, el cirílico “а” (U + 0430) y el latino “a” (U + 0041) son tratados diferentes por los navegadores pero se muestran “a” en la dirección del navegador.

Ataques de phishing de Punycode

De forma predeterminada, muchos navegadores web utilizan la codificación “Punycode” para representar caracteres Unicode en la URL y para defenderse contra ataques de phishing. Punycode es una codificación especial utilizada por el navegador web para convertir caracteres Unicode al conjunto de caracteres limitados de ASCII (A-Z, 0-9), soportado por el sistema de Nombres de Dominio Internacionales (IDNs). Por ejemplo, el dominio chino “短 .co” se representa en Punycode como “xn--s7y.co”.

Según Zheng, la vulnerabilidad se basa en el hecho de que los navegadores web renderizan sólo URL Punycode en un idioma (como sólo chino o sólo japonés), pero fallan si un nombre de dominio contiene caracteres en varios idiomas.

Esta brecha permitió al investigador registrar un nombre de dominio xn--80ak6aa92e.com que aparece como “apple.com” para todos los navegadores web vulnerables, incluyendo Chrome, Firefox y Opera, aunque Internet Explorer y Safari no son vulnerables.

En este caso, el prefijo xn- se conoce como prefijo de codificación compatible con ASCII, lo que indica que el navegador web utiliza el codificador Punycode para representar caracteres Unicode y utiliza el cirílico “U” (U + 0430) en lugar de ASCII “A” (U + 0041).

Aquí hay otra prueba de concepto creado por Wordfence sobre el sitio “epic.com”. En Reddit han publicado más información.

Aunque Mozilla todavía está discutiendo una solución, Google ya ha arreglado la vulnerabilidad en su versión experimental Chrome Canary 59 y presentará una solución permanente con el lanzamiento de Chrome Stable 58, que se lanzará a finales de este mes.

Mientras tanto, se recomienda a millones de usuarios de Internet que están en riesgo de este sofisticado ataque de phishing de difícil detección a deshabilitar el soporte de Punycode en sus navegadores web para mitigar temporalmente este ataque e identificar tales dominios de phishing.

Esta herramienta permite generar código Punycode y decodificarlos.

Mitigación para usuarios de Firefox (no FIX para Chrome)

Los usos de Firefox pueden seguir los pasos mencionados para aplicar manualmente temporalmente la mitigación:

  • about:config en la barra de direcciones.
  • “Punycode” en la barra de búsqueda.
  • La configuración del navegador mostrará el parámetro titulado: network.IDN_show_punycode, el cual se debe cambiar de false a true.
  • Al hacer este cambio Firefox mostrará “xn--80ak6aa92e.com/” en la URL, en vez de “apple.com”

Desafortunadamente, no existe una configuración similar disponible en Chrome o Opera para inhabilitar manualmente las conversiones de URL de Punycode, por lo que los usuarios de Chrome tienen que esperar las próximas semanas para obtener la versión de Stable 58.

Actualizacion: Felix y Yaiza de i3visio nos avisan que existe su extensión para Chrome que realiza la detección de caracteres “xn--“: para los usuarios de Chrome, se puede utilizar la extensión GPL Punycode Alert si se confía en los desarrolladores claro. Su código disponible en Github. La gestión de los avisos se realiza desde el script de background, pero básicamente recoge la URL de la pestaña actual tabArray[0].url y comprueba si contiene la secuencia “xn--” para determinar si muestra o no un aviso.

Fuente: The Hacker News