Missing authorization in the REST API user creation endpoint in Concrete CMS 9.2.0 through 9.5.3 allows arbitrary account creation
n Concrete CMS 9.2.0 through 9.5.3, the REST API user creation endpoint (POST /ccm/api/1.0/users, the add() method of concrete/src/Api/Controller/Users.php) did not perform a permission check before creating an account. As a result, any valid OAuth token carrying the users:add scope, including a client_credentials token with no associated user context, could create active, validated user accounts, bypassing email verification and administrator approval. Under default registration settings the created accounts could then edit page content, providing a path to stored cross-site scripting and further compromise. The Concrete CMS security team gave this vulnerability a CVSS v4.0 score of 2.1 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N. Thanks Winston Crooker for reporting.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-87031
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 8 Nov 2026, 03:37 UTC · Revision 1
Source evidence
Missing authorization in the REST API user creation endpoint in Concrete CMS 9.2.0 through 9.5.3 allows arbitrary account creation
core-osv · Original sourcePublished 16 Sept 2026, 16:40 UTC
n Concrete CMS 9.2.0 through 9.5.3, the REST API user creation endpoint (POST /ccm/api/1.0/users, the add() method of concrete/src/Api/Controller/Users.php) did not perform a permission check before creating an account. As a result, any valid OAuth token carrying the users:add scope, including a client_credentials token with no associated user context, could create active, validated user accounts, bypassing email verification and administrator approval. Under default registration settings the created accounts could then edit page content, providing a path to stored cross-site scripting and further compromise. The Concrete CMS security team gave this vulnerability a CVSS v4.0 score of 2.1 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N. Thanks Winston Crooker for reporting.
osv:CVE-2026-87031
Complete source record
{
"id": "9ff7c848a1d99b9ced7bffd75f283051b7f7840dc4e782996094bd3a12645212",
"url": "https://osv.dev/vulnerability/CVE-2026-87031",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Missing authorization in the REST API user creation endpoint in Concrete CMS 9.2.0 through 9.5.3 allows arbitrary account creation",
"summary": "n Concrete CMS 9.2.0 through 9.5.3, the REST API user creation endpoint (POST /ccm/api/1.0/users, the add() method of concrete/src/Api/Controller/Users.php) did not perform a permission check before creating an account. As a result, any valid OAuth token carrying the users:add scope, including a client_credentials token with no associated user context, could create active, validated user accounts, bypassing email verification and administrator approval. Under default registration settings the created accounts could then edit page content, providing a path to stored cross-site scripting and further compromise. The Concrete CMS security team gave this vulnerability a CVSS v4.0 score of 2.1 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N. Thanks Winston Crooker for reporting.",
"evidence": "osv:CVE-2026-87031",
"products": [],
"severity": "low",
"structured": {
"id": "CVE-2026-87031",
"aliases": [
"CVE-2026-87031"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/concretecms/concretecms",
"type": "GIT",
"events": [
{
"introduced": "6462c74b64a9d8919cc4a16f78880079dc6878ff"
},
{
"fixed": "9379c29cb26a1054208b37507b6869811aa75a32"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "9.2.0"
},
{
"last_affected": "9.5.3"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"cpe": "cpe:2.3:a:concretecms:concrete_cms:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "9.2.0"
},
{
"fixed": "9.5.3"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-87031.json"
}
}
],
"modified": "2026-10-28T02:30:53.186488048Z",
"provider": "osv",
"references": [
"https://documentation.concretecms.org/developers/introduction/version-history/954-release-notes",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/87xxx/CVE-2026-87031.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-87031",
"https://github.com/concretecms/concretecms"
],
"provider_metadata": {
"cwe_ids": [
"CWE-862"
],
"cna_assigner": "ConcreteCMS",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/87xxx/CVE-2026-87031.json"
}
},
"related_cves": [
{
"value": "CVE-2026-87031",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 522271,
"published_at": "2026-09-16T16:40:04.774+00:00"
}