CVE-2026-25498
Craft has a potential authenticated Remote Code Execution via malicious attached Behavior
Craft is a platform for creating digital experiences. In versions 4.0.0-RC1 through 4.16.17 and 5.0.0-RC1 through 5.8.21, a Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in CVE-2025-68455, affecting different endpoints through a separate code path. This vulnerability is fixed in 5.8.22.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- High
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.6
Craft has a potential authenticated Remote Code Execution via malicious attached Behavior
Craft is a platform for creating digital experiences. In versions 4.0.0-RC1 through 4.16.17 and 5.0.0-RC1 through 5.8.21, a Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in CVE-2025-68455, affecting different endpoints through a separate code path. This vulnerability is fixed in 5.8.22.
- Record
CVE-2026-25498- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-470
- Updated
- 2026-11-02
EUVDEUVD-2026-6844
8.6
Craft is a platform for creating digital experiences. In versions 4.0.0-RC1 through 4.16.17 and 5.0.0-RC1 through 5.8.21, a Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in CVE-2025-68455, affecting different endpoints through a separate code path. This vulnerability is fixed in 5.8.22.
- Record
EUVD-2026-6844- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7jx7-3846-m7w7
8.6
Craft CMS Vulnerable to potential authenticated Remote Code Execution via malicious attached Behavior
Relationship to Previously Patched Vulnerability
This vulnerability is in addition to the RCE vulnerability patched in GHSA-255j-qw47-wjh5. That advisory addressed a similar RCE vulnerability that affected two specific routes:
/index.php?p=admin%2Factions%2Ffields%2Fapply-layout-element-settings/index.php?p=admin%2Factions%2Ffields%2Frender-card-preview
This one addresses some additional endpoints that were not covered in the https://github.com/craftcms/cms/security/advisories/GHSA-255j-qw47-wjh5.
The patched vulnerability used a malicious AttributeTypecastBehavior with a wildcard event listener ("on *": "self::beforeSave") and __construct() syntax to trigger RCE via the typecastBeforeSave callback. The fix was implemented in commits:
This vulnerability follows the same attack pattern (behavior injection via "as <behavior>" syntax) but affects a different code path (assembleLayoutFromPost() in Fields.php) that was not patched in those commits. The attack vector uses typecastAfterValidate instead of typecastBeforeSave and does not require the wildcard event listener syntax, demonstrating that multiple entry points exist for this type of vulnerability.
Executive Summary
A Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in GHSA-255j-qw47-wjh5, affecting different endpoints through a separate code path.
Vulnerability Details
Attack Prerequisites
- Authentication: Admin-level access required
- Network Access: Access to admin panel (
/admin)
Location
- File:
src/services/Fields.php - Function:
assembleLayoutFromPost()(lines 1125-1143) - Root Cause: Missing
cleanseConfig()call on user-suppliedfieldLayoutPOST parameter
Vulnerable Code Path
// src/services/Fields.php:1125-1133
public function assembleLayoutFromPost(?string $namespace = null): FieldLayout
{
$paramPrefix = $namespace ? rtrim($namespace, '.') . '.' : '';
$request = Craft::$app->getRequest();
$config = JsonHelper::decode($request->getBodyParam("{$paramPrefix}fieldLayout"));
// ... additional config values added ...
$layout = $this->createLayout($config); // <-- No cleanseConfig() call!
// ...
}
// src/services/Fields.php:1089-1093
public function createLayout(array $config): FieldLayout
{
$config['class'] = FieldLayout::class;
return Craft::createObject($config); // <-- Untrusted data passed directly
}
Attack Chain
The exploitation leverages Yii2's object configuration system and behavior attachment mechanism:
- Behavior Injection: Attacker includes
'as rce'key in thefieldLayoutJSON POST parameter - Object Creation:
Craft::createObject()processes the config through Yii2'sBaseYii::configure() - Behavior Attachment: Yii2's
Component::__set()detects the'as 'prefix and attaches the behavior - RCE Trigger: When
validate()is called on the model,EVENT_AFTER_VALIDATEfires - Command Execution:
AttributeTypecastBehaviorcalls the configured typecast function (ConsoleProcessus::execute) with theuidattribute value as the command
RCE Gadget Chain
FieldLayout POST…
- Record
GHSA-7jx7-3846-m7w7- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-470
- Updated
- 2026-11-02
NVD
8.6
Craft is a platform for creating digital experiences. In versions 4.0.0-RC1 through 4.16.17 and 5.0.0-RC1 through 5.8.21, a Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in CVE-2025-68455, affecting different endpoints through a separate code path. This vulnerability is fixed in 5.8.22.
- Record
CVE-2026-25498- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.2 High
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-470
- Updated
- 2026-11-02
OSV
8.6
Craft has a potential authenticated Remote Code Execution via malicious attached Behavior
Craft is a platform for creating digital experiences. In versions 4.0.0-RC1 through 4.16.17 and 5.0.0-RC1 through 5.8.21, a Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in CVE-2025-68455, affecting different endpoints through a separate code path. This vulnerability is fixed in 5.8.22.
- Record
CVE-2026-25498- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-470
- Updated
- 2026-11-02
OSVGHSA-7jx7-3846-m7w7
8.6
Craft CMS Vulnerable to potential authenticated Remote Code Execution via malicious attached Behavior
Relationship to Previously Patched Vulnerability
This vulnerability is in addition to the RCE vulnerability patched in GHSA-255j-qw47-wjh5. That advisory addressed a similar RCE vulnerability that affected two specific routes:
/index.php?p=admin%2Factions%2Ffields%2Fapply-layout-element-settings/index.php?p=admin%2Factions%2Ffields%2Frender-card-preview
This one addresses some additional endpoints that were not covered in the https://github.com/craftcms/cms/security/advisories/GHSA-255j-qw47-wjh5.
The patched vulnerability used a malicious AttributeTypecastBehavior with a wildcard event listener ("on *": "self::beforeSave") and __construct() syntax to trigger RCE via the typecastBeforeSave callback. The fix was implemented in commits:
This vulnerability follows the same attack pattern (behavior injection via "as <behavior>" syntax) but affects a different code path (assembleLayoutFromPost() in Fields.php) that was not patched in those commits. The attack vector uses typecastAfterValidate instead of typecastBeforeSave and does not require the wildcard event listener syntax, demonstrating that multiple entry points exist for this type of vulnerability.
Executive Summary
A Remote Code Execution (RCE) vulnerability exists in Craft CMS where the assembleLayoutFromPost() function in src/services/Fields.php fails to sanitize user-supplied configuration data before passing it to Craft::createObject(). This allows authenticated administrators to inject malicious Yii2 behavior configurations that execute arbitrary system commands on the server. This vulnerability represents an unpatched variant of the behavior injection vulnerability addressed in GHSA-255j-qw47-wjh5, affecting different endpoints through a separate code path.
Vulnerability Details
Attack Prerequisites
- Authentication: Admin-level access required
- Network Access: Access to admin panel (
/admin)
Location
- File:
src/services/Fields.php - Function:
assembleLayoutFromPost()(lines 1125-1143) - Root Cause: Missing
cleanseConfig()call on user-suppliedfieldLayoutPOST parameter
Vulnerable Code Path
// src/services/Fields.php:1125-1133
public function assembleLayoutFromPost(?string $namespace = null): FieldLayout
{
$paramPrefix = $namespace ? rtrim($namespace, '.') . '.' : '';
$request = Craft::$app->getRequest();
$config = JsonHelper::decode($request->getBodyParam("{$paramPrefix}fieldLayout"));
// ... additional config values added ...
$layout = $this->createLayout($config); // <-- No cleanseConfig() call!
// ...
}
// src/services/Fields.php:1089-1093
public function createLayout(array $config): FieldLayout
{
$config['class'] = FieldLayout::class;
return Craft::createObject($config); // <-- Untrusted data passed directly
}
Attack Chain
The exploitation leverages Yii2's object configuration system and behavior attachment mechanism:
- Behavior Injection: Attacker includes
'as rce'key in thefieldLayoutJSON POST parameter - Object Creation:
Craft::createObject()processes the config through Yii2'sBaseYii::configure() - Behavior Attachment: Yii2's
Component::__set()detects the'as 'prefix and attaches the behavior - RCE Trigger: When
validate()is called on the model,EVENT_AFTER_VALIDATEfires - Command Execution:
AttributeTypecastBehaviorcalls the configured typecast function (ConsoleProcessus::execute) with theuidattribute value as the command
RCE Gadget Chain
FieldLayout POST…
- Record
GHSA-7jx7-3846-m7w7- CVSS 4.0
- 8.6 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-470
- Updated
- 2026-11-02
OSVCLSA-2026-1784682948 No score
TuxCare security update for craftcms/cms (14 CVEs)
TuxCare rebuilt craftcms/cms to address 14 CVEs. Fixed in 3.9.15-p7+tuxcare.
- Record
CLSA-2026-1784682948- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
craftcms/cmsPackagist |
5.0.0-RC1 to 5.8.21 | 5.8.22 |
craftcms/cmsPackagist |
4.0.0-RC1 to 4.16.17 | 4.16.18 |
craftcms/cmsTuxCare:Packagist From an advisory covering 12 CVEs |
3.9.15 up to 3.9.15-p7+tuxcare, plus listed versions 3.9.15-p1+tuxcare3.9.15-p2+tuxcare3.9.15-p3+tuxcare3.9.15-p4+tuxcare3.9.15-p5+tuxcare3.9.15-p6+tuxcare |
3.9.15-p7+tuxcare |
craftcms/cmsPackagist |
5.0.0-RC1 up to 5.8.22, plus listed versions 5.0.05.0.15.0.25.0.35.0.4 Show 45 moreShow less5.0.55.0.65.1.05.1.15.1.105.1.25.1.35.1.45.1.55.1.65.1.75.1.85.1.95.2.05.2.0-beta.15.2.0-beta.25.2.0-beta.35.2.0-beta.45.2.0-beta.55.2.0-beta.65.2.15.2.105.2.25.2.35.2.45.2.4.15.2.55.2.65.2.75.2.85.2.95.3.05.3.0-beta.15.3.0-beta.25.3.0.15.3.0.25.3.0.35.3.15.3.25.3.35.3.45.3.55.3.65.4.05.4.0.1 |
5.8.22 |
craftcms/cmsPackagist |
4.0.0-RC1 up to 4.16.18, plus listed versions 4.0.04.0.0-RC24.0.0-RC34.0.0.14.0.1 Show 45 moreShow less4.0.24.0.34.0.44.0.54.0.5.14.0.5.24.0.64.1.04.1.0.14.1.0.24.1.14.1.24.1.34.1.44.1.4.14.10.04.10.0-beta.14.10.0-beta.24.10.14.10.24.10.34.10.44.10.54.10.64.10.74.10.84.11.04.11.0.14.11.0.24.11.14.11.24.11.34.11.44.11.54.12.04.12.14.12.24.12.34.12.44.12.4.14.12.54.12.64.12.6.14.12.74.12.8 |
4.16.18 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-25498 is a high vulnerability (CVSS 8.6) in Craftcms Cms, published February 9, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.10%, the 65th percentile. Fixed in craftcms/cms 5.8.22.
References
github.com/craftcms/cms/security/advisories/GHSA-7jx7-3846-m7w7
github.com/craftcms/cms/commit/395c64f0b80b507be1c862a2ec942eaacb353748
github.com/craftcms/cms/releases/tag/5.8.22
github.com/craftcms/cms/releases/tag/4.16.18
nvd.nist.gov/vuln/detail/CVE-2026-25498
github.com/advisories/GHSA-7jx7-3846-m7w7
github.com/CVEProject/cvelistV5/tree/main/cves/2026/25xxx/CVE-2026-25498.json
github.com/craftcms/cms
Left out here: 268 versions and the rest of 2 source descriptions. The JSON record has them.