同形字攻击是利用字形相似的字符构造域名,让用户误以为是另一个知名域名。例如用西里尔字母
а冒充拉丁字母a。它与第 40 期的 typosquatting 不同:同形字靠字形相似,typosquatting 靠拼写错误。
同形字攻击(homograph attack)利用的是视觉混淆:一些不同语言的字符在屏幕上几乎一模一样。西里尔字母 а 与拉丁字母 a 外形相同,但属于完全不同的字符;数字 0 与字母 O、小写 l 与数字 1 也有类似问题。把这类字符混入域名,可以构造出与目标域名外观几乎一致的地址。
这类域名出现在第 15 期介绍的国际化域名(IDN)中。IDN 允许域名使用非拉丁字符,这些字符在底层被转成 xn-- 开头的 Punycode 编码,但用户在地址栏看到的是原始字符。攻击者可以注册 exаmple.com(其中 а 是西里尔字母),用户肉眼很难分辨它与 example.com 的差别。
浏览器和注册机构采取了一些应对措施:部分浏览器在检测到混合文字或全转码域名时,会直接显示 xn-- 形式的 Punycode 而不是原始字符,让可疑域名显形。同形字攻击常用于钓鱼网站,与第 40 期介绍的 typosquatting 同属域名仿冒,只是手法不同。