Craft CMS 易受攻击,可通过 EntryTypesController 进行行为注入 RCE (Remote Code Execution)
平台
php
组件
craftcms/cms
已修复版本
5.9.11
GHSA-7jx7-3846-m7w7 的修复(commit 395c64f0b80b507be1c862a2ec942eaacb353748)仅修补了 `src/services/Fields.php`,但相同的漏洞模式存在于 `EntryTypesController::actionApplyOverrideSettings()` 中。 在 `src/controllers/EntryTypesController.php` 的 381-387 行: ```php $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); ``` 来自 `parse_str` 的 `$settings` 数组直接传递给 `Craft::configure()`,而没有经过 `Component::cleanseConfig()`。这允许通过 `as ` 或 `on ` 前缀的键注入 Yii2 行为/事件处理程序,与原始公告中的攻击向量相同。 您需要 Craft 控制面板管理员权限,并且必须启用 `allowAdminChanges` 才能使其工作。 攻击者可以使用与原始公告中相同的 gadget chain 来实现 RCE (Remote Code Execution)。 用户应更新到 Craft 5.9.11 以缓解此问题。
修复方法
暂无官方补丁。请查找临时解决方案或持续关注更新。