Nixpkgs security tracker

Login with GitHub

Suggestions search

With package: unbound-with-systemd

Found 35 matching suggestions

View:
Compact
Detailed
Permalink CVE-2026-55990
5.9 MEDIUM
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): High (H)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): High (H)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python314Packages.pyunbound
    • python313Packages.pyunbound
    • prometheus-unbound-exporter
    • lua55Packages.luaunbound
    • lua53Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • luaPackages.luaunbound
    • luajitPackages.luaunbound
    • lua54Packages.luaunbound
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
Packet of death for a DNSCrypt misconfigured Unbound

In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, when the 'dnscrypt:' clause lists more 'dnscrypt-provider-cert:' files than there are matching 'dnscrypt-secret-key:' files, Unbound fills only the matched prefix and leaves the tail slots at the '0xdb' fill that libsodium's allocator writes into every allocation. Unbound would then iterate over the number of cert files, not the actual slots, so it walks into a slot with garbage data filled with '0xdb' bytes. Any unauthenticated client that sends one UDP datagram of ≥ 68 bytes whose first 8 bytes are '0xdb' to 'dnscrypt-port' will use that garbage entry which leads to a garbage dereference killing the server. This is a silent faulty configuration that goes unnoticed until triggered with the right client query. Unbound needs to be compiled with DNSCrypt support ('--enable-dnscrypt').

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-50248
6.5 MEDIUM
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): High (H)
  • Availability (A): Low (L)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): High (H)
  • Modified Availability (MA): Low (L)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python314Packages.pyunbound
    • python313Packages.pyunbound
    • prometheus-unbound-exporter
    • luajitPackages.luaunbound
    • lua55Packages.luaunbound
    • lua54Packages.luaunbound
    • lua53Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • luaPackages.luaunbound
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
BOGUS configured primary hostname accepted for XFR in auth/rpz zones

In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, when an auth/rpz zone has a configured primary hostname that resolves to BOGUS A/AAAA, it is still considered as a possible XFR endpoint. A malicious actor that can spoof the hostname's A/AAAA record (no valid RRSIG required) becomes the zone's XFR primary and can replaces the entire zone/the resolver's entire response policy.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-32665
7.5 HIGH
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): Low (L)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): High (H)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): Low (L)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): High (H)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    15 packages
    • luaPackages.luaunbound
    • lua51Packages.luaunbound
    • lua52Packages.luaunbound
    • lua53Packages.luaunbound
    • lua54Packages.luaunbound
    • lua55Packages.luaunbound
    • luajitPackages.luaunbound
    • prometheus-unbound-exporter
    • python313Packages.pyunbound
    • unbound-with-systemd
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python314Packages.pyunbound
  • @LeSuisse restored package unbound-with-systemd
  • @LeSuisse accepted
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse published on GitHub
Remote DNS-over-QUIC denial of service due to `quic-size` budget bypass

In NLnet Labs Unbound 1.22.0 up to and including 1.25.1, when downstream DNS-over-QUIC (DoQ) is enabled, the first two bidirectional streams on a new QUIC connection (stream_id 0 and 4) bypass the per-stream 'quic-size' gate entirely, and large input buffers are allocated later, after only the 2-byte length prefix has been received from the initial streams. As a result, a remote client can make Unbound exceed the configured 'quic-size' limit with low-cost input. Using only one connection and two streams, each sending a declared 65535-byte length prefix and then holding the streams open, a client can already trivially make Unbound roughly allocate double that amount. This is a remote availability issue / memory-accounting bypass in the downstream DoQ implementation that leads to denial of service for new DoQ clients. This vulnerability needs Unbound to be compiled with DoQ support ('--with-libngtcp2') and the 'quic-port' to be configured for the listening interfaces.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-50252
5.7 MEDIUM
  • CVSS version (CVSS): 4.0
  • Attack Vector (AV): Adjacent (A)
  • Attack Complexity (AC): Low (L)
  • Attack Requirement (AT): Present (P)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Vulnerable System Impact Confidentiality (VC): None (N)
  • Vulnerable System Impact Integrity (VI): High (H)
  • Vulnerable System Impact Availability (VA): None (N)
  • Subsequent System Impact Confidentiality (SC): None (N)
  • Subsequent System Impact Integrity (SI): High (H)
  • Subsequent System Impact Availability (SA): High (H)
  • Exploit Maturity (E): POC (P)
  • Provider Urgency (U): Amber (Amber)
  • Modified Attack Vector (MAV): Adjacent (A)
  • Modified Attack Complexity (MAC): Low (L)
  • Modified Attack Requirement (MAT): Present (P)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Vulnerable System Impact Confidentiality (MVC): None (N)
  • Modified Vulnerable System Impact Integrity (MVI): High (H)
  • Modified Vulnerable System Impact Availability (MVA): None (N)
  • Modified Subsequent System Impact Confidentiality (MSC): Negligible (N)
  • Modified Subsequent System Impact Integrity (MSI): High (H)
  • Modified Subsequent System Impact Availability (MSA): High (H)
  • Safety (S): Not Defined (X)
  • Automatable (AU): Not Defined (X)
  • Recovery (R): Not Defined (X)
  • Value Density (V): Not Defined (X)
  • Vulnerability Response Effort (RE): Not Defined (X)
  • Confidentiality Req. (CR): Not Defined (X)
  • Integrity Req. (IR): Not Defined (X)
  • Availability Req. (AR): Not Defined (X)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • luaPackages.luaunbound
    • lua51Packages.luaunbound
    • lua52Packages.luaunbound
    • lua53Packages.luaunbound
    • lua54Packages.luaunbound
    • lua55Packages.luaunbound
    • luajitPackages.luaunbound
    • prometheus-unbound-exporter
    • python313Packages.pyunbound
    • python314Packages.pyunbound
    • haskellPackages.unbound-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbound-generics-unify
  • @LeSuisse accepted
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse published on GitHub
Possible cache poisoning attack by mapping source port population per thread

In NLnet Labs Unbound 1.4.22 up to and including 1.25.1, UDP source port is randomized and intended to serve as a secret value that increases the entropy of DNS transactions. When resolver load balancing policies depend on the source port while their outcome is revealed this secrecy is undermined. The vulnerability arises when the load balancing policy is consistent with respect to the incoming source UDP port and IP address while heavily depending on the incoming source UDP port as a randomization source. When the SO_REUSEPORT configuration option is enabled ('so-reuseport: yes') in Unbound (by default), it meets these conditions, making it vulnerable for DNS cache poisoning attacks. Upon startup, Unbound randomly partitions the available UDP source port space into disjoint subsets of (almost) equal size, assigning each subset to a specific worker thread. When an incoming DNS query is received, the kernel’s SO_REUSEPORT load balancing mechanism deterministically assigns the query to a socket associated with a particular thread. All outgoing DNS queries generated during the resolution of that request use source ports selected exclusively from the port subset assigned to the corresponding thread. Since these port subsets are disjoint across threads, the source port observed in a resolver’s outgoing query to an authoritative name server serves as a reliable indicator of the worker thread that processed the original client query. A malicious actor can acquire the mapping between incoming UDP source ports (for a given fixed source IP address) and Unbound worker threads and leverage it to conduct DNS cache poisoning attacks by effectively lowering the random port population per thread.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-55708
3.1 LOW
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Local (L)
  • Attack Complexity (AC): Low (L)
  • Privileges Required (PR): High (H)
  • User Interaction (UI): Required (R)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): Low (L)
  • Integrity (I): Low (L)
  • Availability (A): None (N)
  • Modified Attack Vector (MAV): Local (L)
  • Modified Attack Complexity (MAC): Low (L)
  • Modified Privileges Required (MPR): High (H)
  • Modified User Interaction (MUI): Required (R)
  • Modified Confidentiality (MC): Low (L)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): Low (L)
  • Modified Availability (MA): None (N)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • lua51Packages.luaunbound
    • lua52Packages.luaunbound
    • lua53Packages.luaunbound
    • lua54Packages.luaunbound
    • lua55Packages.luaunbound
    • luajitPackages.luaunbound
    • prometheus-unbound-exporter
    • python313Packages.pyunbound
    • python314Packages.pyunbound
    • haskellPackages.unbound-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbound-generics-unify
    • luaPackages.luaunbound
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
Privacy/configuration issue when adding local data in views through 'unbound-control'

In NLnet Labs Unbound 1.6.0 up to and including 1.25.1, the 'view_local_data' and 'view_local_datas' commands of 'unbound-control' create a bare local zones tree for an already configured named view when the view is configured with no local data to begin with. However, the creation through the control interface omits adding the default-protected zones (e.g., RFC 1918 reverse, AS112 zones, .onion, .localhost). Once the local zone tree exists without the defaults, every query for a default-protected name from a client mapped to that view escapes to the public DNS via the iterator instead of being answered locally, bypassing local policy expectations.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-14586
5.9 MEDIUM
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): High (H)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): High (H)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • luaPackages.luaunbound
    • lua51Packages.luaunbound
    • lua52Packages.luaunbound
    • lua53Packages.luaunbound
    • lua54Packages.luaunbound
    • lua55Packages.luaunbound
    • luajitPackages.luaunbound
    • prometheus-unbound-exporter
    • python313Packages.pyunbound
    • python314Packages.pyunbound
    • haskellPackages.unbound-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbound-generics-unify
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
Assertion in libngtcp2 when under pressure in high concurrency DNS-over-QUIC environments

In NLnet Labs Unbound 1.22.0 up to and including 1.25.1, in DNS-over-QUIC environments, with high concurrency and under pressure, an assertion in libngtcp2 about monotonic timestamps could trigger and result in server termination and thus denial of service. When interfacing with libngtcp2, for DNS-over-QUIC support in Unbound, it is expected to use monotonic time. Unbound was using realtime instead, and in DoQ environments with high concurrency and under pressure, an assert in libngtcp2 for the quic timestamp would trigger and terminate the server.This vulnerability needs Unbound to be compiled with DoQ support ('--with-libngtcp2') and the 'quic-port' to be configured for the listening interfaces.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Permalink CVE-2026-50243
6.3 MEDIUM
  • CVSS version (CVSS): 4.0
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Attack Requirement (AT): None (N)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Vulnerable System Impact Confidentiality (VC): None (N)
  • Vulnerable System Impact Integrity (VI): Low (L)
  • Vulnerable System Impact Availability (VA): None (N)
  • Subsequent System Impact Confidentiality (SC): None (N)
  • Subsequent System Impact Integrity (SI): Low (L)
  • Subsequent System Impact Availability (SA): None (N)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Attack Requirement (MAT): None (N)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Vulnerable System Impact Confidentiality (MVC): None (N)
  • Modified Vulnerable System Impact Integrity (MVI): Low (L)
  • Modified Vulnerable System Impact Availability (MVA): None (N)
  • Modified Subsequent System Impact Confidentiality (MSC): Negligible (N)
  • Modified Subsequent System Impact Integrity (MSI): Low (L)
  • Modified Subsequent System Impact Availability (MSA): Negligible (N)
  • Safety (S): Not Defined (X)
  • Automatable (AU): Not Defined (X)
  • Recovery (R): Not Defined (X)
  • Value Density (V): Not Defined (X)
  • Vulnerability Response Effort (RE): Not Defined (X)
  • Provider Urgency (U): Not Defined (X)
  • Confidentiality Req. (CR): Not Defined (X)
  • Integrity Req. (IR): Not Defined (X)
  • Availability Req. (AR): Not Defined (X)
  • Exploit Maturity (E): Not Defined (X)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python313Packages.pyunbound
    • luajitPackages.luaunbound
    • lua55Packages.luaunbound
    • lua54Packages.luaunbound
    • lua53Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • luaPackages.luaunbound
    • python314Packages.pyunbound
    • prometheus-unbound-exporter
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
'response-ip'/'rpz' can rewrite BOGUS answers instead of returning SERVFAIL

In NLnet Labs Unbound 1.6.2 up to and including 1.25.1, when Unbound is configured with the 'respip' module in front of the validator together with a 'response-ip' redirect rule or an RPZ file with an RPZ-IP trigger, the rewriting handler does not check the security status of the upstream answer and can instead rewrite a BOGUS A/AAAA answer to point to an operator's configured IP. If the validator finds an expired or otherwise invalid RRSIG on an answer whose A record falls within a 'response-ip'/RPZ configuration, the answer is still rewritten and given a hard coded security level of INSECURE. This results in the client receiving an INSECURE NOERROR reply rewritten by the operator's configured IP. A malicious actor can exploit the possible poisonous effect by spoofing a BOGUS A/AAAA answer that falls inside the operator's configured subnet rewrites. Such DNSSEC protected answers are then insecurely redirected to the operator's configured target.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-55973
7.5 HIGH
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): Low (L)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): High (H)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): Low (L)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): High (H)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python314Packages.pyunbound
    • python313Packages.pyunbound
    • prometheus-unbound-exporter
    • lua55Packages.luaunbound
    • luajitPackages.luaunbound
    • lua54Packages.luaunbound
    • lua53Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • luaPackages.luaunbound
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
'dns-error-reporting: yes' leads to stack buffer overflow

In NLnet Labs Unbound 1.23.0 up to and including 1.25.1, when 'dns-error-reporting: yes' is set, the EDNS Report-Channel option (code 18) from the last upstream response is read and uses the option's length as the length of the agent domain. When a domain name check is performed on the agent domain, the returned lenght is not used and if the agent domain is followed by garbage, those bytes are moved onto the tail of the synthetic '_er.' report query name. That query name is later used in the iterator via a subquery to send out the DNS Error Report and when Unbound tries to walk that query name during 'find_closest_of_type()', it strips labels using the query name length rather than stopping at the embedded root, walks one byte past it, and feeds the first garbage byte to 'dname_query_hash()' as a label length writing over the stack variable 'labuf'. One ordinary upstream response from a delegated zone the attacker controls is sufficient to terminate the daemon.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-55717
5.9 MEDIUM
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): High (H)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): High (H)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbounded-delays
    • haskellPackages.unbound-generics
    • python314Packages.pyunbound
    • python313Packages.pyunbound
    • prometheus-unbound-exporter
    • luajitPackages.luaunbound
    • lua55Packages.luaunbound
    • lua54Packages.luaunbound
    • lua53Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • luaPackages.luaunbound
  • @LeSuisse ignored maintainer @Scrumplex maintainer.ignore
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
'serve-expired-client-timeout' and 'response-ip' CNAME redirect could lead to a crash

In NLnet Labs Unbound 1.10.0 up to and including 1.25.1, when 'serve-expired: yes' is set together with a 'response-ip: <net> redirect' /'response-ip-data: <net> CNAME <target>' rule (or the RPZ 'rpz-cname-override' equivalent), a remote client who controls any delegated domain can crash the daemon. The serve-expired-client-timeout callback runs a two-pass loop to chase the respip-generated CNAME alias; on the second pass it resets 'alias_rrset' but not 'partial_rep'. Later, this inconsistency leads to a NULL pointer dereference and an eventual crash. A malicious actor can exploit the vulnerability by controlling any zone that replies with an A/AAAA record that falls inside the configured response-ip/rpz subnet. By delaying the answer when the previous record has expired, the vulnerable path of 'serve-expired-client-timeout' is taken leading to denial of service via the server crash.

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers

Ignored maintainers (1)
Permalink CVE-2026-44687
3.7 LOW
  • CVSS version (CVSS): 3.1
  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): High (H)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): None (N)
  • Integrity (I): None (N)
  • Availability (A): Low (L)
  • Modified Attack Vector (MAV): Network (N)
  • Modified Attack Complexity (MAC): High (H)
  • Modified Privileges Required (MPR): None (N)
  • Modified User Interaction (MUI): None (N)
  • Modified Confidentiality (MC): None (N)
  • Modified Scope (MS): Unchanged (U)
  • Modified Integrity (MI): None (N)
  • Modified Availability (MA): Low (L)
updated 5 days, 21 hours ago by @LeSuisse Activity log
  • Created suggestion
  • @LeSuisse ignored
    14 packages
    • haskellPackages.unbound-generics-unify
    • haskellPackages.unbound-kind-generics
    • haskellPackages.unbound-generics
    • python313Packages.pyunbound
    • prometheus-unbound-exporter
    • lua54Packages.luaunbound
    • lua52Packages.luaunbound
    • lua51Packages.luaunbound
    • haskellPackages.unbounded-delays
    • python314Packages.pyunbound
    • luajitPackages.luaunbound
    • lua55Packages.luaunbound
    • lua53Packages.luaunbound
    • luaPackages.luaunbound
  • @LeSuisse accepted
  • @LeSuisse published on GitHub
Off-by-one error in 'harden-below-nxdomain' logic can shadow a stub/forward zone by a legitimate parent's NXDOMAIN

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).

Affected products

Unbound
  • <1.25.2

Matching in nixpkgs

Ignored packages (14)

Package maintainers