Parecen iguales, pero son diferentes - ataques visuales con Unicode

¿apple.com y аpple.com se ven iguales? En realidad son diferentes. La primera "а" de la segunda URL no es la "a" latina, sino la "а" cirílica (U+0430). Para el ojo humano son indistinguibles, pero para un ordenador son caracteres completamente diferentes y, por tanto, dominios diferentes.

Unicode es un sistema revolucionario que permite manejar de forma unificada los caracteres de todo el mundo, pero su rico conjunto de caracteres también se convierte en una amenaza de seguridad.

Ataque homógrafo - cómo crear dominios falsos

El ataque homógrafo (IDN homograph attack) consiste en crear nombres de dominio falsos usando caracteres diferentes que se ven iguales (o muy similares).

  • La "a" latina (U+0061) y la "а" cirílica (U+0430)
  • La "o" latina (U+006F) y la "о" cirílica (U+043E)
  • La "p" latina (U+0070) y la "р" cirílica (U+0440)
  • La "e" latina (U+0065) y la "е" cirílica (U+0435)

Combinándolos, se puede crear аррle.com (todo en cirílico), un dominio visualmente indistinguible de apple.com. Si se usa como URL de un sitio de phishing, incluso los usuarios más atentos podrían ser engañados.

Contramedidas de los navegadores

Los principales navegadores, como contramedida contra los ataques homógrafos, muestran los nombres de dominio con scripts mixtos (que mezclan múltiples sistemas de escritura) en notación Punycode. Por ejemplo, el аррle.com en cirílico se muestra como xn--pple-43d0151b.com, haciendo evidente la falsificación.

Sin embargo, si todo el dominio está compuesto por un único script (por ejemplo, todo en cirílico), algunos navegadores pueden mostrarlo tal cual sin convertirlo a Punycode.

Caracteres invisibles - la amenaza de los caracteres de ancho cero

Unicode incluye varios "caracteres de ancho cero" que no se muestran en pantalla:

  • U+200B: Zero Width Space (espacio de ancho cero)
  • U+200C: Zero Width Non-Joiner
  • U+200D: Zero Width Joiner
  • U+FEFF: Zero Width No-Break Space (BOM)

Estos caracteres son invisibles, pero afectan a la comparación de cadenas y al cálculo de hashes:

  • Marca de agua (watermark): existe una técnica que inserta caracteres de ancho cero en documentos confidenciales para identificar quién los filtró. Insertando patrones diferentes de caracteres de ancho cero para cada destinatario, se puede identificar al responsable de la filtración a partir del patrón del documento filtrado
  • Problemas con contraseñas: al introducir una contraseña mediante copiar y pegar, si se infiltran caracteres de ancho cero, se produce la situación de "la contraseña es correcta pero no puedo iniciar sesión"
  • Alteración de código: ataque que inserta caracteres de ancho cero en el código fuente, creando código que se ve igual pero se comporta diferente (ataque Trojan Source)

Caracteres de control de dirección - manipulando el flujo del texto

Unicode incluye caracteres que controlan la dirección de visualización del texto. Como el árabe y el hebreo se escriben de derecha a izquierda, estos caracteres de control tienen usos legítimos, pero también se explotan en ataques.

  • U+202E: Right-to-Left Override. Fuerza la visualización del texto de derecha a izquierda a partir de este carácter

Por ejemplo, el nombre de archivo document_‮fdp.exe se muestra en pantalla como document_exe.pdf. El usuario cree que es un archivo PDF y hace doble clic, pero en realidad es un archivo .exe (ejecutable).

Lo que los desarrolladores deben tener en cuenta

  • Al aceptar entrada de usuarios, sanitizar (eliminar) caracteres de ancho cero y caracteres de control de dirección
  • En la validación de nombres de dominio, convertir a Punycode antes de comparar
  • En la visualización de nombres de archivo, eliminar o escapar los caracteres de control de dirección
  • En las revisiones de código, usar herramientas que detecten la infiltración de caracteres de ancho cero (ej: grep -P '[\x{200B}-\x{200F}\x{202A}-\x{202E}]')

Resumen

Unicode es un gran sistema que permite manejar de forma unificada los caracteres de todo el mundo, pero su riqueza también se convierte en una amenaza de seguridad. Ataques homógrafos, caracteres de ancho cero, caracteres de control de dirección - conocer estas amenazas aumenta tu vigilancia ante URLs de sitios de phishing y nombres de archivo sospechosos. Cuando accedas a IP Check-san, adquiere el hábito de verificar que el nombre de dominio en la barra de URL sea correcto.

Términos del glosario relacionados

Phishing Técnica que crea dominios falsos mediante ataques homógrafos para suplantar sitios legítimos. DNS Los nombres de dominio internacionalizados (IDN) se convierten a Punycode para resolverse en el DNS. HTTPS Los dominios falsos también pueden obtener certificados TLS, por lo que HTTPS por sí solo no garantiza la seguridad. Dirección IP Si el dominio es diferente, la dirección IP también lo es. Los dominios falsos de ataques homógrafos apuntan a IPs diferentes.