<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Poweradmin - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/poweradmin/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 24 Jul 2026 22:02:03 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/poweradmin/feed.xml" rel="self" type="application/rss+xml"/><item><title>Poweradmin OIDC `sub` Collation Bypass Leads to Account Takeover</title><link>https://feed.craftedsignal.io/briefs/2026-07-poweradmin-oidc-collation-bypass/</link><pubDate>Fri, 24 Jul 2026 22:02:03 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-poweradmin-oidc-collation-bypass/</guid><description>A collation vulnerability in Poweradmin's OIDC integration allows an unauthenticated attacker to take over victim accounts by exploiting the case and accent-insensitive MySQL collation (`utf8mb4_unicode_ci`) used for OIDC subject (`sub`) identifiers, causing the attacker's colliding `sub` to resolve to the victim's `user_id` during authentication.</description><content:encoded><![CDATA[<p>A high-severity vulnerability has been identified in Poweradmin, an open-source web-based management tool for PowerDNS. This flaw, tracked in GHSA-cmwh-g2h8-c222, allows an unauthenticated attacker to bypass OIDC identity collation, leading to account takeover. The issue stems from Poweradmin's use of a case- and accent-insensitive MySQL collation (<code>utf8mb4_unicode_ci</code>) for storing and matching OIDC subject identifiers (<code>oidc_subject</code>). An attacker can create an OIDC account with a subject that is a collation variant of a legitimate victim's subject (e.g., <code>victim-login</code> vs. <code>victím-login</code>). When the attacker attempts to authenticate, Poweradmin's database lookup, performed under the weak collation, incorrectly matches the attacker's subject to the victim's existing <code>user_id</code>, granting the attacker an authenticated session to the victim's Poweradmin account. The vulnerability affects Poweradmin versions 4.1.0 through 4.2.4 and 4.3.0 through 4.3.3, and it has been fixed in versions 4.2.5, 4.3.4, and 4.4.0.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>A legitimate victim links their OIDC account with Poweradmin; Poweradmin stores the victim's OIDC <code>sub</code> (e.g., <code>victim-login</code>) in the <code>oidc_user_links</code> table with a <code>utf8mb4_unicode_ci</code> collation.</li>
<li>An attacker creates an OIDC account at the same OIDC provider with a <code>sub</code> identifier that is a collation variant of the victim's <code>sub</code> (e.g., <code>victím-login</code>), exploiting the accent-insensitive nature of the collation.</li>
<li>The attacker initiates an OIDC login to Poweradmin by accessing <code>/oidc/login?provider=generic</code> and authenticates with their attacker OIDC credentials (<code>victím-login</code>).</li>
<li>Poweradmin receives the attacker's OIDC <code>sub</code> (<code>victím-login</code>) from the OIDC provider's userinfo endpoint after a successful authorization code flow.</li>
<li>Poweradmin queries its <code>oidc_user_links</code> database table to find an existing user linked to the received <code>oidc_subject</code> and <code>provider_id</code>.</li>
<li>Due to the <code>utf8mb4_unicode_ci</code> collation used for <code>oidc_subject</code>, the database query interprets the attacker's <code>sub</code> (<code>victím-login</code>) as equal to the victim's <code>sub</code> (<code>victim-login</code>).</li>
<li>The database returns the <code>user_id</code> associated with the victim's account, and Poweradmin establishes an authenticated session for the attacker under the victim's identity, leading to account takeover.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows an unauthenticated attacker, with control over an OIDC account that has a colliding subject identifier, to gain full access to a victim's Poweradmin account. This can result in unauthorized modification or deletion of DNS records, compromise of administrative settings, and complete control over the PowerDNS environment managed by Poweradmin. The attacker can achieve this without knowing or modifying the victim's password, leveraging only their own OIDC credentials and the database collation weakness. No specific victim counts or targeted sectors were provided, but any organization using affected Poweradmin versions with OIDC authentication is at risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch Poweradmin installations to versions 4.2.5, 4.3.4, or 4.4.0 immediately to address the OIDC <code>sub</code> collation bypass vulnerability.</li>
<li>As part of the upgrade process, execute the provided SQL update script located in the <code>sql/</code> directory for your specific database to migrate the <code>oidc_user_links</code> table columns (<code>oidc_subject</code>, <code>provider_id</code>) to a binary or byte-preserving collation (e.g., <code>utf8mb4_bin</code>).</li>
<li>Review other identity and authorization lookups within your Poweradmin environment, specifically <code>findUserByEmail()</code>, <code>findPermissionTemplateByName()</code>, and <code>findGroupByName()</code>, to ensure they enforce byte-exact matching where security boundaries are involved.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>account-takeover</category><category>oidc</category><category>vulnerability</category><category>web-application</category><category>poweradmin</category></item><item><title>Poweradmin API Privilege Escalation via User-Update Endpoint</title><link>https://feed.craftedsignal.io/briefs/2026-07-poweradmin-api-privesc/</link><pubDate>Fri, 24 Jul 2026 21:58:37 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-poweradmin-api-privesc/</guid><description>A vulnerability in Poweradmin's REST API user-update endpoint allows a non-admin user with 'user_edit_others' permission to reset any user's password, including superusers, leading to full administrative account takeover by exploiting inconsistent authorization rules between the API and web UI.</description><content:encoded><![CDATA[<p>A high-severity privilege escalation vulnerability (GHSA-h4hf-v6w5-897x) has been identified in Poweradmin, an open-source web-based management tool for PowerDNS. This flaw allows a non-administrative user with the <code>user_edit_others</code> permission to reset the password of any other user, including superuser accounts, through the REST API. This is due to a discrepancy where the API's user-update endpoint (<code>PUT/PATCH /api/v2/users/{id}</code> and its V1 equivalent) fails to enforce authorization checks present in the web interface. Specifically, the API lacks safeguards that prevent non-superusers from editing superuser accounts and from changing passwords without the <code>user_passwd_edit_others</code> permission. This vulnerability affects Poweradmin versions 4.0.0 through 4.2.4 and 4.3.0 through 4.3.3. Exploitation requires the REST API to be enabled and the existence of a delegated &quot;user manager&quot; role, which is common in many deployments for helpdesk or team lead functions. The result is a complete administrative account takeover with a single API request, allowing full control over DNS infrastructure.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An administrator configures Poweradmin with the REST API enabled and establishes a delegated &quot;user manager&quot; role that grants <code>user_edit_others</code> permission (ID 57) but not <code>user_is_ueberuser</code> (ID 53) or <code>user_passwd_edit_others</code> (ID 58).</li>
<li>An attacker gains access to credentials for a user assigned to this &quot;user manager&quot; role.</li>
<li>The attacker generates an API key associated with their &quot;user manager&quot; account within Poweradmin.</li>
<li>The attacker crafts an HTTP PUT or PATCH request targeting the Poweradmin API's user-update endpoint, specifying the superuser's account ID (commonly <code>1</code>) in the URL (e.g., <code>PUT /api/v2/users/1</code>).</li>
<li>The request body includes a JSON payload containing a new password for the targeted superuser account, such as <code>{&quot;password&quot;:&quot;NewAdminPass1!&quot;}</code>.</li>
<li>Due to missing authorization logic in <code>lib/Domain/Service/ApiPermissionService.php::canEditUser()</code>, the API permits the non-superuser &quot;user manager&quot; to edit the superuser's account.</li>
<li>Subsequently, <code>lib/Domain/Service/UserManagementService.php::updateUser()</code> processes the request and writes the new password without verifying if the caller possesses <code>user_passwd_edit_others</code> permission.</li>
<li>The attacker then uses the newly set password to log into Poweradmin as the superuser, achieving full administrative control over the system and the underlying PowerDNS infrastructure.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This broken access control and privilege escalation issue (CWE-285, CWE-266) allows any authenticated non-admin user with <code>user_edit_others</code> permission to gain full administrative control over affected Poweradmin installations. This directly impacts any Poweradmin deployment where the REST API is enabled and a delegated user management role exists. Upon successful exploitation, the attacker can reset the superuser's password, log in as the administrator, and subsequently control all zones, records, users, and settings within Poweradmin. This effectively grants control over the organization's DNS data managed by PowerDNS, posing a critical risk to network infrastructure and potentially enabling further attacks like traffic redirection or denial of service. The severity is high due to the complete administrative takeover achievable with a single over-the-network request from a low-privilege authenticated position.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch Poweradmin installations immediately to a fixed version (Poweradmin 4.2.5 or 4.3.4, or later) to resolve the vulnerability described in GHSA-h4hf-v6w5-897x.</li>
<li>Deploy the <code>Detect Poweradmin API User Password Update Attempt for Superuser</code> Sigma rule to your SIEM to monitor for suspicious API calls targeting superuser accounts.</li>
<li>Review web server access logs for PUT or PATCH requests to <code>/api/v[12]/users/1</code> by non-superuser accounts, especially those utilizing API keys, to identify potential exploitation attempts.</li>
<li>If web server logs capture request bodies, examine them for JSON payloads containing a &quot;password&quot; field during API user update calls.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>privilege-escalation</category><category>web-application</category><category>api-vulnerability</category><category>account-takeover</category></item><item><title>Poweradmin: Broken Access Control (IDOR) Allows DNS Record Modification</title><link>https://feed.craftedsignal.io/briefs/2026-07-poweradmin-idor/</link><pubDate>Fri, 24 Jul 2026 21:57:43 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-poweradmin-idor/</guid><description>A low-privilege authenticated user in Poweradmin (a web front-end for PowerDNS) can exploit an Insecure Direct Object Reference (IDOR) vulnerability, allowing them to modify any DNS record on the server, even those they do not own, by manipulating POST request parameters to bypass access control checks and achieve DNS record repointing, disabling, or hijacking, leading to data integrity and availability issues, and potentially cross-tenant DNS takeover.</description><content:encoded><![CDATA[<p>A critical Insecure Direct Object Reference (IDOR) vulnerability (GHSA-rm67-g9ch-vxff) has been disclosed in Poweradmin, a web front-end for PowerDNS. Discovered by Saif Salah, this flaw allows any authenticated user possessing ownership of at least one DNS zone to arbitrarily modify, disable, or hijack DNS records in any other zone managed by the server, regardless of their legitimate access permissions. The vulnerability, present across Poweradmin versions prior to 3.9.11, 4.2.5, and 4.3.4, stems from a logical error in the <code>RecordManager::editRecord()</code> function. Access control checks are performed against an attacker-controlled zone ID, while the actual record modification is applied to a different, attacker-controlled record ID without verifying their association. This can lead to a full cross-tenant DNS takeover in shared or multi-tenant environments, posing significant risks to DNS integrity and service availability.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker, authenticated with a low-privilege &quot;Editor&quot; account, owns at least one DNS zone (e.g., <code>attacker.example</code>, zone ID 3).</li>
<li>The attacker identifies a target DNS record in a zone they do not own (e.g., <code>www.victim.example</code> with record ID 5, residing in <code>victim.example</code> with zone ID 2).</li>
<li>The attacker navigates to their own zone's edit page (e.g., <code>/zones/3/edit</code>) and initiates a record save action using an intercepting proxy.</li>
<li>Within the <code>POST /zones/3/edit</code> request body, the attacker manipulates parameters, specifically setting <code>record[5][rid]=5</code> (the victim's record ID) and <code>record[5][zid]=3</code> (the attacker's legitimate zone ID).</li>
<li>The Poweradmin application performs an ownership check using <code>record[5][zid]=3</code> from the request, which passes successfully due to the attacker's legitimate ownership of zone 3.</li>
<li>The application proceeds to modify the record using <code>record[5][rid]=5</code> without verifying that this record (ID 5) actually belongs to zone ID 3, thus overwriting the victim's DNS record (e.g., changing <code>www.victim.example</code> content to <code>6.6.6.6</code>).</li>
<li>The attacker successfully modifies a DNS record in a zone they are not authorized to access, demonstrating a bypass of intended access controls and potentially leading to DNS takeover.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this IDOR vulnerability allows an authenticated attacker to compromise the integrity and availability of DNS records across the entire Poweradmin installation. Attackers can repoint DNS records (e.g., <code>pwned.attacker.example</code>) to malicious infrastructure, corrupt existing records, or silently disable critical services by setting the <code>disabled</code> flag. In multi-tenant or shared hosting environments, this directly translates to cross-tenant DNS takeover, where one customer's records can be hijacked or disrupted by another using their <code>attacker.example</code> domain. This poses a significant threat to an organization's online presence, email delivery, and other services reliant on accurate DNS resolution, potentially leading to widespread service outages or redirection to phishing/malware sites. The attacker's own valid CSRF token and zone serial satisfy all form-level checks, making the malicious request appear legitimate to the application.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Patch Poweradmin installations immediately to versions 3.9.11, 4.2.5, or 4.3.4 or later to address the vulnerability described in the GHSA-rm67-g9ch-vxff advisory.</li>
<li>Implement server-side validation, as suggested in the GHSA-rm67-g9ch-vxff advisory, to ensure the record ID being modified truly belongs to the zone ID used for access checks.</li>
<li>Review web server access logs for anomalous <code>POST /zones/*/edit</code> requests, paying attention to the context around the <code>rid</code> and <code>zid</code> parameters in the request body for evidence of the IDOR identified in the attack chain.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>idor</category><category>dns-takeover</category><category>web-application</category><category>vulnerability</category><category>access-control</category></item></channel></rss>