PT-2020-14223 · Symfony+1 · Symfony/Expression-Language+1

Craig Blanchette

+1

·

Publicado

2020-08-19

·

Atualizado

2021-11-18

·

CVE-2020-15143

CVSS v3.1

8.8

Alta

VetorAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Nome do software vulnerável e versões afetadas
Versões do SyliusResourceBundle anteriores à 1.3.14
Versões do SyliusResourceBundle de 1.4.0 a 1.4.6
Versões do SyliusResourceBundle de 1.5.0 a 1.5.1
Versões do SyliusResourceBundle de 1.6.0 a 1.6.3
Descrição
O problema decorre da falta de sanitização adequada dos parâmetros de solicitação quando injetados dentro de uma expressão avaliada pelo pacote symfony/expression-language. Isso permite que um invasor acesse qualquer serviço público manipulando o parâmetro de solicitação, o que pode levar à execução remota de código.
Por exemplo, em uma definição de roteamento como “foo: path: /foo/{id}”, o parâmetro $id pode ser manipulado para chamar outros serviços. Acessar uma URL como /foo/“~service(‘doctrine’).getManager().getConnection().executeQuery(”DELETE * FROM TABLE“)~” pode resultar na execução de uma consulta no banco de dados atualmente conectado.
Recomendações
Para versões do SyliusResourceBundle anteriores à 1.3.14, atualize para a versão 1.3.14 ou posterior.
Para as versões do SyliusResourceBundle de 1.4.0 a 1.4.6, atualize para a versão 1.4.7 ou posterior.
Para as versões do SyliusResourceBundle de 1.5.0 a 1.5.1, atualize para a versão 1.5.2 ou posterior.
Para as versões do SyliusResourceBundle de 1.6.0 a 1.6.3, atualize para a versão 1.6.4 ou posterior.
Como solução temporária, considere adicionar addslashes em ParametersParser::parseRequestValueExpression para sanitizar a entrada do usuário antes de avaliá-la usando a linguagem de expressão.

Exploit

Correção

Special Elements Injection

Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Enumeração de Fraquezas

Identificadores relacionados

CVE-2020-15143
GHSA-P4PJ-9G59-4PPV

Produtos afetados

Syliusresourcebundle
Symfony/Expression-Language