Skip to content

Incomplete fix for GHSA-7jx7-3846-m7w7: Behavior injection RCE via EntryTypesController

Moderate
angrybrad published GHSA-qx2q-q59v-wf3j Mar 16, 2026

Package

composer craftcms/cms (Composer)

Affected versions

>= 5.6.0, <= 5.9.10

Patched versions

5.9.11

Description

The fix for GHSA-7jx7-3846-m7w7 (commit 395c64f) only patched src/services/Fields.php, but the same vulnerable pattern exists in EntryTypesController::actionApplyOverrideSettings().

In src/controllers/EntryTypesController.php lines 381-387:

$settingsStr = $this->request->getBodyParam('settings');
parse_str($settingsStr, $postedSettings);
$settingsNamespace = $this->request->getRequiredBodyParam('settingsNamespace');
$settings = array_filter(ArrayHelper::getValue($postedSettings, $settingsNamespace, []));

if (!empty($settings)) {
    Craft::configure($entryType, $settings);

The $settings array from parse_str is passed directly to Craft::configure() without Component::cleanseConfig(). This allows injecting Yii2 behavior/event handlers via as or on prefixed keys, the same attack vector as the original advisory.

You need Craft control panel administrator permissions, and allowAdminChanges must be enabled for this to work.

An attacker can use the same gadget chain from the original advisory to achieve RCE.

Users should update to Craft 5.9.11 to mitigate the issue.

References

GHSA-7jx7-3846-m7w7

d37389d

Severity

Moderate

CVE ID

CVE-2026-32263

Weaknesses

Improper Control of Generation of Code ('Code Injection')

The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment. Learn more on MITRE.

Credits