On Thursday, January 11, 2018 at 3:36:50 PM UTC-6, Ryan Sleevi wrote:
> On Wed, Jan 10, 2018 at 4:33 AM, josh--- via dev-security-policy <
> dev-security-policy@lists.mozilla.org> wrote:
> 
> > At approximately 5 p.m. Pacific time on January 9, 2018, we received a
> > report from Frans Rosén of Detectify outlining a method of exploiting some
> > shared hosting infrastructures to obtain certificates for domains he did
> > not control, by making use of the ACME TLS-SNI-01 challenge type. We
> > quickly confirmed the issue and mitigated it by entirely disabling
> > TLS-SNI-01 validation in Let’s Encrypt. We’re grateful to Frans for finding
> > this issue and reporting it to us.
> >
> > We’d like to describe the issue and our plans for possibly re-enabling
> > TLS-SNI-01 support.
> >
> > Problem Summary
> >
> > In the ACME protocol’s TLS-SNI-01 challenge, the ACME server (the CA)
> > validates a domain name by generating a random token and communicating it
> > to the ACME client. The ACME client uses that token to create a self-signed
> > certificate with a specific, invalid hostname (for example,
> > 773c7d.13445a.acme.invalid), and configures the web server on the domain
> > name being validated to serve that certificate. The ACME server then looks
> > up the domain name’s IP address, initiates a TLS connection, and sends the
> > specific .acme.invalid hostname in the SNI extension. If the response is a
> > self-signed certificate containing that hostname, the ACME client is
> > considered to be in control of the domain name, and will be allowed to
> > issue certificates for it.
> >
> > However, Frans noticed that at least two large hosting providers combine
> > two properties that together violate the assumptions behind TLS-SNI:
> >
> > * Many users are hosted on the same IP address, and
> > * Users have the ability to upload certificates for arbitrary names
> > without proving domain control.
> >
> > When both are true of a hosting provider, an attack is possible. Suppose
> > example.com’s DNS is pointed at the same shared hosting IP address as a
> > site controlled by the attacker. The attacker can run an ACME client to get
> > a TLS-SNI-01 challenge, then install their .acme.invalid certificate on the
> > hosting provider. When the ACME server looks up example.com, it will
> > connect to the hosting provider’s IP address and use SNI to request the
> > .acme.invalid hostname. The hosting provider will serve the certificate
> > uploaded by the attacker. The ACME server will then consider the attacker’s
> > ACME client authorized to issue certificates for example.com, and be
> > willing to issue a certificate for example.com even though the attacker
> > doesn’t actually control it.
> >
> > This issue only affects domain names that use hosting providers with the
> > above combination of properties. It is independent of whether the hosting
> > provider itself acts as an ACME client.
> >
> > Our Plans
> >
> > Shortly after the issue was reported, we disabled TLS-SNI-01 in Let’s
> > Encrypt. However, a large number of people and organizations use the
> > TLS-SNI-01 challenge type to get certificates. It’s important that we
> > restore service if possible, though we will only do so if we’re confident
> > that the TLS-SNI-01 challenge type is sufficiently secure.
> >
> > At this time, we believe that the issue can be addressed by having certain
> > services providers implement stronger controls for domains hosted on their
> > infrastructure. We have been in touch with the providers we know to be
> > affected, and mitigations will start being deployed for their systems
> > shortly.
> >
> > Over the next 48 hours we will be building a list of vulnerable providers
> > and their associated IP addresses. Our tentative plan, once the list is
> > completed, is to re-enable the TLS-SNI-01 challenge type with vulnerable
> > providers blocked from using it.
> >
> > We’re also going to be soliciting feedback on our plans from our
> > community, partners and other PKI stakeholders prior to re-enabling the
> > TLS-SNI-01 challenge. There is a lot to consider here and we’re looking
> > forward to feedback.
> >
> > We will post more information and details as our plans progress.
> >
> 
> (Wearing a Google Chrome hat on behalf of our root store policy)
> 
> Josh,
> 
> Thanks for bringing this rapidly to the attention of the broader community
> and proactively reaching out to root programs.
> 
> As framing to the discussion, we still believe TLS-SNI is fully permitted
> by the Baseline Requirements, which, while not ideal, still permits
> issuance using this method. As such, the 'root' cause is that the Baseline
> Requirements permit methods that are less secure than desired, and the
> discussion that follows is now around what steps to take - as CAs, as Root
> Programs, for site operators, and for the CA/Browser Forum.
> 
> When faced with a vulnerable validation method that is permitted, it's
> always a challenge to balance the need for security - for sites and users -
> with the risk of compatibility and breakage from the removal of such a
> method. Fundamentally, the issues you raise call into question the level of
> assurance of 3.2.2.4.9 and 3.2.2.4.10 in the Baseline Requirements, and are
> not limited to TLS-SNI, and potentially affects every CA using these
> methods.
> 
> When evaluating these methods, and their risks, compared to, say, the
> also-weak 3.2.2.4.1 and 3.2.2.4.5 discussions ongoing with the CA/Browser
> Forum, a few key distinctions, although non-exhaustive, apply and are
> factored in to our response and proposal here:
> 
> - The average lifetime of certificates using these methods, across CAs,
> compared to 3.2.2.4.1/3.2.2.4.5, is significantly shorter - very close to
> the 90 days that Let's Encrypt uses, based on the available information we
> have. The fact that so many of these certificates are short lived creates a
> situation in where there's simultaneously more risk to the ecosystem to
> rapidly removing these methods as acceptable (due to the need to
> obtain/renew certificate), while there's also much less risk in allowing
> this method to continue to be used for a limited time, due to the fact that
> certificates that could be obtained by exploiting this will expire much
> sooner than the 2-3 years that many other certificates are issued with.
> That is, the security risk of a bad validation that lives for 3 years is
> much greater than the risk of a bad validation that lives for 90 days, and
> the fact that the badness is only valid for 90 days means that it's easier
> to allow it to more gracefully shut down than potentially accepting that
> implied risk for years.
> 
> - The ease of which alternative methods exist. Methods that are manual are
> substantially easier to remove quickly, as alternative manual processes can
> also be used during the human-to-human interaction, while methods that are
> highly automated conversely create greater challenges, due to the need to
> update client software to whatever new automated methods may be used. While
> 3.2.2.4.1 and 3.2.2.4.5 are highly human-driven methods, methods like
> 3.2.2.4.9 and .10 are designed for automation - and why we were supportive
> of their addition - but also mean that any mitigations will necessarily
> face ecosystem challenges, much like deploying new versions of TLS or
> deprecating old ones.
> 
> - The ease of which alternative automated methods can be used. As automated
> methods are generally designed around integrated systems and certain design
> constraints, it's not always possible to move to an equivalently
> automatable method (as it is with manual methods), and it may be that no
> equivalent automated method exists to fill the design niche. If that design
> niche is a substantial one for clients, and enables otherwise unautomatable
> systems, it can pose greater risk in prematurely removing it. Specific
> applications of the .9 and .10 methods, such as ACME's TLS-SNI, occupy an
> important niche, similar to the 3.2.2.4.6 method and ACME's HTTP-01 method,
> provide a level of automation for systems not directly integrated with DNS,
> and while that means they must be particularly attentive to the security
> risks that come from that, done correctly, they can provide a greater path
> towards security.
> 
> - Compared to 3.2.2.4.1 and 3.2.2.4.5, specific applications of 3.2.2.4.9
> and 3.2.2.4.10 can be evaluated against possible mitigations for the risk,
> both short- and long-term, and steps in which site operators can take to
> affirmatively protect themselves offer better assurances than those that
> rely entirely on the CA's good behaviour. As you call out, the specific
> risks of TLS-SNI are limited to shared providers (not individual users)
> that meet certain conditions, and these shared providers can already take
> existing steps to minimize the immediate risk, such as blocking the use of
> certificates or SNI negotiations that contain the '.invalid' TLD. While
> this is not an ideal long-term solution, by any means, it allows us to
> frame both the immediate and specific risks and the ways to reduce that.
> 
> For the sake of brevity, I'll end my comparisons there, but hopefully
> highlights some of the factors we've considered in our response to your
> proposal.
> 
> Given the risks identified to 3.2.2.4.9 and 3.2.2.4.10, we think it would
> be best for CAs using these Baseline Requirements-acceptable methods of
> validation to begin immediately transitioning away from them, with the goal
> of either removing them entirely from the Baseline Requirements, or
> identifying ways in which .9 and .10 can be better specified to mitigate
> such risks. That said, given the potential risks to the ecosystem,
> particularly those with pre-existing short-lived certificates, we think
> that, provided that the new certificates are valid for 90 days or less,
> we're open to allowing the specific TLS-SNI methods identified by the ACME
> specification to continue to be used for a limited time, while the broader
> community works to identify potential mitigations (if possible) or
> transition away from these methods.
> 
> While we don't think the current status quo represents a viable long-term
> solution, given that the ACME TLS-SNI methods have been broadly reviewed
> within the IETF, that the risks apply to a limited subset of specific
> infrastructures, that mitigations are possible for these infrastructures to
> deploy, that Let's Encrypt is actively working with the community to
> identify, and ideally, share, those that haven't or cannot deploy such
> mitigations, and all of the other items previously mentioned, we think this
> represents an appropriate short-term balance.
> 
> If and as new facts become available, it may be necessary to revisit this.
> We may have overlooked additional risks, or failed to consider mitigating
> factors. Further, this response is contextualized in the application of
> ACME's TLS-SNI methods for validation, and such a response may not be
> appropriate for other forms of validations within the framework of
> 3.2.2.4.9 and 3.2.2.4.10. Similarly, this response doesn't apply to
> certificates that may be valid for longer periods, as they may present
> substantially greater risk to making effective improvements to or an
> orderly transition away from these methods.
> 
> We look forward to working with other browser vendors, site operators, and
> the relying community to work out ways to provide an orderly and effective
> transition to more secure methods - whether that means away from the
> 3.2.2.4.9/.10 series of domain validations, or to more restrictive forms
> that are more clearly "opt-in" rather than the explicit "opt-out" proposed
> (of 'blacklisting .invalid').
> 
> We're also curious if we've overlooked salient details in our response, and
> thus welcome feedback from Let's Encrypt, other CAs utilizing these
> validation methods (both TLS-SNI and 3.2.2.4.9 and 3.2.2.4.10), and the
> broader community as to our proposed next steps. Please consider this a
> draft response, and we look forward to future updates regarding proposed
> next steps.

We have published an update on our plans for TLS-SNI:

https://community.letsencrypt.org/t/2018-01-11-update-regarding-acme-tls-sni-and-shared-hosting-infrastructure/50188

The short summary is that we do not plan to generally re-enable TLS-SNI 
validation, but we will introduce various forms of whitelists to limit impact 
during our transition away from TLS-SNI.

Thanks to everyone for the feedback on this thread already. Let us know if you 
have any questions or concerns.
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to