GHSA-x845-2f78-7v36
## Summary Blocky accepts and caches forged DNS answers while `dnssec.validate: true` is enabled. The issue has two related exploit paths: 1. **Basic DNSSEC validation bypass.** If an untrusted upstream returns an unsigned positive answer for a DNSSEC-signed public domain, Blocky classifies the response as `Insecure` solely because the response contains no RRSIG records. It does not first check the DS/DNSKEY chain to determine whether the queried name is below a signed delegation. The forged unsigned answer is returned and cached. 2. **Validation-cache scope pollution through forged insecure proofs.** If a response contains some RRSIG material and enters RRset validation, an attacker-controlled response path can still cause Blocky to cache `ValidationResultInsecure` for the bare domain name by returning a DS response with no DS records and an unsigned NSEC/NSEC3 record in the authority section. Blocky treats the mere presence of NSEC/NSEC3 as authenticated DS absence and stores the resulting `Insecure` state without validating the parent-zone proof. That cached state is keyed only by domain name and can be reused for later responses and cache hits. Both paths were reproduced through Blocky's real DNS listener using external UDP DNS client queries. In both reproductions, the malicious upstream was shut down before the second query; Blocky still returned the poisoned answer from its own cache. ## DNSSEC validation Configuration The PoCs use Blocky's documented DNSSEC configuration model. This is not a misconfiguration. Blocky's own documentation states that the basic DNSSEC configuration is: ```yaml dnssec: validate: true ``` The documentation says this enables DNSSEC validation with default settings and built-in root trust anchors, and that Blocky will validate DNSSEC-signed domains. It also states that, when DNSSEC validation is enabled, Blocky will: - set the DNSSEC OK bit on upstream queries; - validate RRSIG records; - verify the chain of trust from
Properties
- ghsa_id
- GHSA-x845-2f78-7v36
- summary
- Blocky DNSSEC validation bypass and validation-cache scope pollution
- severity
- high
- cvss_score
- 8.6
- cve_id
- GHSA-x845-2f78-7v36
- cvss_vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
- is_ghsa_only
- true
- ghsa_published
- 2026-06-19T20:47:46Z
- source_url
- https://github.com/advisories/GHSA-x845-2f78-7v36
- ghsa_updated
- 2026-06-19T20:47:47Z
Related Entities (5)
REPORTED_BY (1)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (2)
Explore deeper with Ninja Signal's threat intelligence graph