{"id":"GHSA-83hf-93m4-rgwq","revision":"eb44a543f3b3470a97765425ed3996bf","records":[{"revision":"eb44a543f3b3470a97765425ed3996bf","observedAt":"2026-10-24T13:19:54.901+00:00","statement":{"source":"osv","id":"GHSA-83hf-93m4-rgwq","aliases":["CVE-2026-42254"],"title":"Hickory DNS's Record Cache Accepts AUTHORITY-Section NS from Sibling Zone via Parent-Pool Zone-Context Elevation","description":"# Summary\n\nThe Hickory DNS project's experimental `hickory-recursor` crate's record cache (`DnsLru`) stores records from DNS responses keyed by each record's own (name, type), not by the query that triggered the response. `cache_response()` in `crates/recursor/src/lib.rs` chains `ANSWER`, `AUTHORITY`, and `ADDITIONAL` sections into one record iterator before insertion. The bailiwick filter it applies uses the zone context of the NS pool that serviced the lookup, not the zone being queried.\n\nThis creates a cross-zone poisoning path. When Hickory builds the NS pool for `attacker.poc.` it uses the parent `poc.` `NS` pool (`ns.zone() = \"poc.\"`). If the `poc.` nameserver under the attacker's control includes in its response's `AUTHORITY` section a record for a sibling zone like `victim.poc. NS ns.evil.poc.`, the bailiwick check `is_subzone(\"poc.\", \"victim.poc.\")` passes (`victim.poc.` is a subdomain of `poc.`). The record is stored under `(victim.poc., NS)` in the shared cache.\n\nSubsequently, any client querying a name in `victim.poc`. causes Hickory to build its NS pool from the poisoned cache entry, routing queries to the attacker's nameserver (`ns.evil.poc.`) rather than to the legitimate nameserver for `victim.poc.`. The legitimate `NS` for that zone receives zero queries.\n\nThis issue is fixed in `hickory-resolver` 0.26.0 with the `recursor` feature through an architectural change to response-level caching: responses are stored keyed by the originating query `(name, type)`. A response to `(attacker.poc. NS)` is stored only under that key and cannot affect the `(victim.poc., NS)` cache entry.\n\nHickory DNS believes this issue has been present in all published versions of the experimental `hickory-recursor` crate, which has now been folded into the `hickory-resolver` crate under the non-default `recursor` feature flag. The `hickory-recursor` crate will not receive any updates going forward and all users should migrate to `hickory-resolver` with the `recursor` feature.\n\nUsers of the `hickory-dns` binary configured with the opt-in `recursor` feature and a configuration acting as a recursive resolver should update to 0.26.0+.\n\n### Reporter \n\nQifan Zhang, Palo Alto Networks","state":0,"publishedAt":"2026-04-30T18:10:58+00:00","modifiedAt":"2026-07-08T08:12:56.4589924+00:00","affected":[{"ecosystem":"crates.io","name":"hickory-recursor","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.24.0"},{"kind":"fixed","version":"0.26.0"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"hickory-recursor","ranges":[],"versions":["0.1"],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/hickory-dns/hickory-dns/security/advisories/GHSA-83hf-93m4-rgwq","https://github.com/hickory-dns/hickory-dns"],"sourceUrl":"https://github.com/advisories/GHSA-83hf-93m4-rgwq","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-83hf-93m4-rgwq","identifiers":["GHSA-83hf-93m4-rgwq","CVE-2026-42254"]},"retained":false,"historicalAffected":[]}],"coverage":[]}