{"id":"CVE-2026-55215","aliases":["BIT-mariadb-2026-55215","BIT-mariadb-min-2026-55215","BIT-mysql-client-2026-55215","EUVD-2026-67869","GHSA-cqhc-2h57-wpxf"],"status":"published","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00569,"percentile":0.47593,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-295","CWE-522"],"published":"2026-08-28T19:02:49Z","modified":"2026-11-11T02:49:03Z","fixes":[{"ecosystem":"npm","package":"mariadb","fixed_in":["3.2.4","3.3.3","3.4.6","3.5.3"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"mariadb","fixed_in":["3.2.4"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"mariadb-min","fixed_in":["3.2.4"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"mysql-client","fixed_in":["3.2.4"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"mariadb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.2.4"}]}]},{"source":"ghsa","ecosystem":"npm","package":"mariadb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.3.0"},{"fixed":"3.3.3"}]}]},{"source":"ghsa","ecosystem":"npm","package":"mariadb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.4.0"},{"fixed":"3.4.6"}]}]},{"source":"ghsa","ecosystem":"npm","package":"mariadb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.5.0"},{"fixed":"3.5.3"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"mariadb","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.2.4"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"mariadb-min","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.2.4"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"mysql-client","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.2.4"}]}]},{"source":"osv","ecosystem":"npm","package":"mariadb","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.2.4"}]}]},{"source":"osv","ecosystem":"npm","package":"mariadb","ranges":[{"type":"SEMVER","events":[{"introduced":"3.3.0"},{"fixed":"3.3.3"}]}]},{"source":"osv","ecosystem":"npm","package":"mariadb","ranges":[{"type":"SEMVER","events":[{"introduced":"3.4.0"},{"fixed":"3.4.6"}]}]},{"source":"osv","ecosystem":"npm","package":"mariadb","ranges":[{"type":"SEMVER","events":[{"introduced":"3.5.0"},{"fixed":"3.5.3"}]}]}],"products":[{"vendor":"mariadb-corporation","product":"mariadb-connector-nodejs"}],"references":[{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/security/advisories/GHSA-cqhc-2h57-wpxf","tags":["x_refsource_CONFIRM","web","advisory"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/commit/514576a5a1fab3ea8498613e259a0b7a764e7302","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/commit/c47d7275835c78c7eb8186cd23e9d57c045c128b","tags":["x_refsource_MISC","web","fix"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/commit/ecd36958e6e3bf0e0fa8389546f50c0ed6dbb2ac","tags":["x_refsource_MISC","web","fix"]},{"url":"https://hackerone.com/reports/3777370","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/releases/tag/3.3.3","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/releases/tag/3.4.6","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs/releases/tag/3.5.3","tags":["x_refsource_MISC","web"]},{"url":"https://jira.mariadb.org/browse/CONJS-349","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-cqhc-2h57-wpxf"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55215","tags":["web","advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55215.json","tags":["advisory"]},{"url":"https://github.com/mariadb-corporation/mariadb-connector-nodejs","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-55215","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-08-28T19:02:49.413Z","modified":"2026-09-01T01:56:18.689Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-295","CWE-522"],"updated_at":"2026-11-02T14:20:11.925815Z"}],"euvd":[{"id":"EUVD-2026-67869","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-08-28T19:02:49Z","modified":"2026-09-01T01:56:18Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T18:01:19.285273Z"}],"ghsa":[{"id":"GHSA-cqhc-2h57-wpxf","title":"MariaDB's connector leaks the cleartext password to an MitM despite `ssl: true`","description":"### Summary\nWhen SSL/TLS is enabled but no CA / server certificate is provided, the\nconnector verifies the server's identity using fingerprint validation. The\ncheck is effective,  the connection is ultimately rejected when it fails, \nbut it happens *after* the authentication exchange. As a result, the\ncredentials are sent before validation occurs, so an active man-in-the-middle\nwho presents their own certificate receives the password in the handshake\nbefore the connection is aborted.\n\n### Impact\nThe credentials are transmitted to the peer before the server's identity is\nvalidated. An on-path attacker (MitM) presenting any certificate can capture\nthe account password, even though the connection then fails the fingerprint\ncheck and is closed. The disclosed credentials can subsequently be used to\nauthenticate directly against the server.\n\n- Attacker requirement: active man-in-the-middle position on the network path\n- Affected configuration: SSL/TLS enabled without a CA / server certificate\n\n### Affected versions\n- \u003c 3.2.4\n- 3.3.0 – 3.3.2\n- 3.4.0 – 3.4.5\n- 3.5.0 – 3.5.2\n\n### Patches\nFixed in 3.2.4, 3.3.3, 3.4.6, and 3.5.3. Upgrade to one of these (or later)\non your branch.\n\n### Workarounds\nUntil you can upgrade, configure certificate verification explicitly, provide\nthe server/CA certificate and use a verifying SSL mode (e.g. VERIFY_CA /\nVERIFY_FULL). \n\nReported by haaahaaahiihiiii (no GitHub account).","status":"published","published":"2026-08-28T19:03:38Z","modified":"2026-08-28T19:03:39Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-295","CWE-522"],"updated_at":"2026-11-02T14:41:08.084849Z"}],"nvd":[{"id":"CVE-2026-55215","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-08-28T20:18:26.353Z","modified":"2026-09-08T21:08:37.32Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-295","CWE-522"],"updated_at":"2026-11-02T14:12:42.366888Z"}],"osv":[{"id":"CVE-2026-55215","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-08-28T19:02:49.413Z","modified":"2026-11-11T10:47:34.704158604Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-295","CWE-522"],"updated_at":"2026-11-11T03:21:28.618498Z"},{"id":"GHSA-cqhc-2h57-wpxf","title":"MariaDB's connector leaks the cleartext password to an MitM despite `ssl: true`","description":"### Summary\nWhen SSL/TLS is enabled but no CA / server certificate is provided, the\nconnector verifies the server's identity using fingerprint validation. The\ncheck is effective,  the connection is ultimately rejected when it fails, \nbut it happens *after* the authentication exchange. As a result, the\ncredentials are sent before validation occurs, so an active man-in-the-middle\nwho presents their own certificate receives the password in the handshake\nbefore the connection is aborted.\n\n### Impact\nThe credentials are transmitted to the peer before the server's identity is\nvalidated. An on-path attacker (MitM) presenting any certificate can capture\nthe account password, even though the connection then fails the fingerprint\ncheck and is closed. The disclosed credentials can subsequently be used to\nauthenticate directly against the server.\n\n- Attacker requirement: active man-in-the-middle position on the network path\n- Affected configuration: SSL/TLS enabled without a CA / server certificate\n\n### Affected versions\n- \u003c 3.2.4\n- 3.3.0 – 3.3.2\n- 3.4.0 – 3.4.5\n- 3.5.0 – 3.5.2\n\n### Patches\nFixed in 3.2.4, 3.3.3, 3.4.6, and 3.5.3. Upgrade to one of these (or later)\non your branch.\n\n### Workarounds\nUntil you can upgrade, configure certificate verification explicitly, provide\nthe server/CA certificate and use a verifying SSL mode (e.g. VERIFY_CA /\nVERIFY_FULL). \n\nReported by haaahaaahiihiiii (no GitHub account).","status":"published","published":"2026-08-28T19:03:38Z","modified":"2026-09-02T16:25:30.304591828Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-295","CWE-522"],"updated_at":"2026-11-02T15:46:45.28161Z"},{"id":"BIT-mariadb-2026-55215","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-09-02T14:46:35.269Z","modified":"2026-09-02T16:25:30.304591828Z","updated_at":"2026-11-02T15:28:32.645004Z"},{"id":"BIT-mariadb-min-2026-55215","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-09-02T14:46:44.188Z","modified":"2026-09-02T16:25:30.304591828Z","updated_at":"2026-11-02T15:28:32.645004Z"},{"id":"BIT-mysql-client-2026-55215","title":"MariaDB Connector/Node.js: Connector leaks the cleartext password to an MitM despite `ssl: true`","description":"MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB and MySQL databases. Prior to versions 3.3.3, 3.4.6, and 3.5.3, when ssl is enabled without a pinned CA or server certificate, MariaDB Connector/Node.js sends credentials before completing certificate fingerprint validation. In lib/cmd/handshake/auth/handshake.js, a server that selects mysql_clear_password as the initial authentication plugin can receive the password before the post-TLS identity check. In lib/cmd/handshake/authentication.js, an authentication switch can evaluate the previous plugin instead of the requested target plugin, allowing mysql_clear_password to send the credential first. An active man-in-the-middle can present a self-signed certificate, capture the database password, and use it to authenticate directly even though the connector later rejects the server and closes the connection. This issue is fixed in versions 3.3.3, 3.4.6, and 3.5.3.","status":"published","published":"2026-09-02T14:49:32.915Z","modified":"2026-09-02T16:25:30.304591828Z","updated_at":"2026-11-02T15:28:33.469426Z"}]}}
