CVE-2026-28695: Craft affected by authenticated RCE via Twig SSTI - create() function + Symfony Process gadget

Published Mar 3, 2026
·
Updated

Craft is a content management system (CMS). There is an authenticated admin RCE in Craft CMS 5.8.21 via Server-Side Template Injection using the create() Twig function combined with a Symfony Process gadget chain. The create() Twig function exposes Craft::createObject(), which allows instantiation of arbitrary PHP classes with constructor arguments. Combined with the bundled symfony/process dependency, this enables RCE. This bypasses the fix implemented for CVE-2025-57811 (patched in 5.8.7). This vulnerability is fixed in 5.9.0-beta.1 and 4.17.0-beta.1.

Other sources

There is an authenticated admin RCE in Craft CMS 5.8.21 via Server-Side Template Injection using the create() Twig function combined with a Symfony Process gadget chain.

This bypasses the fix implemented for CVE-2025-57811 (patched in 5.8.7).

Required Permissions

- Administrator permissions or access to System Messages utility - allowAdminChanges enabled in production (against our security recommendations) or access to System Messages utility

Vulnerability Details The create() Twig function exposes Craft::createObject(), which allows instantiation of arbitrary PHP classes with constructor arguments. Combined with the bundled symfony/process dependency, this enables RCE.

Attack Vector Admin panel → Settings → Entry Types → Title Format field

Proof of Concept Payload

{% set p = create("Symfony\\Component\\Process\\Process", [["id"]]) %}{{ p.mustRun.getOutput }}

Steps to Reproduce 1. Log in as admin 2. Navigate to Settings → Entry Types 3. Edit any entry type’s "Title Format" field 4. Insert the payload above 5. Create/edit an entry of that type 6. Command executes, output appears in entry title

Impact - Authenticated Remote Code Execution - Runs as web server user (root in default Docker setup) - Full server compromise

Root Cause Craft::createObject() allows the instantiation of any class, including Symfony\Component\Process\Process, which executes shell commands.

Suggested Fix

- Blocklist dangerous classes in createObject() when called from Twig - Or remove/restrict the create() Twig function - Or validate class names against an allowlist

Resources

https://github.com/craftcms/cms/commit/e31e50849ad71638e11ea55fbd1ed90ae8f8f6e0

GitHub

Affected Software

10 affected componentsFixes available
composer/craftcms/cms>=4.0.0-RC1<4.17.0-beta.1
4.17.0-beta.1
composer/craftcms/cms>=5.8.7<5.9.0-beta.1
5.9.0-beta.1
CraftCMS Craft CMS>4.0.0<4.17.0
CraftCMS Craft CMS>5.0.0<5.9.0
CraftCMS Craft CMS=4.0.0
CraftCMS Craft CMS=4.0.0-rc1
CraftCMS Craft CMS=4.0.0-rc2
CraftCMS Craft CMS=4.0.0-rc3
CraftCMS Craft CMS=5.0.0
CraftCMS Craft CMS=5.0.0-rc1

Event History

Mar 3, 2026
Advisory Published
via GitHub·08:30 PM
Data Sourced
via GitHub·08:30 PM
DescriptionWeaknessAffected Software
Mar 4, 2026
CVE Published
via MITRE·04:15 PM
Data Sourced
via MITRE·04:15 PM
DescriptionWeakness
Data Sourced
via NVD·05:16 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:16 PM
RemedyAffected Software
Dec 1, 58158
Event
via FIRST·02:36 PM
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-28695?

CVE-2026-28695 is considered a critical vulnerability due to its potential for authenticated remote code execution via Server-Side Template Injection.

2

How do I fix CVE-2026-28695?

To resolve CVE-2026-28695, you need to update Craft CMS to version 4.17.0-beta.1 or 5.9.0-beta.1.

3

Which versions of Craft CMS are affected by CVE-2026-28695?

CVE-2026-28695 affects Craft CMS versions from 4.0.0-RC1 up to but not including 4.17.0, and from 5.0.0 up to but not including 5.9.0.

4

What exploit methods exist for CVE-2026-28695?

CVE-2026-28695 can be exploited using authenticated remote code execution via the create() function in Twig combined with a Symfony Process gadget.

5

How can I determine if my Craft CMS installation is vulnerable to CVE-2026-28695?

You can determine vulnerability by checking if your Craft CMS version is within the affected ranges specified in the CVE report.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203