Chrome and Firefox developers in an attempt to find a balance between showing internationalized domain names and protecting users from phishing are sounding an alarm that phishing attacks that using internationalised domains are hard to block.
The latest version of Google Chrome, released earlier this week, restricts how domain names that use non-Latin characters are displayed in the browser. This change is in response to a recently disclosed technique that could allow attackers to create highly credible phishing websites.The ability to register domain names made up of characters like those found in the Arabic, Chinese, Cyrillic, Hebrew and other non-Latin alphabets dates back over a decade. Since 2009, the Internet Corporation for Assigned Names and Numbers (ICANN) has also approved a large number of internationalized top-level domains (TLDs) — domain extensions — written with such characters.
To prevent these so-called homograph attacks, browsers perform a series of complex checks to decide if it’s best to display domain names using their intended scripts or to display their equivalents in Punycode instead. One of the rules they enforce is that if Latin, Cyrillic or Greek characters are mixed together, then Punycode will always be used.
The Punycode version of the apple.com domain mentioned above, where the letter “a” is from Cyrillic, would be: xn--pple-43d.com. That’s what users would see in the browser address bar.
However, taking things further, a Web application developer named Xudong Zheng realized that for some domain names or brands it is possible to replace all of the letters with visually similar ones from a different script. For example, there are lookalike chracters in Cyrillic for all the letters in the word apple. In this case, the browser filter above would no longer apply because there is no mixed script in the name.
To prove this, Xudong recently registered the xn--80ak6aa92e.com domain and set up a website whose address looked virtually identical to apple.com when opened inside Chrome, Firefox or Opera on Windows and Linux. On macOS the “l” character looked a bit differently, but was still close enough.
Xudong reported this issue to browser vendors and Google fixed it Wednesday in Chrome 58 by adding yet another check to its internationalized domain name (IDN) policy. The browser will now display domain names in Punycode if all of their characters are Latin lookalike Cyrillic letters and if the top-level domain name is not an internationalized one. This means that the check only applies to traditional Latin-based generic and country-code TLDs like .com, .net, .org, .uk, .de and so on.