Jinja: Injeção de comando na função from_string (SSTI)

Criado em 18 fev. 2019  ·  1Comentário  ·  Fonte: pallets/jinja

Comportamento esperado

O from_string aceita parâmetros que não são escapados, portanto, um invasor pode injetar código no modelo.

Comportamento Real

Deve escapar de tudo que passou.

Informações extras e prova de conceito

https://github.com/JameelNabbo/Jinja2-Code-execution
https://www.exploit-db.com/exploits/46386

Comentários muito úteis

O usuário que criou o repo e o CVE não sabe do que está falando e, infelizmente, agora vamos ter que continuar abordando o assunto, pois eles notificaram irresponsavelmente um monte de pessoas sobre um não-problema de uma forma oficial . Consulte https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 para obter uma resposta. Enviei uma solicitação ao MITER para invalidar o CVE.

Dizer que Jina tem uma vulnerabilidade porque from_string existe é como dizer que toda linguagem dinâmica é vulnerável porque eval existe, ou toda biblioteca SQL é vulnerável porque avalia strings SQL. O problema não é com essas bibliotecas, que fornecem ferramentas adequadas para lidar com a entrada do usuário. Uma biblioteca SQL não tem uma vulnerabilidade de injeção, um projeto que usa uma biblioteca SQL de maneira inadequada.

SandboxedEnvironment deve ser usado se você ainda quer arriscar compilando modelos não confiáveis, e autoescape deve ser usado ao renderizar variáveis ​​não confiáveis.

>Todos os comentários

O usuário que criou o repo e o CVE não sabe do que está falando e, infelizmente, agora vamos ter que continuar abordando o assunto, pois eles notificaram irresponsavelmente um monte de pessoas sobre um não-problema de uma forma oficial . Consulte https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 para obter uma resposta. Enviei uma solicitação ao MITER para invalidar o CVE.

Dizer que Jina tem uma vulnerabilidade porque from_string existe é como dizer que toda linguagem dinâmica é vulnerável porque eval existe, ou toda biblioteca SQL é vulnerável porque avalia strings SQL. O problema não é com essas bibliotecas, que fornecem ferramentas adequadas para lidar com a entrada do usuário. Uma biblioteca SQL não tem uma vulnerabilidade de injeção, um projeto que usa uma biblioteca SQL de maneira inadequada.

SandboxedEnvironment deve ser usado se você ainda quer arriscar compilando modelos não confiáveis, e autoescape deve ser usado ao renderizar variáveis ​​não confiáveis.

Esta página foi útil?
0 / 5 - 0 avaliações