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

Public name rewriting #389

Closed
martinthomson opened this issue Feb 23, 2021 · 4 comments
Closed

Public name rewriting #389

martinthomson opened this issue Feb 23, 2021 · 4 comments

Comments

@martinthomson
Copy link
Contributor

Is there any sense in having the server validate the value of the server name indication extension in the outer ClientHello? It seems like it might help avoid a trivial attack on DNS that might otherwise pass without notice or alarm. That is, an attack that copies the DNS QNAME in the public_name field.

There are various ways in which this might fail, but none of the scenarios that I can think of result in anything that a client or server might recognize as being alarming.

It is easy to detect and prevent this sort of interference: the client-facing server checks that the SNI matches the value it expects from the ECHConfig that has been selected. If the config might have changed, such that multiple values are valid, then the server can allow for that, but generally there will be just one valid value.

@sftcd
Copy link
Collaborator

sftcd commented Feb 23, 2021 via email

@davidben
Copy link
Collaborator

The entire ECHConfig is also bound into the decryption, so if the DNS is messing with ECHConfigs, you won't end up negotiating ECH. Copying the QNAME into the public name probably will successfully bounce ECH off via the recovery flow, but the DNS could just as easily have dropped the ECHConfig itself.

@chris-wood
Copy link
Collaborator

@martinthomson can you elaborate on the attack you had in mind? @davidben notes that the entire ECHConfig is now authenticated, so any disagreement between client and server will cause ECH negotiation failure.

@martinthomson
Copy link
Contributor Author

I should have responded earlier (thought I did...). The fact that the configuration is covered prevents this from being a problem. I missed that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants