Uncontrolled Search Path Element in hMailServer

Summary

CVECVE-2026-126607
StatePUBLISHED
AssignerGitLab
Source PriorityCVE Program / NVD first with legacy fallback
Published2026-11-11 09:17:11 UTC
Updated2026-11-11 09:17:11 UTC
DescriptionProgressive Robot hMailServer 6.2.3 through 6.3.7 on Windows, with a MySQL or MariaDB database, hands the bundled MariaDB Connector/C the folder of its authentication plugins (the plugin folder in the installation's Bin folder) as Latin-1 bytes, which the client reads in the system's ANSI code page when it builds a plugin's path and loads the plugin with LoadLibraryExA, which allows a local authenticated user to execute code as the hMailServer service's account (LocalSystem, or the service's virtual account for a new installation from 6.3.4) by creating the folder those bytes name in the code page and placing in it a DLL with a plugin's name, when the installation folder's path holds a character between U+0080 and U+00FF whose byte the code page reads as another character, and none above U+00FF, and the user can create that other folder (by default any authenticated user may create a folder directly under the root of the system drive). The server converted the path with the C runtime's wcstombs_s in the C locale, which writes each character up to U+00FF as the byte of the same value: on code page 1252 those bytes are the same letters, while on another code page, such as 1251, or on a UTF-8 code page, they name another folder. The client loads the plugin the database server names in its greeting, unless it is built in, and any plugin the server names in an authentication switch, and tries again at each connection while a load fails, so with a MySQL 8.0 or later server, whose greeting names caching_sha2_password by default, the DLL is loaded at the next connection the service makes, whatever plugin the database account uses; a DLL's entry point runs when it is loaded. A path holding any character above U+00FF was handed over as an empty string, whatever the code page, from which the client makes a plugin's name at the root of the current drive: for the service, whose current folder is System32, that is the root of the system drive, where by default only administrators can create a file, but the server's own database commands (hMailServer.exe --check-database, --upgrade-database and the others from 6.3.4, and the /Debug and /Test console modes from 6.2.3) run in the folder they are started from - the product tells administrators to run them from an elevated prompt in the Bin folder, and the setup of 6.3.4 and 6.3.5 ran two or three of them itself with the Bin folder as their working folder for a new installation with an external database - so a DLL that a local authenticated user placed under a plugin's name at the root of a drive other users may write, such as a FAT or exFAT volume, was loaded into the administrator's process at the command's first connection to a MySQL 8.0 or later server. 6.3.8 fixes both cases: it hands the folder in the code page's bytes or by its short (8.3) name, and where neither can be written, a folder under the Windows system folder that holds no plugin and that only administrators can create, or else refuses the connection before attempting it; it never hands the empty value or a folder the current drive completes. The configuration is not the default: the default installation folder, under Program Files, is ASCII. Linux builds set no plugin folder and are not affected.

Risk And Classification

Primary CVSS: v3.1 7.8 HIGH from [email protected]

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Problem Types: CWE-427 | CWE-427 CWE-427: Uncontrolled Search Path Element


VersionSourceTypeScoreSeverityVector
3.1[email protected]Secondary7.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
3.1CNACVSS7.8HIGHCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

CVSS v3.1 Breakdown

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Vendor Declared Affected Products

SourceVendorProductVersionPlatforms
CNA Progressive Robot Ltd HMailServer affected 6.2.3 6.3.7 semver Not specified

References

ReferenceSourceLinkTags
gitlab.com/hmailserver/hmailserver/-/releases/v6.3.8 [email protected] gitlab.com
gitlab.com/hmailserver/hmailserver/-/work_items/116 [email protected] gitlab.com
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

Vendor Comments And Credit

Discovery Credit

CNA: Found by the hMailServer project (Progressive Robot Ltd) (en)

Additional Advisory Data

Solutions

CNA: Upgrade to hMailServer 6.3.8, which on Windows always hands the bundled client its plugin folder in the bytes the client reads it in - the ANSI code page, or UTF-8 where that is the code page - or, where the code page lacks a character of the path, by the folder's short (8.3) name, which is the same folder; where neither can be written, it hands a folder under the Windows system folder that holds no plugin and that only administrators can create, so that a plugin found only in the installation's plugin folder is not loaded and the connection's error says why, and where even that folder cannot be written, it refuses the connection before attempting it, with error HM7537 in the log. It never hands Latin-1 bytes, the empty value or a folder the current drive or folder completes: that closes the service's case and the database commands' case alike. Before 6.3.8, install hMailServer in a folder whose path is ASCII alone, as the default folder under Program Files is, and start hMailServer.exe's database commands, and DBSetup when it finishes an installation, from a folder on the system drive. For a new installation of 6.3.4 or 6.3.5 with an external database, whose setup runs two or three of the commands in the Bin folder itself, only an installation folder whose path is ASCII avoids it. An installation whose path is ASCII is not affected; on a system whose code page for non-Unicode programs is 1252, the service is not affected unless the path holds a C1 control character (U+0080 to U+009F) whose byte code page 1252 reads as another character, but before 6.3.8 a path holding a character above U+00FF reaches a database command started from another drive on any code page. Setting MARIADB_PLUGIN_DIR in the service's environment does not help, since the client takes the option first and every affected version sets it.

© CVE.report 2026

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report