zlacker

[parent] [thread] 11 comments
1. throwa+(OP)[view] [source] 2023-05-04 20:20:45
Both http and dns verification are stupid. Neither of them prove you own the domain.

http verification proves you temporarily control IP space relative to a viewer. dns verification proves you temporarily control name resolution relative to a viewer.

Both are trivially hacked, multiple ways. By the time someone finds out you did it (if they closely monitor CT logs, which nobody does) you've already had hours, days, weeks to run a MITM on any domain you want. The attack only has to work once, on any of 130+ CAs.

The solution is registrar-level proof. Cert request signed by the private key of the domain owner, sent to the registrar to verify, the registrar signs it if its true, it's sent to the CA who can see the registrar signed it. Now you know for a fact the domain owner asked for the cert. The only possible attack is to steal all three of the owner's private key, the registrar's private key, and a CA's private key.

I have been shouting about this for 10 years, none of the industry incumbents care. The internet is run by morons.

replies(4): >>mikea1+43 >>justin+76 >>brazzy+b6 >>nijave+kh
2. mikea1+43[view] [source] 2023-05-04 20:37:08
>>throwa+(OP)
> ...dns verification proves you temporarily control name resolution relative to a viewer.

> Both are trivially hacked, multiple ways.

I'm genuinely curious how it is trivial to "control [authoritative] name resolution relative to a viewer".

replies(2): >>LawTal+5f >>throwa+3O
3. justin+76[view] [source] 2023-05-04 20:53:35
>>throwa+(OP)
I can get behind registrar-level proof. And I can see why it won't happen, and it isn't because it's a bad idea.

One problem I see is the extra overhead for the registrars. Now they have one more thing to do: verify (sign) certificate requests. That extra work is probably enough to get registrars to push back against such a system.

The registrar would be assuming some of the functions of a CA. This would make it easier for a single entity be both registrar and CA. That would threaten the business model CAs and thus they'd push back against such a system.

If the CA were responsible for getting the registrar's verification for a certificate request then that'd add extra work for CAs, and thus the CAs would push back against it. If the domain owner was responsible for getting the registrar's verification for a certificate before submitting it to a CA, then the domain owners would be against it.

And this is all assuming that people could agree on a common set of protocols or data formats for this new system.

replies(2): >>xp84+1g >>akira2+lI
4. brazzy+b6[view] [source] 2023-05-04 20:53:43
>>throwa+(OP)
> I have been shouting about this for 10 years, none of the industry incumbents care. The internet is run by morons.

Or maybe, just maybe, hear me out on this... maybe your proposal is not as smart as you think it is.

For one thing:

> Cert request signed by the private key of the domain owner, sent to the registrar to verify, the registrar signs it if its true

What exactly does the registrar verify, and how?

replies(1): >>throwa+rN
◧◩
5. LawTal+5f[view] [source] [discussion] 2023-05-04 21:40:36
>>mikea1+43
It's not as much that it's trivial (but it seems like it always is because social engineering never stops working) but that once the attacker has authed they can generally delete whatever extra file or record they made and stay authed, potentially hiding the attack.

Whereas, if that required a signature from a private key, with a counter or other log of use in the TPM, it'd be caught by an audit without having to notice the symptoms.

I know that in security design that I've been involved with there's a lot more scrutiny given to each use of a privileged key than there is to making sure that all website logging lists each file in the directory at each request, or logging the full public state of your DNS every minute. Requiring a signed request makes the attacker come in through the front door.

◧◩
6. xp84+1g[view] [source] [discussion] 2023-05-04 21:45:10
>>justin+76
> extra overhead for the registrars. Now they have one more thing to do:

I suppose I only take issue with "more" - as it stands don't registrars do effectively nothing today besides print money? It seems like the kind of business that doesn't require much that isn't already automated, and where the only reason I don't have a successful registrar business is that the contracts with whoever owns the actual TLDs are difficult to get. Perhaps they need to look out for DMCA letters? Idk maybe I'm way off, feel free to correct me if anyone knows it's a difficult job.

7. nijave+kh[view] [source] 2023-05-04 21:53:03
>>throwa+(OP)
Doesn't mandatory DNSSEC also fix this?
replies(1): >>auscom+Hu
◧◩
8. auscom+Hu[view] [source] [discussion] 2023-05-04 23:25:01
>>nijave+kh
DNSSEC adoption is pretty low outside of customers of large nameserver providers (that support DNSSEC out of the box), and also requires the registrar and registry support DNSSEC too. Unfortunately there are still some out there that don't.
◧◩
9. akira2+lI[view] [source] [discussion] 2023-05-05 01:28:40
>>justin+76
Instead of certificates, could you not use published tokens, using the same mechanism that registrars already use for publishing DNS NS "glue" records?
◧◩
10. throwa+rN[view] [source] [discussion] 2023-05-05 02:25:32
>>brazzy+b6
The person who owns the domain creates a private key and uploads the public key to the registrar when they buy the domain. Literally a 68 byte string. Not exactly hard to store. The domain name itself may be longer.

The domain owner creates a CSR and signs it using their private key. Sends it to the registrar. The registrar uses the public key the user uploaded to validate the signature. This happens millions of times a day on shitty computers, this is completely old boring technology.

Now the registrar sends the Registrar-Signed-CSR back to the user. The user sends the RS-CSR to a CA. The CA uses the Registrar's public key to validate the Registrar's signature (exact same process as before). Now the CA can see the Registrar signed it, so it's legit.

Easy to automate. Boring old technology. Same flow millions of computers use every day, just with one extra party in the middle.

replies(1): >>brazzy+QA3
◧◩
11. throwa+3O[view] [source] [discussion] 2023-05-05 02:33:45
>>mikea1+43
Find out what the CA uses for its DNS resolver. Attack it with cache poisoning, or BGP spoofing, or compromise the account controlling the target domain's nameserver records, or trick some other system into making a record you want.

The BGP attack requires knowledge of internet routing and the DNS attack requires knowledge of DNS server exploits, but either of them can be executed with very minimal network access that any consumer can get. Target the nameserver account admin with a phishing attack, account reset attack, lateral password bruteforce, etc.

You'd be surprised how incredibly stupid the admins of some of the largest computer networks are. It's really not hard to get access to some accounts. It should require more than just a username and password to hijack a domain, but usually it doesn't.

In any case, if all you want is a valid cert, you can do it a number of ways that nobody will notice. Again, this only has to work once, on any one of 130+ different organizations. Not all of them have stellar security.

And I'm not even talking about social engineering either the CA, Nameserver, or Registrar's support people, which I consider cheating because it's so much easier.

◧◩◪
12. brazzy+QA3[view] [source] [discussion] 2023-05-05 21:26:42
>>throwa+rN
How does the CA get the registrar's public key in a way that cannot be spoofed or hacked like you say DNS and HTTP verification can? If your thread model already includes hacking a CA's network infrastructure, getting them to accept the wrong key as valid doesn't seem any more difficult than the others.
[go to top]