Punycode Enables Invisible Phishing Attacks

Chinese security researcher Xudong Zheng found a way to work around add-on filters to render URLs as Punycode. He discovered characters within Unicode that could serve as functional substitutes for Latin alphabet characters and potentially allow fraudsters to mask phishing attacks. Since these characters were from only one language, using them does not trip the exclusionary filters imposed by the browsers.

For example, Zheng registered a certain domain that would display as “apple.com,” but was really composed of Cyrillic characters. This demonstrated a good proof of concept for potential phishing schemes.

Bleeping Computer reported that this vulnerability affects Chrome, Firefox and Opera browsers. Other browsers such as Edge, Internet Explorer, Safari, Vivaldi and Brave displayed the correct behavior by showing the Punycode.

A Flawed Industry Standard

Years ago, the Internet Corporation for Assigned Names and Numbers (ICANN) allowed allow non-ASCII (Unicode) characters to be present in web domains, but the firm quickly realized that this action could lead to some problems. Various characters from different languages can be confused for Unicode, since they will look the same in a browser display. Ultimately, this could enable a phishing attacker to display inaccurate URLs to victims.

To combat this, ICANN announced that Punycode, a way to represent Unicode within the limited character subset of ASCII used for internet host names, would specify actual domain registration. It was thought that browsers would first read the Punycode URL and then transform it into displayable Unicode characters inside the browser.

But like Unicode, Punycode could also hide phishing attempts through characters found in different languages. In response to this, vendors introduced add-on filters to render URLs as Punycode rather than Unicode if they contained characters from different languages.

According to Bleeping Computer, the browser-makers thought this would stop the substitutions from happening in the URL. Zheng’s research demonstrated otherwise.

Defense Against Phishing Attacks

In response to this vulnerability, Google decided to include a fix in Chrome 58, which will be released in late April, Zheng wrote.

Mozilla has not yet revealed its plans to resolve this situation. There is, however, a simple workaround for Firefox that disables Punycode support. To start, enter “about:config” in the Firefox address bar. Then enter “network.IDN_show_punycode” and set this option to “true” with a double-click.

This sort of homonym attack has been known for a while, and it was thought to be mitigated. It appears that a clever attack can still be performed using this method, placing internet users at risk of a phishing attack.

Larry Loeb

Principal, PBC Enterprises

Larry Loeb has written for many of the last century's major "dead tree" computer magazines, having been, among other...