from_string
acepta parámetros que no se escapan, por lo que un atacante puede inyectar código en la plantilla.
Debería escapar de cualquier cosa pasada.
https://github.com/JameelNabbo/Jinja2-Code-execution
https://www.exploit-db.com/exploits/46386
El usuario que creó ese repositorio y CVE no sabe de qué está hablando, y desafortunadamente ahora vamos a tener que seguir abordando el tema, ya que notificaron irresponsablemente a un grupo de personas sobre un problema que no es un problema de una manera oficial. . Consulte https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 para obtener una respuesta. Envié una solicitud a MITRE para invalidar el CVE.
Decir que Jina tiene una vulnerabilidad porque existe from_string
es como decir que todos los lenguajes dinámicos son vulnerables porque existe eval
, o que todas las bibliotecas SQL son vulnerables porque evalúan cadenas SQL. El problema no es con esas bibliotecas, que proporcionan herramientas adecuadas para manejar la entrada del usuario. Una biblioteca SQL no tiene una vulnerabilidad de inyección, un proyecto que usa una biblioteca SQL la tiene incorrectamente.
Se debe usar SandboxedEnvironment
si aún desea arriesgarse a compilar plantillas que no son de confianza, y se debe usar autoescape
al representar variables que no son de confianza.
Comentario más útil
El usuario que creó ese repositorio y CVE no sabe de qué está hablando, y desafortunadamente ahora vamos a tener que seguir abordando el tema, ya que notificaron irresponsablemente a un grupo de personas sobre un problema que no es un problema de una manera oficial. . Consulte https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 para obtener una respuesta. Envié una solicitud a MITRE para invalidar el CVE.
Decir que Jina tiene una vulnerabilidad porque existe
from_string
es como decir que todos los lenguajes dinámicos son vulnerables porque existeeval
, o que todas las bibliotecas SQL son vulnerables porque evalúan cadenas SQL. El problema no es con esas bibliotecas, que proporcionan herramientas adecuadas para manejar la entrada del usuario. Una biblioteca SQL no tiene una vulnerabilidad de inyección, un proyecto que usa una biblioteca SQL la tiene incorrectamente.Se debe usar
SandboxedEnvironment
si aún desea arriesgarse a compilar plantillas que no son de confianza, y se debe usarautoescape
al representar variables que no son de confianza.