Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlace crafted MySQL JSON table in datadir
-
ExploitAdministrator imports or accesses table
-
Executionmysql_json plugin parses invalid binary JSON
-
ImpactOut-of-bounds read triggers info disclosure or server crash
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a specially prepared MySQL-origin table (.frm/.MYI/.MYD files) containing invalid MySQL binary JSON to be processed by MariaDB's legacy mysql_json compatibility plugin - the plugin that handles tables imported from MySQL. The attacker must get this hostile table into the server's data directory (implying local filesystem access) or trick an administrator into importing it, and the malformed table must then be parsed/accessed (e.g., via ALTER TABLE ... FORCE). Limiting factors that reduce real-world risk: the mysql_json import path must actually be exercised (environments that never import MySQL tables are unaffected), user interaction is required to trigger table access (UI:R), and the attack vector is local (AV:L) rather than network-reachable - it is not exploitable by an unauthenticated remote attacker against a default MariaDB deployment. |
| Impact | This is a genuinely low-to-moderate priority issue despite being tracked as a server vulnerability. The vendor CVSS of 4.4 (AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:L) is consistent with the technical facts: a local attack vector requiring user interaction, yielding only partial confidentiality loss (OOB memory read) and partial availability loss (crash). No EPSS score, KEV listing, or SSVC decision data was provided in the input, so exploitation probability and automatability cannot be quantified from the signals given. There is no KEV entry and no POC flag set in the input - note, however, that the fix commit itself ships a reproducer test case (a crafted .MYD with byte-level corruption that triggers the error path), which demonstrates triggerability but is not a weaponized remote exploit. The PR:N in the CVSS vector is somewhat misleading given the description: real exploitation requires the attacker to get a crafted MySQL-origin table into the datadir and have it parsed by the legacy mysql_json compatibility plugin, which in practice implies either local filesystem access or social-engineering an administrator into importing a hostile table - verify this nuance against the vendor advisory GHSA-89ph-64cf-gqcc. Net: a real-but-narrow defect, not an urgent patch-tonight item unless the environment routinely imports untrusted MySQL tables. |
| Exploit ScenarioDerived | An attacker crafts (or corrupts the binary JSON bytes within) a MySQL-origin table - the .frm/.MYI/.MYD files - containing invalid MySQL binary JSON, then gets it placed in the server's datadir or imported by an administrator. When the mysql_json plugin parses the table (for example during ALTER TABLE ... FORCE or normal access), it reads out of bounds, leaking adjacent memory contents or crashing the server (DoS). A reproducer exists in the fix commit, but no standalone public exploit was identified in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Out-of-bounds reads in MariaDB Server's legacy mysql_json plugin can expose memory contents or crash the server when the plugin parses a specially crafted MySQL-origin table containing invalid MySQL binary JSON. The flaw affects MariaDB 10.6.1 and later branches up to (but excluding) 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3, and 13.0.2, and is only reachable when tables imported from MySQL must be read through the mysql_json compatibility path - for example during ALTER TABLE ... FORCE. The CVSS vector (AV:L, PR:N, UI:R, S:U, C:L, I:N, A:L, score 4.4) confirms this is a local, interaction-driven issue rather than a remotely exploitable one; no public exploit code and no confirmed active exploitation (CISA KEV) were identified at time of analysis, and vendor patches are available.
RemediationAI
Vendor-released patch: upgrade to MariaDB 10.6.28, 10.11.19, 11.4.13, 11.8.9, 12.3.3, or 13.0.2 respectively, which contain the bounds checks from commit 851f52470d470a96a66e0b7e5599f3b6c2e45907 that reject malformed MySQL JSON instead of reading past the buffer; full details are in GHSA-89ph-64cf-gqcc and MDEV-40678. If an immediate upgrade is not possible, the most effective compensating control is to avoid the trigger path entirely: simply do not have MySQL-origin tables created before the plugin's JSON validation was hardened, and do not run ALTER TABLE ... FORCE, OPTIMIZE, or repair operations that rebuild such tables, since the failing test case shows the rebuild is what forces the plugin to decode the corrupted payload - the trade-off is that affected tables remain unreadable or must be dumped from MySQL and restored into MariaDB in a supported format, which is a data-migration effort rather than a runtime mitigation. Restrict filesystem write access to the data directory (and the MySQL-to-MariaDB migration/import tooling) to trusted administrators only, since the attack requires planting or supplying a hostile .frm/.MYI/.MYD set; this narrows the threat to insider or already-compromised-host scenarios but does not eliminate the parsing flaw. Where the mysql_json plugin is not needed, disabling or not loading it removes the affected code from the server entirely, at the cost of losing compatibility with the legacy MySQL JSON tables it serves. Note that although the CVSS vector shows PR:N (no privileges required), the AV:L/UI:R components mean the issue is local and requires an administrator to import or access the crafted table - it is not exploitable by an unauthenticated remote attacker against a default deployment, so prioritization should reflect that limited exposure.
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
The vulnerability is a classic CWE-125 out-of-bounds read in MariaDB's out-of-tree type_mysql_json plugin (plugin/type_mysql_json/mysql_json.cc), which exists solely to let MariaDB read tables created by MySQL that store data in MySQL's binary JSON (JSONB) on-disk format. Because MariaDB's native JSON type is an alias for LONGTEXT, the plugin must decode MySQL's binary JSON layout when such a table is accessed, and it previously trusted the embedded type/offset/length fields without validating them against the actual buffer length. The upstream fix commit 851f52470d470a96a66e0b7e5599f3b6c2e45907 adds explicit bounds checks - 'value_start >= len' guards before parse_mysql_scalar() and parse_mysql_json_value(), and a 'key_start + key_len > bytes' check before appending an object key - so malformed offsets can no longer drive pointer arithmetic past the end of the buffer. The MDEV-40678 regression test demonstrates the trigger: a MySQL test table (.frm/.MYI/.MYD copied into the datadir) is byte-patched at offsets 0x3c5 and 0x3bc to corrupt the JSON payload, after which ALTER TABLE t1 FORCE fails with 'Error parsing MySQL JSON format' instead of reading out of bounds. The affected CPE (cpe:2.3:a:mariadb:server:*:*:*:*:*:*:*:*) is a broad wildcard for the MariaDB server product rather than a version-pinned entry, so version scoping must come from the advisory text and release tags.
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:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:L
Attack is local and depends on an admin importing/accessing a crafted MySQL table (AV:L, UI:R); OOB read yields partial disclosure (C:L) and crash (A:L) with no integrity impact.
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 mysql_json plugin assumed that imported MySQL tables contained valid MySQL binary JSON data. A specially prepared MySQL table containing invalid JSON data could cause out-of-bounds reads, information disclosure, or a server crash. 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
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
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-95918
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB