-
Notifications
You must be signed in to change notification settings - Fork 126
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
feat: DNSSEC Validation #470
Conversation
63f8763
to
414dc59
Compare
dnssec related functions now sit in their own file
revert depth change. depth can't be carried to subqueries
d907ca8
to
4d62421
Compare
Additionally, let's add integration tests to |
2d4c764
to
148eb28
Compare
It seems cloudflare will not validate anything with iteration > 0. We are fine validating them, but print a log for visibility.
I conducted another round of tests on the top 10k domains, and the results aligned closely with Cloudflare, with a few explainable non-alignments remain:
I'm comfortable with the shape of this PR now. Feel free to start reviewing @phillip-stephens @zakird. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this look great and I'm very excited to see DNSSEC validation added. @phillip-stephens is going to take a closer look.
Re 1: This might be worth fixing in ZCrypto and using that. I think that we can leave this however as a FR and merge in any case. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, I tested it locally on 1k domains and spot-checked a few of them. Also reverted the change to require go 1.20
since not sure we need to do that. Otherwise this looks really great and super excited about it! Thanks @developStorm!
resolves #441
Purpose
Adds support for validating DNSSEC records up to the root's chain-of-trust
The level of detail in the validation results depends on the
--result-verbosity=
flag. In theshort
mode, validation results are not output (equivalent to no validation). In thenormal
mode, only the overall validation status is output. In thelong
mode, all relevant records used for validating this specific result (DS, DNSKEY, RRSIG) and the validation results for each individual RRset are printed. In thetrace
mode, all validation details for the entire query chain are available along the trace.Since we are a DNS scanning tool, the resolution results may still hold value even in cases of DNSSEC validation failure. Therefore, a validation failure does not lead to a resolution failure - i.e., the resolution results will still be output normally. It is the responsibility of data consumers to check the DNSSEC validation status before using the results.
Example usage:
go run . A example.com --iterative --validate-dnssec --result-verbosity=long
Example output (long):
Example output (normal):