Craft is a content management system (CMS). In versions 4.5.0-RC1 through 4.16.18 and 5.0.0-RC1 through 5.8.22, a Time-of-Check-Time-of-Use (TOCTOU) race condition exists in Craft CMS’s token validation service for tokens that explicitly set a limited usage. The getTokenRoute() method reads a token’s usage count, checks if it’s within limits, then updates the database in separate non-atomic operations. By sending concurrent requests, an attacker can use a single-use impersonation token multiple times before the database update completes. To make this work, an attacker needs to obtain a valid user account impersonation URL with a non-expired token via some other means and exploit a race condition while bypassing any rate-limiting rules in place. For this to be a privilege escalation, the impersonation URL must include a token for a user account with more permissions than the current user. Versions 4.16.19 and 5.8.23 patch the issue.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-367"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27128.json"
}{
"extracted_events": [
{
"cpe": "cpe:2.3:a:craftcms:craft_cms:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "4.16.19"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:craftcms:craft_cms:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "5.8.23"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:craftcms:craft_cms:4.5.0:-:*:*:*:*:*:*",
"range": [
{
"introduced": "4.5.0-NA"
},
{
"last_affected": "4.5.0-NA"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:craftcms:craft_cms:5.0.0:-:*:*:*:*:*:*",
"range": [
{
"introduced": "5.0.0-NA"
},
{
"last_affected": "5.0.0-NA"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:craftcms:craft_cms:5.0.0:rc1:*:*:*:*:*:*",
"range": [
{
"introduced": "5.0.0-rc1"
},
{
"last_affected": "5.0.0-rc1"
}
],
"source": "CPE_STRING"
},
{
"range": [
{
"fixed": "3e4afe18279951c024c64896aa2b93cda6d95fdf"
}
],
"source": "REFERENCES_COMMIT"
}
]
}