{"id":"CVE-2026-114475","state":"PUBLISHED","title":"Missing Authorization in hMailServer","description":"Missing authorization in the REST role-management routes of Progressive Robot hMailServer 6.3.4 through 6.3.6 allows a remote authenticated user whose credential is confined to named domains to modify a custom role that accounts in other domains hold, and to create custom roles and delete any that no account holds. The routes that create, update and delete a custom role require the manage_roles permission, which only the serveradmin role holds; but a full-scope API key issued for named domains, and serveradmin assigned with a domain list, are serveradmin confined to those domains and hold manage_roles. The server's authorization gate did not refuse the three role routes to a confined credential and the route named no domain, so a credential issued to one tenant could raise or lower the permissions of a custom role assigned across other tenants - granting another domain's role every permission over its mailboxes and settings, or removing what it needs. A custom role may not hold administer_server, administer_domain or manage_roles, so the confined credential cannot make itself or another a server administrator by creating or rewriting a custom role.","publishedAt":"2026-10-21T15:12:20.842Z","updatedAt":"2026-10-29T20:56:12.860Z","severity":{"score":6.5,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","source":"GitLab"},"assigner":"GitLab","products":["Progressive Robot Ltd hMailServer"],"affected":[{"vendor":"Progressive Robot Ltd","product":"hMailServer","defaultStatus":"unaffected","versions":[{"version":"6.3.4","status":"affected","lessThanOrEqual":"6.3.6","versionType":"semver"}],"repo":"https://gitlab.com/hmailserver/hmailserver"}],"references":["https://gitlab.com/hmailserver/hmailserver/-/work_items/89","https://gitlab.com/hmailserver/hmailserver/-/releases/v6.3.7"],"weaknesses":["CWE-862"],"ingestedAt":"2026-10-29T23:14:04.755Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/114xxx/CVE-2026-114475.json","commit":"dc7676b3f67d6707e4927968546e7e0125ff7ec7","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-114475","state":"PUBLISHED","datePublished":"2026-10-21T15:12:20.842Z","dateUpdated":"2026-10-29T20:56:12.860Z","assignerShortName":"GitLab","assignerOrgId":"ceab7361-8a18-47b1-92ba-4d7d25f6715a","dateReserved":"2026-10-21T15:11:30.860Z"},"containers":{"cna":{"title":"Missing Authorization in hMailServer","descriptions":[{"lang":"en","value":"Missing authorization in the REST role-management routes of Progressive Robot hMailServer 6.3.4 through 6.3.6 allows a remote authenticated user whose credential is confined to named domains to modify a custom role that accounts in other domains hold, and to create custom roles and delete any that no account holds. The routes that create, update and delete a custom role require the manage_roles permission, which only the serveradmin role holds; but a full-scope API key issued for named domains, and serveradmin assigned with a domain list, are serveradmin confined to those domains and hold manage_roles. The server's authorization gate did not refuse the three role routes to a confined credential and the route named no domain, so a credential issued to one tenant could raise or lower the permissions of a custom role assigned across other tenants - granting another domain's role every permission over its mailboxes and settings, or removing what it needs. A custom role may not hold administer_server, administer_domain or manage_roles, so the confined credential cannot make itself or another a server administrator by creating or rewriting a custom role."}],"affected":[{"vendor":"Progressive Robot Ltd","product":"hMailServer","defaultStatus":"unaffected","versions":[{"version":"6.3.4","status":"affected","lessThanOrEqual":"6.3.6","versionType":"semver"}],"repo":"https://gitlab.com/hmailserver/hmailserver"}],"references":[{"url":"https://gitlab.com/hmailserver/hmailserver/-/work_items/89"},{"url":"https://gitlab.com/hmailserver/hmailserver/-/releases/v6.3.7"}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"HIGH","availabilityImpact":"NONE","baseScore":6.5,"baseSeverity":"MEDIUM"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-862","lang":"en","description":"CWE-862: Missing Authorization","type":"CWE"}]}],"providerMetadata":{"shortName":"GitLab","orgId":"ceab7361-8a18-47b1-92ba-4d7d25f6715a","dateUpdated":"2026-10-21T15:12:20.842Z"},"solutions":[{"lang":"en","value":"Upgrade to hMailServer 6.3.7, whose authorization gate refuses the create, update and delete role routes to a credential confined to named domains, while leaving the read of roles unchanged. Until then, on a multi-tenant server, do not issue a full-scope API key - or assign serveradmin - confined to named domains to a party not trusted with the whole server; keep the REST API off (RestApiPort=0, the default) where it is not needed; and review custom roles' permissions for changes a confined credential should not have made (after upgrading as well, since an upgrade does not undo a change already made)."}],"credits":[{"lang":"en","value":"Found in the hMailServer project's own security review (Progressive Robot Ltd)","type":"finder"}]},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-29T17:33:16.936622Z","id":"CVE-2026-114475","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-29T20:56:12.860Z"}}]}}}