CVE-2026-47732

Twig Sandbox: multiple `__toString()` policy bypasses via unguarded string coercion points

Published Jul 14, 2026 CVSS 4.0 · 7.1 High EPSS < 1% KEV · Not listed
Description
Twig is a template language for PHP. Prior to 3.26.0, several Twig language constructs trigger PHP string coercion on a Stringable operand without consulting SecurityPolicy::checkMethodAllowed(), allowing a sandboxed template author to invoke __toString() on objects reachable in the render context through conditional expressions, comparison operators, tests, template-loading tags, dynamic attribute names, spread arguments, the do tag, and the .. range operator. This issue is fixed in version 3.26.0.

Analysis

AI-generated

Technical impact

Twig is a template language for PHP. Before version 3.26.0, several language constructs in Twig trigger PHP string coercion on a Stringable operand without consulting SecurityPolicy::checkMethodAllowed(). This allows a sandboxed template author to invoke __toString() on objects reachable in the render context via conditional expressions, comparison operators, tests, template-loading tags, dynamic attribute names, spread arguments, the do tag, and the .. range operator. As a result, sandbox policy is bypassed, letting the attacker read or manipulate the underlying object data. The vulnerability is classified as CWE‑863.

Affected Systems

The vulnerability affects the Twig template engine for PHP (twigphp:Twig). All releases before 3.26.0 are susceptible, regardless of the specific minor or patch number. Individuals deploying older Twig versions in any environment that accepts user‑supplied templates must consider their risk. Updates are available from twigphp’s GitHub releases; version 3.26.0 and later contain the policy fix.

Risk and Exploitability

The CVSS base score is 7.1, indicating a moderate‑to‑high impact. The EPSS score is reported as < 1 %, suggesting that automated exploitation is currently unlikely, but the lack of KEV listing does not diminish the potential for targeted attacks. The likely attack vector is through the sandboxed template language itself: an attacker who can upload or influence templates can embed expressions that trigger string coercion, thereby invoking __toString() on a context object. Because the sandbox policy is bypassed, the attacker can read or manipulate object data. Given the moderate CVSS and low exploit probability, immediate remediation is advisable for any system that accepts templates from untrusted sources.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Twig to version 3.26.0 or later where the policy check has been added.
  • Ensure that only the patched release is present in the deployment environment and remove any older Twig packages.
  • If an upgrade is not immediately possible, employ a temporary restriction by limiting the objects available in the sandbox context to those with safe string representations or by removing the ability to perform string coercion within template expressions.

Generated by OpenCVE AI on July 31, 2026 at 04:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DSA Debian DSA DSA-6311-1 php-twig security update
Github GHSA Github GHSA GHSA-pr2w-4gpj-cpq4 Twig: Sandbox: multiple `__toString()` policy bypasses via unguarded string coercion points
History
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': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Twig is a template language for PHP. Prior to 3.26.0, several Twig language constructs trigger PHP string coercion on a Stringable operand without consulting SecurityPolicy::checkMethodAllowed(), allowing a sandboxed template author to invoke __toString() on objects reachable in the render context through conditional expressions, comparison operators, tests, template-loading tags, dynamic attribute names, spread arguments, the do tag, and the .. range operator. This issue is fixed in version 3.26.0.
Title Twig Sandbox: multiple `__toString()` policy bypasses via unguarded string coercion points
Weaknesses CWE-863
References
Metrics cvssV4_0

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

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 15, 2026, 1:26 PM
Reserved
May 19, 2026, 10:16 PM
Status
Analyzed
Published
Jul 14, 2026, 10:16 PM
Modified
Oct 24, 2026, 10:10 PM