StartEncrypt considered harmful today
computest.nl
computest.nl
If you're curious if there are any rules for CAs that describe how domain validation must be performed, the current Baseline Requirements can be summarized with "do something that's safe" on that topic. A working group within the CA/B Forum[1] is currently working on revising the document and adding explicit rules declaring which methods are permitted. I believe [2] is the latest draft.
[1]: https://cabforum.org/mailman/listinfo/validation
[2]: https://github.com/cabforum/documents/pull/25/files?short_pa...
no StartEncrypt API now, later it will support IETF ACME, maybe open source.Apparently, "substantially negative".
Grabbing an open-source ACME implementation really is the canonical value proposition for open source. Work together to make it secure, every individual contributor (once it exists) does less work over all, and even had they successfully implemented StartEncrypt the first time, the value would be in hosting it and attaching their reputation to it, not the API design. So even the usual objections to using open source in a commercial setting hardly apply. There's not much in the way of "look and feel", and no matter how this was going to happen the actual "polish" was going to be done by creating a new website that they could make as polished as they like with no trouble.
In other words, they have comprehensively flubbed this. Even once the code is fixed, the reputation damage is done.
Don't. Implement. Crypto.
StartEncrypt by StartCom/StartSSL has a LetsEncrypt-like verification process wherin the ownership of the domain is verified by doing a HTTP request, and having the listening webserver return a specific token.
The problem was that they allowed the user to choose the path on the domain, and so when you for example would host a raw file on Github or Dropbox, you could issue a certificate for that domain. Also, it would follow redirects, even to other domains, and with OAuth2 practically mandating open redirects, this was easy to do on many sites.
I'd like to be warned about certificates from certain CAs without access to that site being blocked. That way I can still reach these sites, but know not to trust them with confidential data. It also allows me to ask those sites to use a CA I trust.
The point being to be able to punish CAs less harshly than the death-sentence that is root removal.
http://www.techfleece.com/2011/09/09/how-to-delete-the-digin...
Essentially I am looking to be told about certificates signed by certain CAs without them actually interfering with my browsing. Kinda like this: https://chrome.google.com/webstore/detail/tlsa-validator/gmg...
Startcom is unsafe, unethical, and the kiss of death for a CA, cannot be trusted.
Intentionally publishing something is diametrically opposed to having something compromised.
That was simply an attempt to shirk his contractual obligations with StartCom and get internet points at the same time.
Also, the flip side of this is that occasionally (but very rarely), people want their private key to be a publicly accessible. See http://readme.localtest.me/, where everything else .localtest.me resolves to 127.0.0.1, and they tried to post a wildcard, but it got revoked.
Because its root certificate is in everybody's CA bundle, StartCom had a moral responsibility to understand the security around this product. This is negligence.
I don't have any StartCom certificates right now, but I sure won't have any in the future after this display.
What would a "CA death penalty" look like? They're a "root" CA, is there an entity that signed their root certificate that could issue a revocation? Or would we have to get all the OS and browser vendors to agree to phase out their root after some time?
Yup.
* Applications -> Utilities -> Keychain Access
* Select System Roots on the top bar, then Certificates on the bottom one
* Double click on the 3 StartCom certificates in the list, and flag them as "Never Trust".
Verify by trying to access https://startssl.com
Validating that a host is on the correct domain is very hard in the presence of attacks. DNS can be spoofed. If there was an easy way to verify domains, CA-issued SSL certs would be unnecessary.
[1] http://blog.trendmicro.com/trendlabs-security-intelligence/l... [2] https://community.letsencrypt.org/t/attack-on-domain-verific...
That's quite different. The attackers appear to have had full control of DNS in that case. Being able to control DNS is essentially the definition of domain ownership. Fraudulent issuance would be the smallest problem for a site affected by this. They'd have gotten a certificate from practically any CA issuing DV certificates.
Domain validation is messy and far from perfect, but this vulnerability is just inexcusable.
The Startcom vulnerabilities, on the other hand, are much easier to exploit and clearly violate DV's threat model.
If you're a government authority or even just a individual looking to get a nice signed certificate for some big domains you need look no further than that giant CA list. Any one of thousands. It's damn hard to have one developer write something reasonably secure, how hard do you think it is to have thousands write everything perfect?
This is basically saying the CA's private key has been leaked. Because the end result is the same: I can now issue a certificate for any damn domain I want and have it trusted.
The certificate authority system is broken.
Browsers may rely on the certificate store and trust settings provided by your OS. For example, Firefox always uses their own certificate store, while Chrome relies on the system.
certsimple has this guide on how to remove or distrust certificates in various browsers:
https://certsimple.com/blog/control-the-ssl-cas-your-browser...
The only thing that's preventing you from getting a certificate for any domain are software checks implemented on their end. If one of these checks fail (i.e. because the methodology is broken, or there's a bug, or they can be bypassed), you can get a certificate for any domain.
Usually, "a web page at google.com" means to put a specific, CA-picked string at a specific, CA-picked URL. The ACME protocol has you put it under /.well-known/, which is reserved for this sort of thing. Other CAs will give you a randomly-generated filename. The intention is that you shouldn't be able to, say, upload a file to GitHub or some forum and claim control of it; you actually have to operate the site.
StartEncrypt neglected to enforce that check.
For google.com in particular, when you click "Sign in with Google" to a third-party service, it sends you to a URL on google.com, and google.com will redirect you back to the third-party site when it's done. What the attacker does is they set up their own website and enable Google sign-in on it (which anyone can do without Google's permission). Then they sign in, and save the URL that's redirecting them back, and send that URL to StartEncrypt. StartEncrypt dutifully follows the redirect when fetching content from google.com, and tricks itself into thinking the file was actually at google.com.
Hundreds of other companies also have the same ability, with new grants and revocations of trust occurring over time.