Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with CREATE USER privilege
-
DeliveryCreate colliding role/localhost principal
-
ExploitTrigger ACL cache key collision via empty IP
-
ExecutionExercise victim principal's database privileges
-
ImpactRead or modify unauthorized data
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Incorrectly specified target
|
| Exploitation Conditions | Exploitation requires the attacker to already hold the CREATE USER privilege (a high administrative privilege), and requires the coexistence of a role and a localhost user whose names collide into the same ACL database-privilege cache key because both resolve with an empty IP component. It is further gated on the original principal's database privileges having been cached - i.e. that legitimate account must have been used/connected - matching the AC:H complexity. Affected: MariaDB server from 10.6.1 up to (but not including) the fixed releases. Limiting factors: this is not reachable by unauthenticated or low-privilege users; it depends on non-trivial account-naming collisions and ACL-cache timing state, which sharply narrows realistic exploitation to privileged insiders or already-compromised admin accounts. |
| Impact | This is a moderate-severity privilege-confusion flaw (vendor CVSS 6.4) whose real-world risk is constrained primarily by its high privilege prerequisite rather than its CIA impact. The provided CVSS vector (CVSS:3.1/AV:N/AC:H/PR:H/UI:R) already signals a hard-to-reach bug: PR:H means the attacker must already hold the powerful CREATE USER privilege, and AC:H reflects the dependency on a specific name collision plus ACL-cache timing state. No EPSS score, CISA KEV listing, or public POC was supplied, so there is no public exploit identified at time of analysis and no evidence of active exploitation - the signals that would elevate priority are all absent. This is best characterized as a high-CVSS-impact-but-low-likelihood issue: the C:H/I:H/A:H impact is only realized against whatever database privileges the colliding principal holds, and reaching it requires an already-privileged insider or a compromised admin-capable account. Note a signal tension: the vector sets UI:R, yet the described mechanism (the victim principal's privileges merely needing to be cached) reads more like an environmental/timing precondition than classic user interaction - verify the UI metric with the vendor advisory. Overall: patch on normal cadence; it is not an emergency unless CREATE USER is broadly delegated in your environment. |
| Exploit ScenarioDerived | An insider or attacker who has already obtained the CREATE USER privilege on a MariaDB instance creates a new account (e.g. a user whose name collides with an existing role or localhost account) so that both map to the same ACL database-privilege cache key via the empty IP component. Once the legitimate principal's database privileges are cached, the attacker's colliding account exercises those privileges, reading or modifying data it was never granted. No public exploit code exists, and success depends on the high-complexity cache-state and naming conditions described. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Privilege confusion in MariaDB Server (10.6.1 through the 10.6.x, 10.11.x, 11.4.x, 11.8.x, 12.x and 13.0.x lines prior to the fixed releases) allows an authenticated attacker who already holds the CREATE USER privilege to create a principal whose name collides with an existing role or localhost user in the database-privilege ACL cache, then exercise database privileges belonging to that other account. Because roles and localhost users were both cached with an empty IP component, the cache key could resolve to the wrong principal once the legitimate account's database privileges had already been cached through normal use, matching the assessed CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:N (high confidentiality and integrity impact, no availability impact). Exploitation is not reachable by unauthenticated or low-privilege users and depends on non-trivial account-naming collisions plus ACL-cache timing state, so the practical risk is concentrated in privileged insiders or already-compromised administrative accounts. Vendor-released fixes are available in 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3 and 13.0.2; no public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to MariaDB Server 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3 or 13.0.2 depending on the maintenance line in use; the fix is the acl_get key-construction change in https://github.com/MariaDB/server/commit/67ea07dd3400004e4f7ae01bf977f4344bbe064b, and details are in the advisory https://github.com/MariaDB/server/security/advisories/GHSA-2m85-2x26-36rf and tracker https://jira.mariadb.org/browse/MDEV-40541. Where an immediate upgrade is not possible, the collision can be broken by keying off names instead of IPs: audit mysql.role_edges and mysql.user for role names that also exist as user@localhost accounts and rename one side using RENAME USER or DROP ROLE plus CREATE ROLE (the trade-off is that grants attached to the renamed principal must be re-issued, and application connection strings or role assignments referencing the old name must be updated). Running FLUSH PRIVILEGES clears the ACL database-privilege cache and forces re-resolution, which invalidates the poisoned entry but only until the cache is repopulated by normal traffic, so it is a short-term hygiene action rather than a fix. Because exploitation requires the privileged CREATE USER capability (per the PR:H vector), restrict that privilege to a minimal set of administrative accounts and remove it from application/service logins - the trade-off being that legitimate provisioning workflows must be routed through a controlled DBA process - and monitor for unexpected CREATE USER/CREATE ROLE statements or for grants appearing on principals whose names match existing roles, since such activity is the observable precursor to this privilege confusion. Note that the upstream regression test demonstrates the access being correctly denied after the patch, so validating post-upgrade behaviour with an equivalent role/user@localhost collision is a useful verification step.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 6 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MariaDB's ACL subsystem caches resolved privileges per principal in sql/sql_acl.cc (function acl_get), building a composite cache key from the client IP, the username and the database name. Roles are stored without a host/IP component, and a user defined as user@localhost was likewise resolved with an empty IP component, so both kinds of principal produced identical cache keys. An attacker with CREATE USER can therefore create a colliding principal (for example, a role named r1 alongside a user r1@localhost, with an account such as u1@127.0.0.1 being granted that role), and when the original principal's database-level privileges are cached, the lookup can return privileges assigned to the other account. This is an instance of CWE-706 (Use of Incorrectly-Resolved Name or Reference): the privilege machinery keys on an under-specified identity rather than a fully qualified principal, producing an authorization decision based on the wrong subject. The upstream fix (commit 67ea07dd3400004e4f7ae01bf977f4344bbe064b) changes the key construction from safe_str(ip) to safe_str(ip ? ip : host), so principals without an IP are distinguished by their host component and no longer collide. The accompanying MySQL-test regression case (mysql-test/main/grant5.test/.result, MDEV-40541) reproduces the collision and asserts that the access attempt is correctly denied with ER_TABLEACCESS_DENIED_ERROR after the fix. The affected product is captured by the CPE cpe:2.3:a:mariadb:server:*:*:*:*:*:*:*:* and tracked upstream as MDEV-40541.
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:H/PR:H/UI:R/S:U/C:H/I:H/A:H
CREATE USER is required (PR:H) and the cache-collision/timing precondition drives AC:H; the mechanism is an environmental state, not true user interaction, so UI:N; impact is read/modify of another principal's data (C:H/I:H), with no inherent DoS (A:N).
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, MariaDB's ACL cache could generate the same database-privilege cache key for role and localhost user names that matched because both used an empty IP component. An attacker with CREATE USER could create the colliding principal and, when the original principal's database privileges were cached, exercise privileges assigned to the other account. 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.
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-95922
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB