Un ataque homógrafo (Homograph Attack o IDN Homograph Attack) es una técnica que emplea caracteres Unicode visualmente idénticos o muy similares para falsificar nombres de dominio legítimos. Por ejemplo, la letra latina "a" (U+0061) y la letra cirílica "a" (U+0430) son indistinguibles a simple vista, pero el ordenador las trata como caracteres diferentes.
Un caso ilustrativo: reemplazar la "a" latina de "apple.com" por una "a" cirílica produce un dominio que parece idéntico pero que en realidad es completamente distinto, permitiendo alojar un sitio falso de Apple. En 2017, el investigador de seguridad Xudong Zheng demostró esta técnica y generó gran repercusión.
El sistema de nombres de dominio internacionalizados (IDN) es lo que hace posible este ataque. IDN permite usar caracteres no ASCII (japonés, árabe, cirílico, etc.) en los nombres de dominio, que internamente se convierten a Punycode (codificación que comienza con xn--). Como la barra de direcciones del navegador muestra la versión Unicode, el usuario difícilmente detecta la suplantación.
La relación entre las URL acortadas y los ataques homógrafos presenta un doble riesgo. Primero, el propio dominio del servicio de acortamiento puede ser suplantado mediante homógrafos. Segundo, la URL de destino de un enlace acortado puede ser un sitio de phishing con un dominio homógrafo. Del lado del servicio de acortamiento también se espera rechazar los destinos que resulten ser dominios suplantados, aunque el parecido visual por sí solo no permite trazar un límite mecánico.
Los principales navegadores actúan en el lado de la visualización, pero las condiciones para pasar a Punycode difieren entre ellos. La política de visualización que publica Chrome abarca no solo los dominios que mezclan scripts (sistemas de escritura) confundibles, sino también los nombres confundibles escritos con un único script y los que coinciden con un dominio conocido cuando los caracteres confundibles se reducen a una forma común. Firefox se basa en permitir la visualización Unicode cuando el registro del dominio de nivel superior ha declarado sus propias contramedidas, y considera que la suplantación que sustituye todos los caracteres dentro de un mismo script no puede evitarse desde la visualización, dejándola en manos de quien acepta el registro. El caso que llamó la atención en 2017 estaba escrito íntegramente en cirílico precisamente porque esa forma esquivaba las comprobaciones basadas en la mezcla de scripts. Ver Unicode en la barra de direcciones no prueba que el dominio sea legítimo.