Le from_string
accepte les paramètres qui ne sont pas échappés, ainsi un attaquant peut injecter du code dans le modèle.
Devrait échapper à tout ce qui s'est passé.
https://github.com/JameelNabbo/Jinja2-Code-execution
https://www.exploit-db.com/exploits/46386
L'utilisateur qui a créé ce dépôt et CVE ne sait pas de quoi il parle, et malheureusement maintenant, nous allons devoir continuer à y répondre car ils ont informé de manière irresponsable un groupe de personnes d'un non-problème d'une manière officielle. . Voir https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 pour une réponse à eux. J'ai envoyé une demande à MITRE pour faire invalider le CVE.
Dire que Jina a une vulnérabilité parce que from_string
existe, c'est comme dire que chaque langage dynamique est vulnérable parce que eval
existe, ou que chaque bibliothèque SQL est vulnérable parce qu'elle évalue les chaînes SQL. Le problème ne vient pas de ces bibliothèques, qui fournissent toutes des outils appropriés pour gérer les entrées utilisateur. Une bibliothèque SQL n'a pas de vulnérabilité d'injection, contrairement à un projet utilisant une bibliothèque SQL.
SandboxedEnvironment
doit être utilisé si vous voulez toujours risquer de compiler des modèles non fiables, et autoescape
doit être utilisé lors du rendu de variables non fiables.
Commentaire le plus utile
L'utilisateur qui a créé ce dépôt et CVE ne sait pas de quoi il parle, et malheureusement maintenant, nous allons devoir continuer à y répondre car ils ont informé de manière irresponsable un groupe de personnes d'un non-problème d'une manière officielle. . Voir https://github.com/JameelNabbo/Jinja2-Code-execution/issues/1 pour une réponse à eux. J'ai envoyé une demande à MITRE pour faire invalider le CVE.
Dire que Jina a une vulnérabilité parce que
from_string
existe, c'est comme dire que chaque langage dynamique est vulnérable parce queeval
existe, ou que chaque bibliothèque SQL est vulnérable parce qu'elle évalue les chaînes SQL. Le problème ne vient pas de ces bibliothèques, qui fournissent toutes des outils appropriés pour gérer les entrées utilisateur. Une bibliothèque SQL n'a pas de vulnérabilité d'injection, contrairement à un projet utilisant une bibliothèque SQL.SandboxedEnvironment
doit être utilisé si vous voulez toujours risquer de compiler des modèles non fiables, etautoescape
doit être utilisé lors du rendu de variables non fiables.