Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege User role
-
DeliveryAccess own authorized zone update endpoint
-
ExploitSubmit JSON body overriding 'domain' to victim zone
-
ExecutionServer triggers axfr-retrieve on unauthorized zone
-
ImpactInfer zone existence from differing responses
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Requires an authenticated PowerDNS-Admin User-role account that is already authorized for at least one zone (PR:L); the attacker POSTs to the /domain/<authorized-zone>/update endpoint and supplies a JSON body 'domain' field naming a different secondary (Slave) zone, which the pre-patch code acted on instead of the URL-path zone. Exploitation is limited to deployments running PowerDNS-Admin through 2026.08.1, targets only secondary zones that support axfr-retrieve, and yields only a zone-refresh trigger plus an existence oracle - not record read/write; it is gated by needing valid credentials and access to one zone, so it is a cross-user/cross-tenant boundary bypass rather than unauthenticated access. Updating to the patched build (PR #1942) is the vendor fix. |
| Impact | This is a genuine but moderate-severity (CVSS 5.3) authorization/IDOR flaw, not a high-CVSS-but-low-real-risk item nor a top-priority emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L) correctly frames it as network-reachable and low-complexity but requiring privileges (PR:L) - exploitation is limited to accounts that already hold a valid PowerDNS-Admin User-role login with access to at least one zone, so it is a privileged-insider / cross-tenant boundary bypass rather than remote-unauthenticated compromise. Impact is bounded: the attacker cannot read or overwrite other users' record data, only force axfr-retrieve (secondary-zone refresh) on zones they do not control and use response differences as a zone-existence oracle. The vendor vector marks VC:N, yet the description explicitly states attackers can 'infer zone existence from differing responses,' which is a limited confidentiality/information-disclosure effect - this is a mild internal inconsistency, and I assess a low confidentiality impact rather than none. No CISA KEV listing is present and no EPSS score was supplied, so widespread or automated exploitation is not indicated; the vuln.today decision label is 'this_month' (routine prioritized patching), consistent with a privilege-required, limited-impact bug. A public PoC reference (hackmd write-up) exists but is not verified as working exploit code. |
| Exploit ScenarioDerived | A low-privilege PowerDNS-Admin User who has been granted access to even a single secondary zone sends a POST to /domain/<their-authorized-zone>/update with a JSON body whose 'domain' field names a different user's secondary zone; the server authorizes the URL zone but then acts on the body-supplied zone, triggering an axfr-retrieve of the victim zone. By observing differing responses, the attacker determines whether arbitrary secondary zones exist. A public write-up describing the technique exists (hackmd), but it is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
PowerDNS-Admin through 2026.08.1 lets an authenticated User-role account that is already authorized for one zone trigger AXFR retrievals against other users' secondary (Slave) zones, and infer whether those zones exist, by supplying a different 'domain' value in the JSON body of a POST to /domain/<authorized-zone>/update. The route authorizes the zone in the URL path, but pre-patch code then replaced the zone name with the body-supplied value before issuing the backend call, so a cross-tenant key substitution slips past the per-zone access check. Severity is moderate (CVSS 5.3 / assessed CVSS:3.1 5.3, this-month priority), the flaw is not listed in CISA KEV, and no confirmed working exploit code is referenced, although a public technical writeup of the issue and its mechanism is available.
RemediationAI
The vendor fix is the code change merged in PR #1942 (https://github.com/PowerDNS-Admin/PowerDNS-Admin/pull/1942), which stops the handler from honoring a body-supplied 'domain' value and returns 403 when the body zone differs from the authorized URL zone; upstream fix available (PR/commit), but a released patched tag/version number is not independently confirmed from the supplied data, so operators should track the PowerDNS-Admin repository and the issue at https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/1940 to identify the first build containing the change before upgrading. If upgrading cannot be done immediately, the practical exposure reduction is to review which accounts hold the User role with any zone or account-level authorization, since the flaw requires valid credentials plus access to at least one zone, and to avoid granting zone access that is not required while the instance remains on 2026.08.1; note that this does not remove the flaw, which is a cross-tenant boundary bypass, and that the endpoint remains CSRF-protected and login-gated in either case. Deployments that do not manage PowerDNS secondary (Slave) zones have no exploitable target for the axfr-retrieve action, but the underlying body-override pattern should still be treated as requiring the upstream fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PowerDNS-Admin is a Flask web front end that manages PowerDNS zones and records; the affected code lives in the record/zone update path (powerdnsadmin/routes/domain.py, record_update) and the domain model (powerdnsadmin/models/domain.py). The route performs its authorization check against the zone name taken from the URL path, but the handler read the JSON payload via request.json and reassigned domain_name = jdata['domain'], so the attacker-controlled body key - not the authorized path segment - determined which zone was operated on. This is CWE-639 (Authorization Bypass Through User-Controlled Key), a classic IDOR pattern in which the object identifier used for the permission decision and the object identifier used for the action diverge. The action dispatched downstream is a PUT to the PowerDNS API path /zones/<zone>/axfr-retrieve, which only applies to secondary/Slave zones, so impact is limited to queuing a zone refresh plus an existence oracle from differing responses; no record data is read or written. The upstream fix in PR #1942 parses the body with request.get_json(), rejects non-object payloads with 400, aborts with 403 when a body 'domain' differs from the URL zone, and drops the body-supplied zone override; it also encodeURIComponent-encodes the zone name in the zone editor JavaScript and adds unit tests (tests/unit/test_zone_update_authorization.py) covering body-override rejection, URL-zone authorization, non-object payloads and CSRF enforcement.
Know when Powerdns Admin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Authenticated low-privilege user over the network (PR:L, AV:N, AC:L); limited integrity from forcing axfr-retrieve on others' zones (I:L) and limited confidentiality from the zone-existence oracle (C:L); no availability impact, scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
PowerDNS-Admin through 2026.08.1 contains an authorization bypass vulnerability that allows authenticated User-role accounts to refresh secondary zones they cannot access by supplying a different 'domain' field in the JSON body. Attackers authorized for any one zone can force axfr-retrieve transfers of other users' secondary zones and infer zone existence from differing responses.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
EUVD-2026-114074
GHSA-7x9g-4g72-fhmf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB