Reported earlier this week as 
https://bugzilla.mozilla.org/show_bug.cgi?id=1330482 
<https://bugzilla.mozilla.org/show_bug.cgi?id=1330482> - posting to list per 
request on that bug:

In January 2010, I reported two issues to GoDaddy, with an example certificate 
that should have been rejected:
 - their website-based authentication required a request to an URL including a 
random string to include the same random string. A 200 was not required, but 
even with a 200 requirement, this would have not have been secure for many 
common website configurations; this appears to be at least extremely similar to 
the current issue
 - their DNS-based authentication required random subdomain to exist as a CNAME 
record - but the target was not specified. This meant that anyone could get a 
certificate for any domain that had a wildcard CNAME (e.g. ‘* CNAME @‘ is 
particularly common).

GoDaddy fixed these in September 2010. I am posting as I believe that GoDaddy 
should have invested in automated testing for these issues as a best practice 
(even if not required by industry agreements at the time) and any other 
verification failures that have been reported to them without publication.

I do not appear to still have access to my original GoDaddy tickets; timeline 
and details from my notes are below (CNAME incident first):

The new incorrect issuance with non-200 responses appears to be the same as one 
of two issues I reported (and was fixed) in 2010:

I reported two issues to GoDaddy back in 2010 (included after timeline) - the 
second one appears to be the same bug as the new incident being discussed at 
https://groups.google.com/forum/?hl=en#!msg/mozilla.dev.security.policy/Htujoyq-pO8/uRBcS2TmBQAJ
 
<https://groups.google.com/forum/?hl=en#!msg/mozilla.dev.security.policy/Htujoyq-pO8/uRBcS2TmBQAJ>
 - timeline:

2010-01-09: I wanted an SSL certificate for my domain; I read GoDaddy’s 
instructions, and realized that my existing configuration probably matched 
their requirements. I got my SSL certificate with no changes to my DNS or 
website.

2010-01-10: Notification sent to godaddy (Incident ID 8143623)

2010-01-20: Second notification sent to godaddy (Incident ID 8214596)

2010-01-21: Confirmed the flaw still exists - I got go daddy to issue me a 
certificate for a friend’s domain (consent 
given, but no cooperation)

2010-08-26: Reported again - had not yet received a response - (id 9711250)

2010-09-03: Phone call with Todd Redfoot (Chief information security officer)
2010-09-23: Email from Todd Redfoot confirming fix deployed

My report from 2010 is below - the first one is no longer valid given the 
switch to TXT-records for authentication.

----- 1. CNAME verification ——

 In short: if a domain had a wildcard CNAME, anyone could get a certificate for 
that domain from GoDaddy.

I have tested this approach, and got a godaddy signed certificate with consent 
but not cooperation (and godaddy not being informed of consent).

1. Find a domain which appears to have a wildcard CNAME record (i.e. "dig 
somegarbage.example.com" returns any CNAME record)

2. Ask for permission from the owner (optional if blackhat….)

3. Create a CSR for the domain

4. Sign up for a godaddy domain verified certificate (referred to on the site 
by 
a mixture of "Standard SSL" or "Turbo SSL" - same product)

5. Submit your CSR

6. Godaddy will attempt some verification via whois; wait a few hours for this 
to fail. They will email to let you know when this happens

7. Sign in to the web panel, and select "domain-based verification"

8. It will immediately confirm that verification was successful

9. In a few minutes, you can download a certificate for the domain

Godaddy's DNS verification is as follows:
- Create a random code
- Require you to make it so that randomcode.yourdomain.com returns a CNAME 
record
- The value of the CNAME record is irrelevant and not specified

So, you can get a domain-verified SSL certificate for a domain with anything 
like any of the following in the zonefile:

* CNAME @
* CNAME example.com
* CNAME pleasedontsignacertificatebasedonthis.com

----- 2. Web-based verification ------

Instructions as above, except:

1. Find a domain where a not-found page returns a page including the URL 
requested. I'd assume that the site must also be misconfigured to return a 200 
response instead of 404, but this is a fairly common misconfiguration.

7. Select web-based verification

Similar cause; godaddy require that http://example.com/godaddyRandomCode 
<http://example.com/godaddyRandomCode> 
returns a page including godaddyRandomCode

Regards,
 - Fred
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to