Skip to main content

MariaDB Server EUVDEUVD-2026-102924

| CVE-2026-97380 HIGH
Unverified Password Change (CWE-620)
2026-10-16 GitHub_M
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with low-privileged DB account
  2. Delivery
    Issue GRANT PROXY with empty IDENTIFIED clause naming target account
  3. Exploit
    Authorization check evaluates wrong grantor privileges
  4. Execution
    Set/overwrite target account password
  5. Impact
    Log 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Server 13.0.1, < 13.0.2
Server 11.8.1, < 11.8.9
Server 12.3.1, < 12.3.3
Server 10.11.1, < 10.11.19
Server 10.6.1, < 10.6.28
Server 11.4.1, < 11.4.13

Affected Packages

euvd server fix: 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3, 13.0.2

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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 17:17 EUVD
CVE Published
Oct 16, 2026 - 16:23 cve.org
HIGH 8.8

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

Prevalence
High
MariaDB is a default database across many Linux distributions and web stacks
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2016-6662 CRITICAL POC
9.8 Sep 20

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

CVE-2012-5613 MEDIUM POC
6.0 Dec 03

MySQL 5.5.19 and possibly other versions, and MariaDB 5.5.28a and possibly other versions, when configured to assign the

CVE-2014-0195 MEDIUM POC
6.8 Jun 05

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

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2012-2122 MEDIUM POC
5.1 Jun 26

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

CVE-2012-5612 MEDIUM POC
6.5 Dec 03

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

CVE-2012-5611 MEDIUM POC
6.5 Dec 03

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

CVE-2014-3470 MEDIUM
4.3 Jun 05

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

CVE-2016-6664 HIGH POC
7.0 Dec 13

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

CVE-2014-0221 MEDIUM
4.3 Jun 05

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.

CVE-2015-3152 MEDIUM POC
5.9 May 16

Oracle MySQL before 5.7.3, Oracle MySQL Connector/C (aka libmysqlclient) before 6.1.3, and MariaDB before 5.5.44 use the

CVE-2022-0778 HIGH POC
7.5 Mar 15

The BN_mod_sqrt() function, which computes a modular square root, contains a bug that can cause it to loop forever for n

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy