CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-54588

CVE-2026-54588: Account Takeover via Host Header Injection in Poweradmin Authentication

Amit Schendel
Amit Schendel
Senior Security Researcher

Jul 28, 2026·7 min read·10 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can capture OAuth authorization codes or SAML assertions by poisoning the client-controlled HTTP Host header during authentication initialization, leading to complete account takeover of Poweradmin administrators.

Poweradmin is affected by a critical Host Header Injection vulnerability within its Single Sign-On (SSO) and logout authentication mechanisms. The application dynamically constructs external redirection and callback URLs using the client-controlled HTTP Host header. An unauthenticated attacker can exploit this behavior to poison OAuth and SAML callback parameters, redirecting authentication credentials directly to a malicious external server. This allows full administrative account takeover without credentials when a victim accesses a manipulated authentication link.

Vulnerability Overview

Poweradmin is a web-based administration tool designed to manage PowerDNS servers. The software allows DNS administrators to configure zones, manage records, and handle user authorization. To support enterprise environments, Poweradmin integrates with OpenID Connect (OIDC) and Security Assertion Markup Language (SAML) for Single Sign-On (SSO) operations. These integrations reside on the critical authentication perimeter, validating administrative sessions before granting write access to underlying DNS databases.\n\nPrior to versions 4.2.4 and 4.3.3, Poweradmin exposes an unsafe authentication interface. The software constructs callback endpoints, such as the OIDC redirect_uri and the SAML Assertion Consumer Service (ACS) URL, by parsing incoming request metadata on the fly. This processing relies on client-supplied headers rather than statically declared configuration values. The failure to validate incoming host metadata allows arbitrary remote clients to alter the internal state of the generated authentication URLs.\n\nThis vulnerability class is categorized under CWE-20 (Improper Input Validation) and CWE-601 (URL Redirection to Untrusted Site). By manipulating the HTTP Host header, an attacker changes the target location where the application expects identity assertions to be sent. When a legitimate administrative user attempts to log in using the poisoned flow, their session token is routed away from the legitimate infrastructure and toward an attacker-controlled endpoint. This bypasses authentication controls, exposing highly sensitive administrative privileges to unauthorized compromise.

Root Cause Analysis

The root cause of CVE-2026-54588 lies in the implementation of the PHP global server variable $_SERVER['HTTP_HOST'] within Poweradmin's SSO controller logic. When establishing connection parameters for third-party Identity Providers (IdPs), the application must supply an absolute URL representing its own callback path. To accomplish this, the application reads the system protocol via $_SERVER['HTTPS'] or HTTP_X_FORWARDED_PROTO and concatenates this with the host retrieved from the client request header.\n\nIn a standard HTTP transaction, the Host header is specified by the client browser. Because the application does not match the received Host value against a strict, predefined list of authorized domains, it treats the untrusted header as the canonical address of the server. This design choice assumes that the HTTP Host header will always reflect the true deployment domain, which is a faulty security assumption in multi-tenant or default-configured web servers.\n\nDuring OIDC or SAML initiation, the application calls helper functions to generate parameters like the 'redirect_uri'. These parameters are appended to the URL query string sent to the Identity Provider. Because the Host header is completely client-controlled, an attacker can substitute the standard domain with an arbitrary destination. The application consumes the malformed Host parameter verbatim, generating a poisoned callback configuration and passing it upstream to the IdP, which accepts the dynamic redirect target based on the initial request trust.

Code Analysis

To understand the vulnerable logic, examine the conceptual implementation of the dynamic callback builder within Poweradmin's authentication controllers prior to the patches:\n\nphp\n// Vulnerable Implementation\npublic function getSsoCallbackUrl(): string\n{\n // Dynamically evaluate connection protocol\n $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';\n if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {\n $scheme = $_SERVER['HTTP_X_FORWARDED_PROTO'];\n \n // Retrieve unvalidated Host header directly from client request\n $host = $_SERVER['HTTP_HOST'];\n\n // Construct absolute redirect path using contaminated host\n return $scheme . '://' . $host . '/auth/oidc/callback';\n}\n\n\nIn this structure, an incoming request containing Host: attacker-controlled.com results in getSsoCallbackUrl() returning https://attacker-controlled.com/auth/oidc/callback. The application then transmits this address to the OAuth Authorization Server as the official callback target.\n\nTo remediate this structural flaw, the patched versions introduce configuration validation. The code is modified to verify the host header or reference a predefined base URL configuration. The corrected pattern avoids referencing $_SERVER['HTTP_HOST'] entirely, utilizing a static configuration parameter instead:\n\nphp\n// Patched Implementation using configured base URL\npublic function getSsoCallbackUrl(): string\n{\n // Retrieve static base URL from protected settings file\n $baseUrl = $this->config->get('interface.base_url');\n \n if (!empty($baseUrl)) {\n return rtrim($baseUrl, '/') . '/auth/oidc/callback';\n }\n \n // Fallback: Validate Host header against strict whitelist if base URL is missing\n $allowedHosts = $this->config->get('security.allowed_hosts', []);\n $host = $_SERVER['HTTP_HOST'] ?? '';\n $cleanHost = preg_replace('/:\\d+$/', '', $host);\n \n if (!in_array($cleanHost, $allowedHosts, true)) {\n throw new SecurityException('Unauthorized Host header detected');\n }\n \n $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';\n return $scheme . '://' . $cleanHost . '/auth/oidc/callback';\n}\n\n\nBy enforcing fallback verification or utilizing a declared base URL parameter, the application ensures that callback operations remain restricted to authorized, enterprise-controlled environments.

Exploitation Methodology

An attack targeting CVE-2026-54588 requires zero privileges and relies on manipulating the initial authentication sequence. The exploitation path consists of three distinct phases: host header poisoning, victim redirection, and token harvest.\n\nmermaid\ngraph LR\n Attacker["Attacker Server"] -->|1. Poisoned Host Header Login Request| Poweradmin["Poweradmin"]\n Poweradmin -->|2. Poisoned redirect_uri Parameter| IdP["Identity Provider (IdP)"]\n IdP -->|3. Victim Browser Redirection with Code| Attacker\n\n\nIn the first phase, the attacker prepares an authentication initiation link. By routing an HTTP request to Poweradmin's SSO endpoint with the header Host: attacker-controlled.com, the attacker forces the application to record the malicious domain as the official callback endpoint. This request generates a valid authentication redirect URL pointing to the Identity Provider, containing the parameter redirect_uri=https://attacker-controlled.com/auth/oidc/callback.\n\nIn the second phase, the attacker delivers this generated link to an administrative user via a social engineering vector. When the administrator clicks the link, their browser is navigated to the legitimate Identity Provider (such as Okta, Keycloak, or Azure AD). The victim enters their valid credentials on the authentic identity portal, unaware that the session initialization parameter contains the injected redirect URI.\n\nIn the final phase, the Identity Provider processes the successful login. It issues a cryptographic authorization code or SAML assertion and sends the victim's browser to the destination defined in the redirect_uri parameter. Because the Identity Provider trusts the initial redirect parameter (or lacks strict whitelist enforcement), it transmits the victim's authorization code directly to https://attacker-controlled.com. The attacker intercepts this code from their web server logs, replays it against the legitimate Poweradmin installation, and achieves a complete administrative session bypass.

Impact Assessment

The impact of CVE-2026-54588 is classified as critical, presenting a severe risk to infrastructure integrity. Successful exploitation allows unauthenticated remote attackers to compromise any user account, including high-level administrators, without obtaining credentials. This results in complete loss of confidentiality, integrity, and availability within the Poweradmin interface.\n\nBecause Poweradmin functions as the primary control plane for PowerDNS, compromising an administrator session grants the attacker full control over DNS zones. An attacker can alter resource records, modify MX records to intercept corporate emails, change NS records to redirect entire subdomains, or manipulate A/AAAA records to point enterprise web traffic to malicious sites. These actions can be executed within seconds of establishing the hijacked session.\n\nAdditionally, control over DNS infrastructure facilitates secondary attacks. Attackers can obtain valid SSL/TLS certificates by completing automatic ACME DNS-01 challenges, allowing them to decrypt traffic or host authentic-looking phishing sites on legitimate subdomains. The vulnerability's CVSS v3.1 score is calculated at 9.6, reflecting the high impact on confidentiality and integrity, combined with a network-based attack vector requiring minimal user interaction.

Remediation and Defensive Engineering

Remediation of CVE-2026-54588 requires upgrading the affected Poweradmin deployments to safe releases. For the 4.2.x branch, organizations must apply patch version 4.2.4. For the 4.3.x branch, organizations must migrate to version 4.3.3. These releases contain modifications that restrict redirection endpoints to trusted, verified locations.\n\nIf immediate upgrading is not possible, administrators should configure infrastructure-level mitigations on reverse proxies or web servers. In Nginx, declare a default server block to drop any requests that do not match the expected server name explicitly. This technique neutralizes Host header injection before the request payload is parsed by the PHP FastCGI Process Manager (FPM):\n\nnginx\n# Nginx Host Validation Rule\nserver {\n listen 80 default_server;\n listen [::]:80 default_server;\n server_name _;\n return 444; # Drop request without response\n}\n\nserver {\n listen 80;\n server_name dns-admin.example.com;\n location / {\n proxy_pass http://php-fpm-upstream;\n proxy_set_header Host $host;\n }\n}\n\n\nIn Apache, force the use of static canonical names and deny access to requests carrying unrecognized Host values. Set UseCanonicalName On in the main configuration, and establish rewrite rules that intercept incoming traffic lacking the corporate hostname. Additionally, review the Identity Provider client configurations to ensure that redirect whitelists are restricted to exact matching URLs and do not utilize wildcard matches.

Technical Appendix

CVSS Score
9.6/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L

Affected Systems

Poweradmin authentication flow components

Affected Versions Detail

Product
Affected Versions
Fixed Version
Poweradmin
Poweradmin
< 4.2.44.2.4
Poweradmin
Poweradmin
>= 4.3.0, < 4.3.34.3.3
AttributeDetail
Vulnerability IDCVE-2026-54588
CWE IDCWE-20
Attack VectorNetwork
CVSS v3.1 Score9.6
Exploit MaturityPoC / Manual
ImpactAdministrative Account Takeover

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1566.002Spearphishing Link
Initial Access
CWE-20
Improper Input Validation

The product receives input that is expected to be validated, but the validation is missing or incomplete.

References & Sources

  • [1]Poweradmin Release v4.2.4
  • [2]Poweradmin Release v4.3.3
  • [3]GitHub Security Advisory GHSA-3735-5339-xfwx
  • [4]NVD CVE-2026-54588
  • [5]CVE.org CVE-2026-54588
  • [6]OSV Advisory Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•30 minutes ago•GHSA-PMWX-RM49-XV39
9.1

GHSA-PMWX-RM49-XV39: Path Traversal in ActiveRecord::Tenanted::Storage::DiskService

A directory traversal vulnerability exists in the `activerecord-tenanted` Ruby gem's local storage path resolution logic. Prior to version 0.7.0, the `path_for` method failed to sanitize input keys, allowing remote attackers to traverse directories and access arbitrary files on the host filesystem.

Alon Barad
Alon Barad
1 views•6 min read
•about 2 hours ago•CVE-2026-54712
5.3

CVE-2026-54712: Uncontrolled Resource Consumption in OpenTelemetry Javaagent RMI Context Propagation

An uncontrolled resource consumption vulnerability in the OpenTelemetry Javaagent RMI context propagation mechanism allows remote unauthenticated attackers to cause a Denial of Service (DoS) via heap memory exhaustion.

Alon Barad
Alon Barad
2 views•7 min read
•about 3 hours ago•CVE-2026-54704
6.5

CVE-2026-54704: Sensitive Data Exposure in OpenTelemetry Java Instrumentation SQL Sanitizer

A sensitive data exposure vulnerability (CWE-532) exists in OpenTelemetry Java Instrumentation prior to version 2.28.0. The JDBC auto-instrumentation component's SQL statement sanitizer contains lexer flaws that prevent the correct redaction of administrative passwords under specific conditions, such as when double-quotes represent identifiers or during multi-statement executions separated by semicolons.

Alon Barad
Alon Barad
3 views•5 min read
•about 4 hours ago•CVE-2026-54705
6.3

CVE-2026-54705: DOM-Based Cross-Site Scripting in MathLive LaTeX Rendering Engine

CVE-2026-54705 is a critical DOM-based Cross-Site Scripting (XSS) vulnerability affecting the MathLive library prior to version 0.110.0. The flaw stems from a lack of proper character escaping in the rendering path for LaTeX text-mode commands such as \text{} and \mbox{}, enabling unauthenticated attackers to execute arbitrary JavaScript in the victim's browser.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 5 hours ago•CVE-2026-54693
8.2

CVE-2026-54693: Authorization Bypass in ZITADEL Identity Management Platform

A critical authorization bypass vulnerability was identified in the ZITADEL identity management platform, tracked as CVE-2026-54693 (GHSA-jq8w-8q2f-ffm9). Due to incorrect privilege validation in self-service profile modification endpoints, standard authenticated users could obtain plaintext verification codes during email or phone number updates. This allows attackers to claim and verify arbitrary email addresses or phone numbers without controlling the underlying contact methods.

Alon Barad
Alon Barad
4 views•7 min read
•about 5 hours ago•CVE-2026-54735
10.0

CVE-2026-54735: Critical Server-Side Request Forgery (SSRF) in Prebid Server Bidder Adapters

CVE-2026-54735 is a critical Server-Side Request Forgery (SSRF) vulnerability in Prebid Server's bidder adapters, allowing unauthenticated remote attackers to route HTTP requests to arbitrary locations, including internal local host loopbacks and cloud provider metadata endpoints.

Alon Barad
Alon Barad
6 views•6 min read