Alpine: multiple unbound packages, py3-unbound: security update to 1.25.2-r0

high Tenable Self-Hosted Container Security Plugin ID 445414

Description

There are packages installed that are affected by multiple vulnerabilities referenced in the following CVEs:

- 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. (CVE-2026-50252)

- In NLnet Labs Unbound 1.16.2 up to and including 1.25.1, a similar vulnerability as with CVE-2026-40622 in
the 'ghost domain names' family of attacks was found in Unbound that could extend the ghost domain window
by up to one cached TTL configured value for A/AAAA glue records. Similar to other 'ghost domain names'
attacks, an adversary needs to control a (ghost) zone and be able to query a vulnerable Unbound. A single
client A/AAAA query can cause Unbound to overwrite the cached expired parent-side glue rrset and
essentially extend the ghost domain window by up to one cached TTL configured value ('cache-max-ttl'). In
configurations where 'harden-referral-path: yes' is used (non-default configuration), no client query is
required since Unbound implicitly performs that query. This is a variant of CVE-2026-40622 which only
addressed the NS query. (CVE-2026-42955)

- With NLnet Labs Unbound up to and including version 1.25.1, applications using libunbound and configured
with 'unwanted-reply-threshold', could eventually be abruptly terminated if the threshold is reached and
libunbound needs to call 'libworker_alloc_cleanup' since the function is absent from the function call
allow list. When an application using libunbound sets 'unwanted-reply-threshold' to any non-zero value and
the iterator queries an authoritative that replies with enough wrong-transaction-ID UDP datagrams to cross
the threshold, the 'libworker_alloc_cleanup' will eventually be called. Since the function is absent from
the function call allow list, this leads to a fatal exit of libunbound and eventual termination of the
embedding application.Unbound itself is not affected since its relevant function 'worker_alloc_cleanup' is
registed in the allow list and proceeds to perform the documented cache flush. (CVE-2026-44621)

- 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). (CVE-2026-44687)

- In NLnet Labs Unbound 1.7.0 up to and including 1.25.1, insufficient validation of the RRSIG.Labels field
combined with premature cache writes during RFC 8198 aggressive NSEC processing leads to cache poisoning
that permits a malicious actor controlling a single delegated zone to poison arbitrary sibling zones under
NSEC-signed parent domains. A malicious actor with one registered domain under an NSEC-signed TLD can
serve malicious insecure DNS responses for unrelated sibling domains (sharing the same parent zone).
Arbitrary delegations that do not exist under the parent domain and are covered by the parent's NSEC chain
can be brought into insecure existence by fraudulent wildcard DS records (less labels than expected,
unknown algorithm) from the malicious sibling domain. This allows the malicious actor to inject insecure
wildcard records for those delegations. (CVE-2026-44690)

Solution

Update the py3-unbound library and its related packages to version 1.25.2-r0 or later.

See Also

https://security.alpinelinux.org/vuln/CVE-2026-42955

https://security.alpinelinux.org/vuln/CVE-2026-44621

https://security.alpinelinux.org/vuln/CVE-2026-44687

https://security.alpinelinux.org/vuln/CVE-2026-44690

https://security.alpinelinux.org/vuln/CVE-2026-46582

https://security.alpinelinux.org/vuln/CVE-2026-50045

https://security.alpinelinux.org/vuln/CVE-2026-50046

https://security.alpinelinux.org/vuln/CVE-2026-50243

https://security.alpinelinux.org/vuln/CVE-2026-50248

https://security.alpinelinux.org/vuln/CVE-2026-50251

https://security.alpinelinux.org/vuln/CVE-2026-50252

https://security.alpinelinux.org/vuln/CVE-2026-52863

https://security.alpinelinux.org/vuln/CVE-2026-54478

https://security.alpinelinux.org/vuln/CVE-2026-55708

https://security.alpinelinux.org/vuln/CVE-2026-55717

https://security.alpinelinux.org/vuln/CVE-2026-55973

https://security.alpinelinux.org/vuln/CVE-2026-56416

https://security.alpinelinux.org/vuln/CVE-2026-56444

Plugin Details

Severity: High

ID: 445414

Version: Revision 1.2

Type: Local

Published: 7/29/2026

Updated: 7/29/2026

Supported Sensors: Agentless Assessment

Risk Information

VPR

Risk Factor: Medium

Score: 6.8

Percentile: 96.81

CVSS v2

Risk Factor: High

Base Score: 7.8

Temporal Score: 5.8

Vector: CVSS2#AV:A/AC:L/Au:N/C:N/I:C/A:C

CVSS Score Source: CVE-2026-50252

CVSS v3

Risk Factor: Critical

Base Score: 9.3

Temporal Score: 8.1

Vector: CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:H

Temporal Vector: CVSS:3.0/E:U/RL:O/RC:C

CVSS v4

Risk Factor: High

Base Score: 7.1

Threat Score: 5.7

Threat Vector: CVSS:4.0/E:P

Vector: CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:H

Vulnerability Information

Exploit Ease: No known exploits are available

Vulnerability Publication Date: 7/22/2026

Reference Information

CVE: CVE-2026-42955, CVE-2026-44621, CVE-2026-44687, CVE-2026-44690, CVE-2026-46582, CVE-2026-50045, CVE-2026-50046, CVE-2026-50243, CVE-2026-50248, CVE-2026-50251, CVE-2026-50252, CVE-2026-52863, CVE-2026-54478, CVE-2026-55708, CVE-2026-55717, CVE-2026-55973, CVE-2026-56416, CVE-2026-56444