DNSSEC: bogus NSEC denial proofs on GoDaddy-signed zone webcracy.ch

contact at webcracy.ch contact at webcracy.ch
Mon Oct 19 21:59:31 UTC 2026


Hi all,

reporting a DNSSEC signing bug at GoDaddy (domaincontrol.com), in case 
others are seeing it or someone from GoDaddy is on the list. GoDaddy 
support has a very long queue right now; I'll open a case there as well 
and follow up here with the number.

I run Webcracy SNC from Switzerland and our sites are on GoDaddy DNS 
with GoDaddy-managed DNSSEC.

----

webcracy.ch is hosted on GoDaddy DNS (ns55/ns56.domaincontrol.com) with
GoDaddy-managed DNSSEC (ECDSAP256SHA256, NSEC). Validating resolvers
(1.1.1.1, 8.8.8.8, 9.9.9.9) return SERVFAIL for some names because the NSEC
records GoDaddy serves don't prove what they need to. Two separate cases:


1. Wildcard expansion proof uses the wrong NSEC

The zone has "*.webcracy.ch A". Names synthesized from the wildcard that 
sort
right after a "label / label-suffix" pair get an NSEC that does not 
cover the
queried name, so the wildcard answer is bogus.

To show it I created two test records, a pair of that shape:

   dnssec-test.webcracy.ch.    CNAME  webcracy.ch.
   dnssec-test-a.webcracy.ch.  CNAME  webcracy.ch.

   Fails:  dnssec-test-b.webcracy.ch, dnssec-z.webcracy.ch
           Cloudflare: EDE 6 (DNSSEC Bogus): wildcard expansion proof 
for dnssec-z.webcracy.ch.
   Works:  dnssec-a.webcracy.ch (same wildcard, sorts before the pair)

For dnssec-z.webcracy.ch the server returns

   dnssec-test.webcracy.ch. NSEC dnssec-test-a.webcracy.ch. CNAME RRSIG NSEC

which does not cover "dnssec-z"; the covering NSEC would start at
dnssec-test-a. It looks like the chain is sorted as plain text ("-" 
before ".")
instead of in canonical DNS order (RFC 4034 section 6.1).


2. NXDOMAIN below an empty non-terminal is missing the wildcard-denial NSEC

The zone has several records under _agents (e.g. _a2a._agents and
_index._agents SVCB, _catalog._agents TXT), so _agents.webcracy.ch is an 
empty
non-terminal. Queries for missing names under it, e.g.
_example._agents.webcracy.ch, return NXDOMAIN with only

   _catalog._agents.webcracy.ch. NSEC _index._agents.webcracy.ch. TXT 
RRSIG NSEC

There is no NSEC proving that *._agents.webcracy.ch doesn't exist, so
validators mark the answer bogus:

   EDE 6 (DNSSEC Bogus): proof of non-existence of 
_example._agents.webcracy.ch.


Reproduce

   dig @1.1.1.1 dnssec-z.webcracy.ch A             -> SERVFAIL
   dig @1.1.1.1 _example._agents.webcracy.ch A     -> SERVFAIL
   dig +cd @1.1.1.1 dnssec-z.webcracy.ch A         -> answers 
(validation off)

   DNSViz (both marked Bogus; rest of the chain is Secure):

   https://dnsviz.net/d/dnssec-z.webcracy.ch/dnssec/
     "No NSEC RR covers the SNAME (dnssec-z.webcracy.ch). See RFC 4035, 
Sec. 3.1.3.3."

   https://dnsviz.net/d/_example._agents.webcracy.ch/dnssec/
     "No NSEC RR covers the wildcard (*._agents.webcracy.ch). See RFC 
4035, Sec. 3.1.3.2."


Impact

Real subdomains served by the wildcard became unreachable for every
validating resolver. We worked around it by giving each subdomain an 
explicit
CNAME, but any customer with DNSSEC plus a wildcard can hit this.

Thanks,
Liam Giannini, Webcracy



More information about the dns-operations mailing list