Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DoS from unbounded outstanding CERTIFICATE_REQUESTs #1089

Closed
davidben opened this issue Mar 3, 2020 · 1 comment
Closed

DoS from unbounded outstanding CERTIFICATE_REQUESTs #1089

davidben opened this issue Mar 3, 2020 · 1 comment

Comments

@davidben
Copy link
Contributor

davidben commented Mar 3, 2020

The secondary certificates draft separates CERTIFICATE_REQUEST from CERTIFICATE_NEEDED. This seems needlessly complex and introduces a DoS on the receiver with client certificates.

Clients which prompt the user on client certificate decisions need a request binding before acting on a certificate request. Even without a prompt, cross-name pooling means that, without that request binding, the client doesn't even know which origin requested the certificate!

However, secondary certificates splits the request and the binding into two separate frames. There are no rules preventing a server from queuing up unboundedly meany CERTIFICATE_REQUEST frames to be matched with CERTIFICATE_NEEDED later. This means the server can easily DoS such a client by sending unboundedly many CERTIFICATE_REQUESTs.

Why is there a split in the first place? If they are associated with a stream, this neatly bounds the certificate requests by the bound of open streams and also means that, if a stream is canceled, any outstanding certificate requests on that stream may be aborted.

@mnot
Copy link
Member

mnot commented Jul 29, 2021

Closing, as we're no longer working on secondary certs.

@mnot mnot closed this as completed Jul 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants