PT-2026-42692 · Debian+2 · Php-Twig+1
Publicado
2026-05-21
·
Atualizado
2026-06-13
·
CVE-2026-46640
CVSS v4.0
8.7
Alta
| Vetor | AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
Nome do Software Vulnerável e Versões Afetadas
Twig versões anteriores a 3.15.0
Description
A sintaxe de atributo dinâmico
obj.(expr) permite que o atributo seja uma expressão arbitrária. Quando o receptor é self (ou qualquer alias {% import %}) e a expressão entre parênteses é uma literal de string, o DotExpressionParser desvia para o caminho de chamada de macro e concatena a string controlada pelo invasor em um nome MacroReferenceExpression sem validação de identificador. Subsequentemente, o MacroReferenceExpression::compile() emite esse nome de forma bruta no código PHP gerado. Um invasor que consiga fornecer a fonte do template pode injetar e executar PHP arbitrário no template compilado durante o tempo de carregamento do template, ocorrendo antes que o checkSecurity() seja chamado. Isso resulta em um bypass completo da SandboxExtension, mesmo quando um sandbox habilitado globalmente com uma lista de permissões SecurityPolicy vazia é utilizado.Recommendations
Atualize para uma versão onde o parser valide se o atributo dinâmico resolve para um identificador de macro válido antes do roteamento através do
MacroReferenceExpression e onde o compilador de referência de macro emita o nome através de um caminho devidamente escapado.Exploit
Correção
Code Injection
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Php-Twig
Twig/Twig