{"id":"CVE-2026-119280","aliases":["GHSA-4jq2-8v3c-97w8"],"title":"MariaDB Connector/J: XA recover() trusted server-supplied gtrid and bqual lengths","summary":"MariaDB Connector/J: XA recover() trusted server-supplied gtrid and bqual lengths","severity":"low","cvss":3.7,"cwe":["CWE-20","CWE-789"],"vendor":"mariadb","product":"org.mariadb.jdbc:mariadb-java-client","ecosystem":"maven","affected":["org.mariadb.jdbc:mariadb-java-client >= 3.0.0, < 3.3.7","org.mariadb.jdbc:mariadb-java-client >= 3.4.0, < 3.4.5","org.mariadb.jdbc:mariadb-java-client >= 3.5.0, < 3.5.11"],"patched":["org.mariadb.jdbc:mariadb-java-client 3.3.7","org.mariadb.jdbc:mariadb-java-client 3.4.5","org.mariadb.jdbc:mariadb-java-client 3.5.11"],"published":"2026-10-30","updated":"2026-10-30","sourceUpdated":"2026-10-30T23:00:03Z","source":"GHSA","sourceUrl":"https://github.com/advisories/GHSA-4jq2-8v3c-97w8","references":[{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/security/advisories/GHSA-4jq2-8v3c-97w8"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119280"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/commit/280efcfb4390055858fa2dd12b722d85a6a13ab8"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/commit/47aba5a23548b35191865a428cc674316b95ee47"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/commit/e9d767103bfd178ed57caa4cb97bbfbf7e54da6b"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.3.7"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.4.5"},{"url":"https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.5.11"},{"url":"https://github.com/advisories/GHSA-4jq2-8v3c-97w8"}],"tags":["ghsa","maven"],"epss":0.00306,"epssPercentile":0.23394,"ingestedAt":"2026-10-30T23:11:25.781Z","slug":"CVE-2026-119280","body":"## Overview\n\n## Summary\n\n`XAResource.recover()` in MariaDB Connector/J trusted the `gtrid_length` and\n`bqual_length` columns returned by `XA RECOVER` to allocate and split each Xid.\n\n## Details\n\n`MariaDbPoolConnection` and `MariaDbPoolPinnedConnection` built each `Xid` of\nthe recovery list by allocating `new byte[gtrid_length]` and\n`new byte[bqual_length]` and copying from the `data` column, without validating\nthe lengths against the XA specification bounds (`Xid.MAXGTRIDSIZE`,\n`Xid.MAXBQUALSIZE`) or the actual payload. Negative or oversized lengths, or\nlengths that do not fit the data, ended in large allocations or unchecked\nexceptions (`NegativeArraySizeException`, `ArrayIndexOutOfBoundsException`)\nduring recovery.\n\nThe fix validates the lengths before any allocation or copy and reports an\ninvalid row as an `XAException` (`XAER_RMFAIL`).\n\n## Impact\n\nAvailability only, and limited to applications running XA recovery: a malicious\nor compromised server, or a MitM, can crash the recovery or drive large\nallocations. Exploitation requires control of the server side of the connection.\n\n## Credit\n\nReported by fg0x0\n\n## Affected packages\n\n- `org.mariadb.jdbc:mariadb-java-client >= 3.0.0, < 3.3.7`\n- `org.mariadb.jdbc:mariadb-java-client >= 3.4.0, < 3.4.5`\n- `org.mariadb.jdbc:mariadb-java-client >= 3.5.0, < 3.5.11`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `org.mariadb.jdbc:mariadb-java-client 3.3.7`\n- `org.mariadb.jdbc:mariadb-java-client 3.4.5`\n- `org.mariadb.jdbc:mariadb-java-client 3.5.11`","depth":"sunlit","depthScore":20,"depthScoreParts":{"impact":20.4,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}