CVE-2026-46639
mediumpriority · track · 26EPSS 0.004 · 34 %ileEUUSEPSS · scored 2026-10-28
Twig is a template language for PHP. From 3.24.0 until 3.26.0, object-destructuring assignment compiles CoreExtension::getAttribute() with the sandbox argument hardcoded to false, disabling property and method policy checks and allowing an attacker with write access to a sandboxed Twig template to read public properties or invoke public getters on objects passed to the template engine. This issue is fixed in version 3.26.0.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 5–7.1
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (3)
Products and version ranges known to be affected.
advisories (1)
Vendor and ecosystem advisories describing this.
- GHSA-mm6w-gr99-p3jjTwig: Sandbox property and method bypass via object-destructuring assignment2026-05-21ghsa · osvUS
### Description The object-destructuring assignment syntax introduced in Twig 3.24.0 generates a call to `CoreExtension::getAttribute()` with the `$sandboxed` argument hardcoded to `false`, regardless of whether a `SandboxExtension` is active. This permanently disables the sandbox's property and method policy checks for every destructuring expression. `ObjectDestructuringSetBinary::compile()` emits: ```php CoreExtension::getAttribute($this->env, $this->source, ..., \Twig\Template::ANY_CALL, false, false, false, ...); // ^^^^^ // sandbox check never runs ``` Whereas `GetAttrExpression::compile()` correctly passes `$env->hasExtension(SandboxExtension::class)`. An attacker with write access to a sandboxed Twig template can read any public property or invoke any public getter on objects passed to the template engine, bypassing `SecurityPolicy` restrictions. The exploit requires only the `{% do %}` tag to be in `allowedTags`, which is a common configuration. ### Resolution The destructuring compiler now forwards the active sandbox flag to `getAttribute()` so property/method allowlists are enforced. ### Credits Twig would like to thank Anvil Secure in collaboration with Claude and Anthropic Research for reporting and fixing the issue.
also known as (3)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (6)
External citations — patches, advisories, analysis.
- https://github.com/twigphp/Twig/releases/tag/v3.26.0cnnvd
- https://github.com/twigphp/Twig/security/advisories/GHSA-mm6w-gr99-p3jjcnnvd
- https://github.com/twigphp/Twig/releases/tag/v3.26.0enisa_euvd
- https://github.com/twigphp/Twig/security/advisories/GHSA-mm6w-gr99-p3jjenisa_euvd
- https://github.com/twigphp/Twig/releases/tag/v3.26.0Release Notesnvd
- https://github.com/twigphp/Twig/security/advisories/GHSA-mm6w-gr99-p3jjVendor Advisorynvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan