logoalt Hacker News

Domain hacks with unusual Unicode characters (2018)

41 points β€’ by n_plus_1_acc β€’ today at 10:44 AM β€’ 35 comments β€’ view on HN

Comments

jasomill β€’ today at 5:56 PM

Note that, in addition to normalizing domain components, the process also maps U+3002 IDEOGRAPHIC FULL STOP (。) to U+002E FULL STOP (.) for use as a separator, a nice touch for domain names encoded in blackboard bold.

Also, the author's one-liner, updated for Python 3:

  python3 -c 'import sys;print(sys.argv[1].encode("idna").decode("ascii"))' "β„‘"
n_plus_1_acc β€’ today at 10:47 AM

Looks like HN broke the URL after submitting. Let's try again:

    https://β‚›α΅–.β“œ/
Here is the backup link:

https://shkspr.mobi/blog/2018/11/domain-hacks-with-unusual-u...

βž• show 1 reply
huhtenberg β€’ today at 11:54 AM

Tangentially related - 20+ years ago I managed to register a Ο€ domain under one of the primary TLDs.

As in, the registration form was accepted and the fee was charged.

Then, few days after they emailed to say that "due to technical difficulties" the registration can be registered and they have no choice but to unregister it.

I was so close, damn amateurs.

βž• show 2 replies
brewmarche β€’ today at 2:33 PM

Not sure why so many things use the compatibility form of normalisation.

Some older RFCs even recommended using it for passwords, which needlessly reduces entropy (yes we need to normalise passwords because of combining characters, but we don’t need to collapse symbols that a user can choose from, like ΕΏ and s).

In my opinion, the compatibility form makes mostly sense for searching text, and even then it’s sometimes annoying (I want to search exactly for ss and not ß, browser). If you know of other good use cases let me know.

It also OK to disallow registering two identifiers with the same compatibility normalisation form, but I don’t see the need to normalise the identifier when it’s used.

Aozora7 β€’ today at 1:21 PM

My favorite unicode character is zero width space. One of its funniest properties is that it's not a whitespace.

Also, some programming languages treat it as a valid identifier.

βž• show 1 reply
debugnik β€’ today at 1:32 PM

Firefox doesn't even let me open the link, wow.

βž• show 2 replies
mmsc β€’ today at 12:19 PM

On Firefox, hover-over of the link doesn't show the URL in the bottom left of the browser.

waltbosz β€’ today at 12:06 PM

I click on the link on Android Firefox and nothing happens.

wodenokoto β€’ today at 2:12 PM

This has given me a lot of trouble with emails.

I have a domain that contains Nordic characters and it is a crapshoot if the email client will accept and send.

Meanwhile I have not encountered problems with http access.

jan_Sate β€’ today at 2:32 PM

Looks like that it could be exploited by some means for nefarious purpose. I wonder why it's even implemented in the first place.

basilikum β€’ today at 2:16 PM

Here is the URL encoded in base64 so HN does not break it:

aHR0cHM6Ly/wn4WC8J2WjfCdkKTigpvhtZbwnZKTLuKTnPCdlaDwnZKD8J2Tsi/wn4aG8J+Gg/CfhbU=

teddyh β€’ today at 3:36 PM

There have been some additions since 2018 when this article was written; here is the current list, from what I can tell:

  ㍳ β”‚ 003373 β”‚ SQUARE AU β”‚ AU β”‚ Australia
  ㍴ β”‚ 003374 β”‚ SQUARE BAR β”‚ BAR β”‚ Bar, Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
  ㎈ β”‚ 003388 β”‚ SQUARE CAL β”‚ CAL β”‚ Google
  ㏄ β”‚ 0033C4 β”‚ SQUARE CC β”‚ CC β”‚ Cocos (Keeling) Islands
  ㏅ β”‚ 0033C5 β”‚ SQUARE CD β”‚ CD β”‚ The Democratic Republic of the Congo
  οΏ½ β”‚ 01F12D β”‚ CIRCLED CD β”‚ CD β”‚ The Democratic Republic of the Congo
  ㎝ β”‚ 00339D β”‚ SQUARE CM β”‚ CM β”‚ Cameroon
  οΏ½ β”‚ 01F190 β”‚ SQUARE DJ β”‚ DJ β”‚ Djibouti
  ㍷ β”‚ 003377 β”‚ SQUARE DM β”‚ DM β”‚ Dominica
  Η± β”‚ 0001F1 β”‚ LATIN CAPITAL LETTER DZ β”‚ DZ β”‚ Algeria
  Η² β”‚ 0001F2 β”‚ LATIN CAPITAL LETTER D WITH SMALL LETTER Z β”‚ DZ β”‚ Algeria
  Η³ β”‚ 0001F3 β”‚ LATIN SMALL LETTER DZ β”‚ DZ β”‚ Algeria
  fi β”‚ 00FB01 β”‚ LATIN SMALL LIGATURE FI β”‚ FI β”‚ The Republic of Finland
  γŽ™ β”‚ 003399 β”‚ SQUARE FM β”‚ FM β”‚ Federated States of Micronesia
  ㏿ β”‚ 0033FF β”‚ SQUARE GAL β”‚ GAL β”‚ Galicia, Spain
  γŽ‡ β”‚ 003387 β”‚ SQUARE GB β”‚ GB β”‚ United Kingdom
  ㏉ β”‚ 0033C9 β”‚ SQUARE GY β”‚ GY β”‚ Guyana
  ㏌ β”‚ 0033CC β”‚ SQUARE IN β”‚ IN β”‚ The Republic of India
  ㎏ β”‚ 00338F β”‚ SQUARE KG β”‚ KG β”‚ Kyrgyzstan
  ㎞ β”‚ 00339E β”‚ SQUARE KM β”‚ KM β”‚ Comoros
  ㏎ β”‚ 0033CE β”‚ SQUARE KM β”‚ KM β”‚ Comoros
  ㎾ β”‚ 0033BE β”‚ SQUARE KW β”‚ KW β”‚ Kuwait
  ㋏ β”‚ 0032CF β”‚ LIMITED LIABILITY SIGN β”‚ LTD β”‚ Binky Moon, LLC
  γŽƒ β”‚ 003383 β”‚ SQUARE MA β”‚ MA β”‚ Morocco
  οΏ½ β”‚ 01F16A β”‚ RAISED MC SIGN β”‚ MC β”‚ Monaco
  οΏ½ β”‚ 01F16B β”‚ RAISED MD SIGN β”‚ MD β”‚ The Republic of Moldova
  ㎎ β”‚ 00338E β”‚ SQUARE MG β”‚ MG β”‚ Madagascar
  ㏕ β”‚ 0033D5 β”‚ SQUARE MIL β”‚ MIL β”‚ United States Military
  ㎜ β”‚ 00339C β”‚ SQUARE MM β”‚ MM β”‚ Myanmar
  οΏ½ β”‚ 01F16C β”‚ RAISED MR SIGN β”‚ MR β”‚ Mauritania
  ㎳ β”‚ 0033B3 β”‚ SQUARE MS β”‚ MS β”‚ Montserrat
  ㎷ β”‚ 0033B7 β”‚ SQUARE MV β”‚ MV β”‚ Maldives
  ㎹ β”‚ 0033B9 β”‚ SQUARE MV MEGA β”‚ MV β”‚ Maldives
  οΏ½ β”‚ 01F14B β”‚ SQUARED MV β”‚ MV β”‚ Maldives
  ㎽ β”‚ 0033BD β”‚ SQUARE MW β”‚ MW β”‚ Malawi
  ㎿ β”‚ 0033BF β”‚ SQUARE MW MEGA β”‚ MW β”‚ Malawi
  ㎁ β”‚ 003381 β”‚ SQUARE NA β”‚ NA β”‚ Namibia
  γŽ‹ β”‚ 00338B β”‚ SQUARE NF β”‚ NF β”‚ Norfolk Island
  β„– β”‚ 002116 β”‚ NUMERO SIGN β”‚ NO β”‚ The Kingdom of Norway
  γŽ€ β”‚ 003380 β”‚ SQUARE PA AMPS β”‚ PA β”‚ Panama
  ㎩ β”‚ 0033A9 β”‚ SQUARE PA β”‚ PA β”‚ Panama
  ㎊ β”‚ 00338A β”‚ SQUARE PF β”‚ PF β”‚ French Polynesia
  ㏗ β”‚ 0033D7 β”‚ SQUARE PH β”‚ PH β”‚ The Republic of the Philippines
  ㏚ β”‚ 0033DA β”‚ SQUARE PR β”‚ PR β”‚ Puerto Rico (U.S.)
  ㎰ β”‚ 0033B0 β”‚ SQUARE PS β”‚ PS β”‚ Palestinian Territory, Occupied
  ㎺ β”‚ 0033BA β”‚ SQUARE PW β”‚ PW β”‚ Palau
  ₨ β”‚ 0020A8 β”‚ RUPEE SIGN β”‚ RS β”‚ Serbia
  οΏ½ β”‚ 01F14C β”‚ SQUARED SD β”‚ SD β”‚ Sudan
  β„  β”‚ 002120 β”‚ SERVICE MARK β”‚ SM β”‚ San Marino
  ㏛ β”‚ 0033DB β”‚ SQUARE SR β”‚ SR β”‚ Suriname
  οΏ½ β”‚ 01F14D β”‚ SQUARED β”‚ SS β”‚ SS β”‚ South Sudan
  st β”‚ 00FB06 β”‚ LATIN SMALL LIGATURE ST β”‚ ST β”‚ Sao Tome and Principe
  ㏜ β”‚ 0033DC β”‚ SQUARE SV β”‚ SV β”‚ El Salvador
  β„‘ β”‚ 002121 β”‚ TELEPHONE SIGN β”‚ TEL β”‚ Contact data
  β„’ β”‚ 002122 β”‚ TRADE MARK SIGN β”‚ TM β”‚ Turkmenistan
  β…₯ β”‚ 002165 β”‚ ROMAN NUMERAL SIX β”‚ VI β”‚ Virgin Islands, U.S.
  β…΅ β”‚ 002175 β”‚ SMALL ROMAN NUMERAL SIX β”‚ VI β”‚ Virgin Islands, U.S.
  ㌽ β”‚ 00333D β”‚ SQUARE POINTO β”‚ γƒγ‚€γƒ³γƒˆ β”‚ Amazon Registry Services, Inc.
βž• show 2 replies
jonwinstanley β€’ today at 3:07 PM

Is it too late to say most Unicode characters should not be permitted in domains?

kccqzy β€’ today at 12:47 PM

My browser refuses to open this link. It couldn’t find the server.

TacticalCoder β€’ today at 1:33 PM

Which of course Bruce Schneier predicted in 2000:

https://www.schneier.com/crypto-gram/archives/2000/0715.html...

"Unicode is just too complex to eve be secure"

As to me I'm running my own DNS resolver (I use unbound) and everything goes through port 53 UDP (and AIUI technically 53 TCP should be allowed, but nothing will happen if you just block it), unencrypted. What then unbound does on the Internet, that's up to you: you can encrypt those requests...

The nice thing with everything being in the clear, is that you can null route / NX DOMAIN every single domain that uses Unicode (punnycode) characters and you can even do that at the firewall level, by inspecting UDP packets.

Of course you gotta be sure to really block DoH / DoT internally but it's all doable.

I set that up years ago and I've been running like that since then without any issue.

Just as entire countries's IP blocks do not exist in my world, domains using Unicode characters do not exist. And I really don't care about your feelings about it: I'm just explaining that technically it can be done to block them all and that the Internet keeps working just fine.

Unicode really is just too complex to ever be secure. And those who don't understand that are part of the problem.

βž• show 1 reply
ButlerianJihad β€’ today at 12:20 PM

Now, please present a list of these to your grandmother, and ask her which ones are phishing, and which are legitimately from the government.

Now, present the same list to an I.T. professional with the same questions. Perhaps make sure they are not carrying any weapons before you try.

This is just one reason why visual inspection of URLs and "hover over this link" haven't been useful defenses for a long time.

βž• show 2 replies
ihateaislop β€’ today at 2:23 PM

What hack you fucking retard? You just find this out?