Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') in hMailServer
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Progressive Robot Ltd | hMailServer | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Progressive Robot | Hmailserver |
|
Vendor Solution
Upgrade to hMailServer 6.2.19 or later, which substitutes parameters in a single pass that never re-examines a value already written into the statement, and gives each parameter a name no other parameter's name and ordinal can form. There is no complete workaround for earlier versions on MySQL/MariaDB or PostgreSQL, since the recipient row is written for every queued message; keeping message indexing (MessageIndexing) and greylisting off, as they are by default, removes those two paths only. SQL Server and SQL Server Compact installations need no action for this issue.
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.411% probability within 30 days)
Key SSVC decision points have not yet been added.
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Progressive Robot
Progressive Robot hmailserver |
|
| Vendors & Products |
Progressive Robot
Progressive Robot hmailserver |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | SQL injection in the database layer of Progressive Robot hMailServer 6.0.0-B1 through 6.2.18, when the server uses MySQL/MariaDB or PostgreSQL, allows a remote attacker to alter SQL statements the server runs. On those two engines parameters are not bound: SQLStatement::GenerateFromCommand wrote each value into the statement's text as a quoted literal with a separate string replacement over the whole text per parameter, so a value holding the name of a parameter substituted after it had that name replaced, inside the value, by the later value with its own quotes, which ended the literal early and placed the later value in the statement as SQL. The row the server writes for each recipient of a queued message carries the recipient's address twice, so in the default configuration an authenticated user who may send mail reaches it by sending to an address of their choosing. A remote unauthenticated sender reaches the same statement through a message the server sends to the envelope sender, such as a delivery failure notice or an automatic reply, and, when greylisting or message indexing is enabled (both are off by default), through the greylisting record's envelope addresses or through the message metadata the server stores for IMAP SORT, which carries four header fields of a received message. An altered statement runs with the privileges of the server's database account; on PostgreSQL, whose client call runs every statement in the text it is given, further statements can follow it, while on MySQL/MariaDB, where one statement is run per call, the change is confined to the statement it is in. SQL Server and SQL Server Compact, where parameters are bound, are not affected. | |
| Title | Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') in hMailServer | |
| Weaknesses | CWE-89 | |
| References |
| |
| Metrics |
cvssV3_1
|