Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privileged DB account
-
DeliveryIssue GRANT PROXY with empty IDENTIFIED clause naming target account
-
ExploitAuthorization check evaluates wrong grantor privileges
-
ExecutionSet/overwrite target account password
-
ImpactLog in as privileged account for full database compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Password change verification
|
| Exploitation Conditions | Requires an authenticated attacker holding any low-privileged MariaDB account (PR:L) on a server running an affected version (10.6.1 through the versions just before 10.6.28/10.11.19/11.4.13/11.8.9/12.3.3/13.0.2). The specific trigger is a GRANT PROXY statement using an IDENTIFIED/IDENTIFIED VIA clause with an EMPTY password, which the server wrongly interprets as 'no authentication specified' and then evaluates against the incorrect grantor's privileges. The attacker must be able to name the target account they wish to hijack. LIMITING FACTORS: exploitation is impossible for fully unauthenticated users (a valid login is mandatory), the empty-IDENTIFIED-clause code path must be reached, and the impact depends on which account the attacker targets - hijacking a high-privilege account yields full compromise while targeting an equally low account yields little gain. No user interaction is required (UI:N). |
| Impact | This is a genuine high-priority issue, though its real-world urgency is tempered by the authentication requirement. The CVSS vector (AV:N/AC:L/PR:L/UI:N) describes a network-reachable, low-complexity flaw requiring only a low-privileged authenticated database account, with C:H/I:H/A:H reflecting that an attacker who resets a high-privileged account's password achieves full account takeover and thus total database compromise. The authorization-logic nature of the bug (GRANT PROXY with an empty IDENTIFIED clause checking the wrong grantor's privileges) makes exploitation deterministic rather than probabilistic once an attacker has any valid login and can name a target account. However, several escalation signals are MISSING from the provided data: no EPSS score, no CISA KEV listing, and no public POC were supplied, so exploitation status is 'no public exploit identified at time of analysis' - this is NOT evidence of active exploitation, only absence of that intelligence in the inputs. The CVSS C:H rating is slightly generous given the core defect is an integrity/authorization failure (CWE-620, unverified password change) rather than direct data disclosure; confidentiality impact is consequential (achieved only after account takeover), not primary. Net: a real priority for any multi-tenant or shared MariaDB deployment where untrusted users hold accounts, but the PR:L gate means it is not a mass-internet-exploitable unauthenticated bug. |
| Exploit ScenarioDerived | A low-privileged user with a legitimate account on a shared MariaDB server issues a GRANT PROXY statement naming a higher-privileged target account with an empty IDENTIFIED VIA '' clause; the server mistakenly treats this as no authentication specified and checks the wrong grantor's privileges, allowing the attacker to set the target account's password. The attacker then logs in as that privileged account and takes over the database. No public exploit was identified in the provided data, though the vendor's fix commit and regression test are published. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Authenticated low-privileged users on MariaDB Server can hijack any account they can name, because GRANT PROXY mis-evaluates grantor privileges when the statement carries an IDENTIFIED (VIA) clause with an empty password. Under those conditions the server treats the statement as though no authentication clause had been supplied, checks the wrong grantor's rights, and lets the attacker set the target account's password - so an ordinary login can be escalated to full control of a privileged account. All builds from 10.6.1 up to the fixed releases 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3 and 13.0.2 are affected; no public exploit identified at time of analysis, and no user interaction is required (CVSS 8.8, AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).
RemediationAI
Vendor-released patch: 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3 and 13.0.2 - upgrade to the release matching your branch (see the per-branch release tags and advisory GHSA-625w-4hgq-qwmr, tracking MDEV-40470); the upstream change is commit dbd60d0ad8daa2d01050346aa50b7b102490e456, which alters sql/sql_yacc.yy and sql/structs.h, so backporting that single change is possible for frozen deployments but must be recompiled and tested carefully. If you cannot patch immediately, the exploitable surface is the GRANT PROXY statement itself: audit the PROXY privilege and revoke PROXY grants on user accounts wherever they are not operationally required (query mysql.global_priv/mysql.user for proxy entries), noting that doing so disables any legitimate proxy-authentication setups such as connection-pool or replication proxy users, which must then be reworked to direct authentication. Because the trigger is an IDENTIFIED clause with an empty password, review any automation or application code that issues GRANT PROXY with IDENTIFIED VIA and remove the empty-password form; additionally, because successful exploitation silently rewrites a target account's credentials, enable the audit log or periodic checksumming of mysql.global_priv and compare SHOW CREATE USER output against a known-good baseline to detect unauthorized password changes, and restrict which low-privileged accounts can connect to the database at all, since exploitation requires only a valid login. No vendor-released workaround short of upgrading is documented in the advisory, so privilege reduction plus credential-change monitoring are compensating controls with the trade-offs noted above.
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
The root cause is in MariaDB's lexer/parser handling of user specifications for GRANT PROXY. GRANT PROXY ... TO user IDENTIFIED VIA ... is meant to let an administrator attach alternate authentication (e.g. PAM, unix_socket) to a proxied account, and it must verify the grantor holds the PROXY privilege on the named account before rewriting that account's authentication data. In affected versions, the parser helper user_maybe_role unconditionally allocated a USER_AUTH object even when the IDENTIFIED clause was present but carried an empty password, while LEX_USER::has_auth() in sql/structs.h returned true only if the plugin, auth string, or pwtext was non-empty (return auth && (auth->plugin.length || auth->auth_str.length || auth->pwtext.length)). The result was that has_auth() reported false for the empty-IDENTIFIED case, so the code path behaved as if no authentication clause existed and applied the wrong grantor privilege check - the classic CWE-620 (Unverified Password Change) pattern of mutating another principal's credentials without validating the actor's authority to do so. The commit evidence shows the fix removes the redundant USER_AUTH allocation in sql/sql_yacc.yy and reduces has_auth() to simply return auth, so an explicitly supplied (even empty) IDENTIFIED clause is no longer conflated with an absent one; the accompanying test case (MDEV-40470) demonstrates that a low-privileged user issuing grant proxy on u1@localhost to u2@localhost identified via '' must now fail with ER_DBACCESS_DENIED_ERROR instead of silently succeeding. The affected technology stack is the MariaDB server's privilege/ACL layer (mysql.global_priv, mysql.user) and its yacc-based SQL parser, exposed over the normal network listener, per CPE cpe:2.3:a:mariadb:server:*:*:*:*:*:*:*:*.
Know when MariaDB 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable SQL statement, low complexity, requires a low-privileged login (PR:L); resetting a privileged account's password yields full account takeover, so C/I/A all High.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
MariaDB server is a community developed fork of MySQL server. From 10.6.1 until 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3, and 13.0.2, the GRANT PROXY statement treats an IDENTIFIED clause with an empty password as though authentication were not specified, causing it to check the wrong grantor privileges. A low-privileged attacker who can name another account can exploit this authorization error to set that account's password. This issue is fixed in versions 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3, and 13.0.2.
Articles & Coverage 1
Technical POC Analysis
Bug class: incorrect authorization in a privilege check (CWE-863), producing an unverified password change (CWE-620).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
MariaDB Server builds 10.6.1 and later contain a privilege-escalation flaw that lets any authenticated low-privileged user reset the password of any account they can name, converting an ordinary application or reporting login into full administrative control of the database. Because a single compromised low-privilege credential is enough to seize the accounts holding customer data, backups and replication keys, leadership should treat this as a high-priority risk to data confidentiality and integrity. No public exploit identified at time of analysis, which leaves a narrow window to remediate before exploitation tooling appears.
No vendor-released patch was flagged in the advisory feed at time of analysis; the vendor advisory references fixed releases 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3 and 13.0.2 - confirm these with the vendor and upgrade. Interim mitigations: revoke GRANT PROXY from all non-essential accounts, remove empty-password IDENTIFIED VIA clauses, restrict which accounts low-privileged users may reference in GRANT statements, and monitor authentication tables for unauthorized password or proxy changes.
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Oracle MySQL through 5.5.52, 5.6.x through 5.6.33, and 5.7.x through 5.7.15; MariaDB before 5.5.51, 10.0.x before 10.0.2
MySQL 5.5.19 and possibly other versions, and MariaDB 5.5.28a and possibly other versions, when configured to assign the
The dtls1_reassemble_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
sql/password.c in Oracle MySQL 5.1.x before 5.1.63, 5.5.x before 5.5.24, and 5.6.x before 5.6.6, and MariaDB 5.1.x befor
Heap-based buffer overflow in Oracle MySQL 5.5.19 and other versions through 5.5.28, and MariaDB 5.5.28a and possibly ot
Stack-based buffer overflow in the acl_get function in Oracle MySQL 5.5.19 and other versions through 5.5.28, and 5.1.53
The ssl3_send_client_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before
mysqld_safe in Oracle MySQL through 5.5.51, 5.6.x through 5.6.32, and 5.7.x through 5.7.14; MariaDB; Percona Server befo
The dtls1_get_message_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.
Oracle MySQL before 5.7.3, Oracle MySQL Connector/C (aka libmysqlclient) before 6.1.3, and MariaDB before 5.5.44 use the
The BN_mod_sqrt() function, which computes a modular square root, contains a bug that can cause it to loop forever for n
EUVD-2026-102924
NVD
CVE.org
GitHub
Exploit-DB