highCVSS 8.6Vulnerability

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)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]go/github.com/0xERR0R/blocky

AFFECTS (1)

[Software]go/github.com/0xERR0R/blocky

HAS_WEAKNESS (2)

[Weakness]Reliance on Untrusted Inputs in a Security Decision
[Weakness]Origin Validation Error

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-x845-2f78-7v36 (CVSS 8.6) — Ninja Signal Threat Intelligence | Ninja Signal