CVE-2026-46633

Twig: PHP code injection via `{% use %}` template name

Published Jul 14, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
Twig is a template language for PHP. Starting in 1.15.1 and prior to 3.26.0, Compiler::string() does not escape single quotes when a template name from a {% use %} tag is placed inside a PHP single-quoted string literal, allowing a crafted template name to terminate the string and inject arbitrary PHP expressions into the compiled cache file. This issue is fixed in version 3.26.0.

Analysis

AI-generated

Technical impact

Twig, the popular PHP template engine, contains a flaw in its Compiler::string() method. From version 1.15.1 through all releases prior to 3.26.0, this method fails to escape single quotes when a template name supplied by a {% use %} tag is embedded inside a PHP single‑quoted string literal. An attacker who can control that template name can terminate the string and inject arbitrary PHP expressions into the compiled cache file. The resulting code‑injection vulnerability, classified as CWE‑94, permits an attacker to execute arbitrary PHP code with the privileges of the web server or PHP process.

Affected Systems

Twig template engine, developed by twigphp:Twig, is affected. All versions preceding 3.26.0 are vulnerable, including Twig 3.x releases. The vulnerability is fixed in Twig 3.26.0 and later releases. Applications that embed Twig and allow user‑controlled template names via {% use %} are directly impacted.

Risk and Exploitability

Security assessment of this issue yields a CVSS score of 8.7 and an EPSS probability of less than 1 %, indicating that while the flaw is severe, actual exploitation is currently rare. The vulnerability is not listed in CISA's KEV catalog. Exploitation requires an attacker to supply a malicious template name to the {% use %} tag, which typically implies that the attacker can influence template rendering or upload a template. The attack surface is therefore limited to applications that expose dynamic template names or allow arbitrary user input to be interpreted as a template name. Once an attacker succeeds, they can execute arbitrary PHP code with the permissions of the web server or PHP process, posing a critical threat to application integrity.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Twig to version 3.26.0 or later, which includes a fix for the compiler string escaping issue.
  • Clear or delete existing compiled cache files so that the updated Twig code runs without legacy compromised cache entries.
  • Restrict the use of dynamic template names in {% use %} tags by implementing input validation or a whitelist of allowed template identifiers.

Generated by OpenCVE AI on November 4, 2026 at 14:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DSA Debian DSA DSA-6311-1 php-twig security update
Debian DSA Debian DSA DSA-6320-1 php-twig security update
Github GHSA Github GHSA GHSA-7p85-w9px-jpjp Twig: PHP code injection via `{% use %}` template name
History
Type Values Removed Values Added
Description Twig is a template language for PHP. Prior to 3.26.0, Compiler::string() does not escape single quotes when a template name from a {% use %} tag is placed inside a PHP single-quoted string literal, allowing a crafted template name to terminate the string and inject arbitrary PHP expressions into the compiled cache file. This issue is fixed in version 3.26.0. Twig is a template language for PHP. Starting in 1.15.1 and prior to 3.26.0, Compiler::string() does not escape single quotes when a template name from a {% use %} tag is placed inside a PHP single-quoted string literal, allowing a crafted template name to terminate the string and inject arbitrary PHP expressions into the compiled cache file. This issue is fixed in version 3.26.0.
References
Type Values Removed Values Added
First Time appeared Twigphp
Twigphp twig
Vendors & Products Twigphp
Twigphp twig
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Twig is a template language for PHP. Prior to 3.26.0, Compiler::string() does not escape single quotes when a template name from a {% use %} tag is placed inside a PHP single-quoted string literal, allowing a crafted template name to terminate the string and inject arbitrary PHP expressions into the compiled cache file. This issue is fixed in version 3.26.0.
Title Twig: PHP code injection via `{% use %}` template name
Weaknesses CWE-94
References
Metrics cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}

Weaknesses
  • CWE-94

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

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Nov 4, 2026, 12:01 AM
Reserved
May 15, 2026, 8:11 PM
Status
Modified
Published
Jul 14, 2026, 10:16 PM
Modified
Nov 4, 2026, 12:17 AM