hickory-resolver follows irrelevant CNAME recordsGHSA-6f2x-v7q7-m7m5
Fix: hickory-dns/hickory-dns#3871GHSA-6f2x-v7q7-m7m5 is a security vulnerability in hickory-resolver. A fix is available for hickory-resolver — see the affected versions and patch details below.
Real-World Exposure
hickory-resolverReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects crates.io packages — download data is not available via public APIs for these ecosystems.
Description
When the Hickory DNS resolver follows CNAME records, it sends queries that are not necessary to answer the original recursive query. If there are any CNAME records in the authority section or additional section of the response, queries will be sent for those names. If there are any CNAME records that are not part of a CNAME chain starting from the original recursive query name, queries will be sent for those names. This increases query amplification beyond what is necessary to answer the recursive query.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🦀crates.io | hickory-resolver | ≥ 0.25.0&&< 0.26.2 | 0.26.2cargo update -p hickory-resolver --precise 0.26.2 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for hickory-resolver, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update hickory-resolver to 0.26.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-6f2x-v7q7-m7m5 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is GHSA-6f2x-v7q7-m7m5 in your dependencies?
Find it across crates.io, including transitive dependencies.