In NLnet Labs Unbound 1.13.2 up to and including 1.25.1, stub or forward zones where the name is below an intermediate labed below a DNSSEC signed zone could be shadowed by the intermediate label's secure NXDOMAIN answer from the parent. This is caused by an off-by-one error in 'harden-below-nxdomain' logic; enabled by default. It effectively bypasses the configuration and the configured stub/forward zone is never contacted. 'harden-below-nxdomain' does an upward DNS cache walk together with a delegation point guard that does not allow NXDOMAIN synthesis above stub/forward zones. The guard tests the domain name but before stripping a label. This results in an iteration where the domain name equals the configured stub/forward zone apex that passes the guard, strips one more label, and probes the cache at the apex's immediate public parent. If that parent has a cached DNSSEC-secure NXDOMAIN, which it will for any private namespace nested two or more labels under a signed public name, the walk returns it and the configured stub/forward upstream is never contacted. This can only be triggered by the query for the intermediate label (between the stub/forward apex and the DNSSEC parent zone).
{
"binaries": [
{
"binary_version": "1.13.1-1ubuntu5.15",
"binary_name": "libunbound8"
},
{
"binary_version": "1.13.1-1ubuntu5.15",
"binary_name": "python3-unbound"
},
{
"binary_version": "1.13.1-1ubuntu5.15",
"binary_name": "unbound"
},
{
"binary_version": "1.13.1-1ubuntu5.15",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.13.1-1ubuntu5.15",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.19.2-1ubuntu3.8",
"binary_name": "libunbound8"
},
{
"binary_version": "1.19.2-1ubuntu3.8",
"binary_name": "python3-unbound"
},
{
"binary_version": "1.19.2-1ubuntu3.8",
"binary_name": "unbound"
},
{
"binary_version": "1.19.2-1ubuntu3.8",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.19.2-1ubuntu3.8",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.24.2-1ubuntu2.1",
"binary_name": "libunbound8"
},
{
"binary_version": "1.24.2-1ubuntu2.1",
"binary_name": "python3-unbound"
},
{
"binary_version": "1.24.2-1ubuntu2.1",
"binary_name": "unbound"
},
{
"binary_version": "1.24.2-1ubuntu2.1",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.24.2-1ubuntu2.1",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.4.22-1ubuntu4.14.04.3+esm3",
"binary_name": "libunbound2"
},
{
"binary_version": "1.4.22-1ubuntu4.14.04.3+esm3",
"binary_name": "python-unbound"
},
{
"binary_version": "1.4.22-1ubuntu4.14.04.3+esm3",
"binary_name": "unbound"
},
{
"binary_version": "1.4.22-1ubuntu4.14.04.3+esm3",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.4.22-1ubuntu4.14.04.3+esm3",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.5.8-1ubuntu1.1+esm3",
"binary_name": "libunbound2"
},
{
"binary_version": "1.5.8-1ubuntu1.1+esm3",
"binary_name": "python-unbound"
},
{
"binary_version": "1.5.8-1ubuntu1.1+esm3",
"binary_name": "unbound"
},
{
"binary_version": "1.5.8-1ubuntu1.1+esm3",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.5.8-1ubuntu1.1+esm3",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "libunbound2"
},
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "python-unbound"
},
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "python3-unbound"
},
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "unbound"
},
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.6.7-1ubuntu2.6+esm4",
"binary_name": "unbound-host"
}
]
}{
"binaries": [
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "libunbound8"
},
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "python-unbound"
},
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "python3-unbound"
},
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "unbound"
},
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "unbound-anchor"
},
{
"binary_version": "1.9.4-2ubuntu1.11+esm1",
"binary_name": "unbound-host"
}
]
}