NewsApril 18, 2017 @ 2:55 PM

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 “,” 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.

Share this Article:
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 things, a consulting editor for BYTE magazine and senior editor for the launch of WebWeek. He wrote for IBM's DeveloperWorks site for seven years and has written a book on the Secure Electronic Transaction Internet protocol. His latest book has the commercially obligatory title of Hack Proofing XML. He's been online since uucp "bang" addressing (where the world existed relative to !decvax), serving as editor of the Macintosh Exchange on BIX and the VARBusiness Exchange.