CVE-2026-55856

CVE-2026-55856 is a medium-severity security vulnerability in org.mariadb.jdbc:mariadb-java-client (maven), affecting versions < 2.7.14. It is fixed in 2.7.14, 3.3.5, 3.4.3, 3.5.9.

Does this CVE actually affect you?

Kodem shows which CVEs are reachable and running in your applications, so you fix what's exploitable, not just what's listed.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Runtime intelligence, not another scanner.

Summary

MariaDB has cleartext password disclosure to a MITM on the initial-handshake

When a Java application connects with sslMode=verify-full (or verify-ca) and a password but does not pin a server certificate, Connector/J deliberately accepts an untrusted/self-signed certificate at the TLS layer (the "MITM-proof without a CA" feature) and proves the server's identity afterwards by binding the certificate fingerprint into the authentication exchange. That fingerprint enforcement is applied to the OK-packet and auth-switch paths but not to the initial-handshake path. An active man-in-the-middle that presents a self-signed certificate, claims to be MariaDB, and names the initial authentication plugin mysql_clear_password receives the victim's database password in cleartext, before any fingerprint/identity check runs. The connection is torn down a moment later, but the credential is already gone.

Details

For sslMode=verify-full/verify-ca with a password and no serverSslCert/trustStore, the connector falls back to an ephemeral trust manager (default fallbackToSystemTrustStore=true) that accepts any non-expired certificate at the TLS layer and records its fingerprint. Identity is then meant to be enforced via that fingerprint.

The enforcement guard is present on two of the three paths, the OK-packet fingerprint check and the auth-switch handler (where the clear-password plugin is only allowed when the fingerprint is already verified). It is absent on the initial-handshake send: HandshakeResponse.encode() builds the mysql_clear_password response after checking only that SSL is enabled, never consulting the recorded fingerprint, sslMode, or whether the plugin is MITM-proof. By that point the connector already knows the certificate was self-signed. The clear-password plugin does not declare itself MITM-proof (it inherits the safe default), which confirms it is meant to be refused on an unverified certificate; the initial-handshake path simply never consults that flag. The initial path also bypasses restrictedAuth.

Workarounds

If you cannot upgrade immediately, pin the server certificate (serverSslCert= the real CA / server cert). With a pinned certificate the self-signed certificate of a man-in-the-middle is rejected at the TLS layer before any password is transmitted.

Credit

Reported by haaahaaahiihiiii

Impact

An active man-in-the-middle steals the full cleartext database password of any Java application using Connector/J with sslMode=verify-full/verify-ca plus a password and no pinned certificate, the configuration documented as the easy, secure default. With the captured credentials the attacker can take over the database account and read or modify all data that account is authorized for. The victim takes no unusual action; the developer explicitly enabled TLS verification expecting exactly this protection.

CVE-2026-55856 has a CVSS score of 5.9 (Medium). The vector is network-reachable, no privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment. A fixed version is available (2.7.14, 3.3.5, 3.4.3, 3.5.9); upgrading removes the vulnerable code path.

Affected versions

org.mariadb.jdbc:mariadb-java-client (< 2.7.14) org.mariadb.jdbc:mariadb-java-client (>= 3.0.0, < 3.3.5) org.mariadb.jdbc:mariadb-java-client (>= 3.4.0, < 3.4.3) org.mariadb.jdbc:mariadb-java-client (>= 3.5.0, < 3.5.9)

Security releases

org.mariadb.jdbc:mariadb-java-client → 2.7.14 (maven) org.mariadb.jdbc:mariadb-java-client → 3.3.5 (maven) org.mariadb.jdbc:mariadb-java-client → 3.4.3 (maven) org.mariadb.jdbc:mariadb-java-client → 3.5.9 (maven)

Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.

Already deployed Kodem?

See it in your environmentNew to Kodem? Get a demo →

Remediation advice

Fixed in 2.7.14, 3.3.5, 3.4.3, and 3.5.9. Upgrade to the patched release on your branch (3.5.x → 3.5.9, 3.4.x → 3.4.3, 3.0/3.1/3.2/3.3.x → 3.3.5, 2.x → 2.7.14). The fix applies the same certFingerprint != null && !isMitMProof() guard to the initial-handshake path before writing the auth response, refusing to send a mysql_clear_password (or any non-MITM-proof) response on an as-yet-unverified certificate, matching the auth-switch path.

Frequently Asked Questions

  1. What is CVE-2026-55856? CVE-2026-55856 is a medium-severity security vulnerability in org.mariadb.jdbc:mariadb-java-client (maven), affecting versions < 2.7.14. It is fixed in 2.7.14, 3.3.5, 3.4.3, 3.5.9.
  2. How severe is CVE-2026-55856? CVE-2026-55856 has a CVSS score of 5.9 (Medium). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.
  3. Which versions of org.mariadb.jdbc:mariadb-java-client are affected by CVE-2026-55856? org.mariadb.jdbc:mariadb-java-client (maven) versions < 2.7.14 is affected.
  4. Is there a fix for CVE-2026-55856? Yes. CVE-2026-55856 is fixed in 2.7.14, 3.3.5, 3.4.3, 3.5.9. Upgrade to this version or later.
  5. Is CVE-2026-55856 exploitable, and should I be worried? Whether CVE-2026-55856 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
  6. What actually determines whether CVE-2026-55856 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.
  7. How do I fix CVE-2026-55856?
    • Upgrade org.mariadb.jdbc:mariadb-java-client to 2.7.14 or later
    • Upgrade org.mariadb.jdbc:mariadb-java-client to 3.3.5 or later
    • Upgrade org.mariadb.jdbc:mariadb-java-client to 3.4.3 or later
    • Upgrade org.mariadb.jdbc:mariadb-java-client to 3.5.9 or later

Other vulnerabilities in org.mariadb.jdbc:mariadb-java-client

Stop the waste.
Protect your environment with Kodem.