Delan Azabani

Sidestepping NXDOMAIN hijacking

 440 words 2 min  home

Until May last year, I was a customer of name.com for a domain name and DNS services. Having just grown out of a comfortable walled garden of all-in-one shared hosting and DNS perhaps about a year prior, I knew little other than that I should avoid GoDaddy. I since discovered that name.com was pulling a scummy trick that an increasing number of name service providers engaged in.

NXDOMAIN hijacking is not news now. Many ISPs and even OpenDNS have started doing it, and while it not only breaks the DNS specifications and poses a security risk, name.com's flippant responses and actions in holding customers liable for name.com's automatically generated content are clearly unacceptable. Specifically, the actions of name.com have been covered quite extensively.

That's not what this post is about though. You can easily avoid all of this by switching to a vendor that isn't bad, such as Namecheap, Hover or Gandi. If you stay with a provider like name.com, consider using something like Hurricane Electric's free DNS service, which supports IPv6 and includes the ability to run primary or secondary nameservers.

Time to explore some commonly suggested technical workarounds provided to users of the broken name services, for some fun and no profit. To begin, take this output of nslookup which exhibits the issue:

C:\Users\delan>nslookup notexistent.azabani.com.
Server:  resolv.on.ii.net
Address:  2001:44b8:1::1

Non-authoritative answer:
Name:    notexistent.azabani.com
Address:  174.37.172.71

A simplistic solution is to create wildcard A and AAAA records to IP addresses guaranteed to never route nor reach a compliant networked device. RFC 3513 § 2.5.2 stipulates that the address :: "must never be assigned to any node". However, as you may expect, there are still addresses returned by this method; any failure is in connection, not resolution.

*	A	0.0.0.0
*	AAAA	::

C:\Users\delan>nslookup notexistent.azabani.com.
Server:  resolv.on.ii.net
Address:  2001:44b8:1::1

Non-authoritative answer:
Name:    notexistent.azabani.com
Addresses:  ::
          0.0.0.0

Interestingly, the presence of any type of record will disable address hijacking, but the response will not actually be NXDOMAIN, but rather a NOERROR with no answer records. You can see that by creating a TXT wildcard record.

*	TXT	unused

C:\Users\delan>nslookup notexistent.azabani.com.
Server:  resolv.on.ii.net
Address:  2001:44b8:1::1

*** No internal type for both IPv4 and IPv6 Addresses (A+AAAA) records
available for notexistent

What does appear to do the trick is a wildcard CNAME to a target domain name that will never resolve. RFC 2606 § 2 and the more recent RFC 6761 § 6.4 define .invalid as a reserved TLD which is guaranteed to neither have any public domain registrations, nor ever be resolved by a compliant server.

*	CNAME	working.around.dns.hijacking.invalid

C:\Users\delan>nslookup notexistent.azabani.com.
Server:  resolv.on.ii.net
Address:  2001:44b8:1::1

*** resolv.on.ii.net can't find notexistent: Non-existent domain