O from_string
aceita parâmetros que não são escapados, portanto, um invasor pode injetar código no modelo.
Deve escapar de tudo que passou.
https://github.com/JameelNabbo/Jinja2-Code-execution
https://www.exploit-db.com/exploits/46386
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.
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 porqueeval
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, eautoescape
deve ser usado ao renderizar variáveis não confiáveis.