Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-55857

CVE-2026-55857: MariaDB Connector/J Password Disclosure

CVE-2026-55857 is an information disclosure vulnerability in MariaDB Connector/J that exposes passwords over insecure connections during PAM authentication. This article covers technical details, affected versions, and mitigation.

Updated:

CVE-2026-55857 Overview

CVE-2026-55857 is a cleartext transmission vulnerability [CWE-319] in MariaDB Connector/J, the JDBC driver used by Java applications to connect to MariaDB and MySQL databases. Prior to versions 2.7.14, 3.3.5, 3.4.3, and 3.5.9, the driver's PAM dialog authentication handler fails to declare a secure-transport requirement. A hostile or man-in-the-middle server can issue an Authentication Switch Request for the dialog plugin over plain TCP. The driver responds by transmitting the user's password in cleartext when sslMode=DISABLE and restrictedAuth=null, which is the default configuration.

Critical Impact

An attacker positioned between a Java application and a MariaDB/MySQL server can coerce the JDBC driver into disclosing database account passwords in plaintext over unencrypted TCP connections.

Affected Products

  • MariaDB Connector/J versions prior to 2.7.14 (2.x branch)
  • MariaDB Connector/J versions prior to 3.3.5, 3.4.3, and 3.5.9 (3.x branch)
  • Java applications connecting to MariaDB or MySQL with sslMode=DISABLE and default restrictedAuth

Discovery Timeline

  • 2026-08-28 - CVE-2026-55857 published to NVD
  • 2026-08-31 - Last updated in NVD database

Technical Details for CVE-2026-55857

Vulnerability Analysis

The MariaDB Connector/J driver supports multiple authentication plugins. Plugins that transmit secrets in cleartext are supposed to be gated behind a secure transport check. The mysql_clear_password plugin correctly declares requireSsl() and refuses to run over plain TCP. However, the sibling handler SendPamAuthPacketFactory, registered under the plugin name dialog, inherits the default requireSsl() value of false. Older 2.x branches implement the same flaw in SendPamAuthPacket.

Because a MySQL/MariaDB server can request an authentication plugin switch mid-handshake, a rogue or intercepting server can send an Authentication Switch Request naming dialog. The client accepts the switch and returns the password without checking whether the underlying socket is TLS-protected. Properly verified TLS sessions and local Unix domain sockets are not exposed to this transport vector.

Root Cause

The AuthenticationPluginFactory interface exposed requireSsl() with a default return value of false. The PAM dialog plugin never overrode that default. The plugin dispatch logic in StandardClient only consulted this flag, so a plugin that failed to declare its requirement was executed over any transport.

Attack Vector

Exploitation requires a network position that allows the attacker to act as, or intercept and modify traffic to, the database server. The attacker sends an Authentication Switch Request selecting the dialog plugin over the plaintext TCP handshake, and the driver responds with the account password in the clear.

java
// Patch in src/main/java/org/mariadb/jdbc/plugin/authentication/standard/SendPamAuthPacket.java
// [CONJ-1320] PAM (dialog) authentication must require a secure connection
    return "dialog";
  }

+  @Override
+  public boolean requireSsl() {
+    // PAM ("dialog") sends the password to the server in clear text, exactly like
+    // mysql_clear_password. It must therefore only run over a secure channel (TLS, or a local
+    // unix socket - handled by the dispatcher).
+    return true;
+  }
+
  /**
   * Initialization.
   *

Source: MariaDB Connector/J commit a8599ab

java
// Patch in src/main/java/org/mariadb/jdbc/client/impl/StandardClient.java
// Dispatcher now also refuses cleartext plugins on non-TLS, non-unix-socket transports
           AuthSwitchPacket authSwitchPacket = AuthSwitchPacket.decode(buf);
           AuthenticationPluginFactory authPluginFactory =
               AuthenticationPluginLoader.get(authSwitchPacket.getPlugin(), conf);
-          if (authPluginFactory.requireSsl() && !context.hasClientCapability(SSL)) {
+          if (authPluginFactory.requireSecure()
+              && !context.hasClientCapability(SSL)
+              && !(socket instanceof UnixDomainSocket)) {
             throw context
                 .getExceptionFactory()
                 .create(
                     "Cannot use authentication plugin "
                         + authPluginFactory.type()
-                        + " if SSL is not enabled.",
+                        + " if SSL is not enabled (a clear-text password plugin requires TLS or a"
+                        + " local unix socket).",
                     "08000");
           }

Source: MariaDB Connector/J commit f4a727c

Detection Methods for CVE-2026-55857

Indicators of Compromise

  • Java applications using MariaDB Connector/J with JDBC URLs containing sslMode=DISABLE or no sslMode parameter
  • MySQL/MariaDB protocol handshakes containing an Authentication Switch Request to the dialog plugin over unencrypted TCP
  • Unexpected authentication plugin negotiations from database servers not configured for PAM authentication
  • Database credentials appearing in packet captures of client-server traffic

Detection Strategies

  • Inventory JDBC dependencies via build manifests (pom.xml, build.gradle) and flag mariadb-java-client versions below 2.7.14, 3.3.5, 3.4.3, or 3.5.9
  • Inspect application configuration and connection pool settings for sslMode=DISABLE or missing TLS parameters
  • Perform network-level monitoring for MySQL protocol frames containing plugin name dialog on non-TLS ports
  • Correlate outbound database connections against an allowlist of expected server endpoints to detect redirection to attacker infrastructure

Monitoring Recommendations

  • Log JDBC driver versions at application startup and forward them to a centralized log store for version-drift detection
  • Alert on MySQL/MariaDB connections that complete authentication without a TLS handshake preceding credential exchange
  • Monitor DNS and ARP anomalies on network segments that carry database traffic to detect man-in-the-middle positioning

How to Mitigate CVE-2026-55857

Immediate Actions Required

  • Upgrade MariaDB Connector/J to version 2.7.14, 3.3.5, 3.4.3, or 3.5.9 as appropriate for the deployed branch
  • Enforce sslMode=VERIFY_FULL in all JDBC connection strings so certificate validation prevents impersonation
  • Rotate database account passwords that may have traversed untrusted networks with a vulnerable driver
  • Restrict restrictedAuth in the connection configuration to the specific authentication plugins actually required by the deployment

Patch Information

MariaDB Corporation released fixed builds tagged MariaDB Connector/J 3.4.3 and MariaDB Connector/J 3.5.9, with equivalent fixes backported to 3.3.5 and 2.7.14. The fix declares requireSecure() (renamed from requireSsl() in the 3.x branches) for the PAM dialog plugin, and the dispatcher now treats a local Unix domain socket as an acceptable secure transport. See the MariaDB Security Advisory GHSA-qxvw-fvwx-5cp7 and tracking issue CONJ-1320.

Workarounds

  • Set sslMode=VERIFY_FULL on every JDBC URL and provision the server's CA certificate on all clients
  • Explicitly set restrictedAuth to exclude dialog where PAM authentication is not required
  • Route database traffic exclusively over local Unix domain sockets or mutually authenticated TLS tunnels until patching completes
bash
# Example hardened JDBC URL enforcing full TLS verification
jdbc:mariadb://db.example.internal:3306/appdb?\
sslMode=VERIFY_FULL&\
serverSslCert=/etc/ssl/certs/mariadb-ca.pem&\
restrictedAuth=mysql_native_password,caching_sha2_password

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.