Injection eval
Qu'est-ce que Injection eval ?
Injection evalSous-cas concret de l'injection de code causé par la transmission d'entrées non fiables à des primitives d'évaluation dynamique comme eval() en JavaScript ou eval/exec en Python.
L'injection eval est le sous-cas concret de l'injection de code : une fonction d'évaluation dynamique du langage — eval ou new Function en JavaScript, setTimeout(string), eval/exec en Python, eval en Ruby, équivalents en PHP, Application.Run en VBA — est invoquée sur des données provenant directement ou indirectement d'une entrée utilisateur. Ces primitives interprétant la chaîne comme du code source complet dans le processus hôte, l'exploitation procure une RCE au niveau du langage : accès aux imports, globales, système de fichiers, environnement et sous-processus. Les mitigations comprennent la suppression totale de l'évaluation dynamique, l'utilisation de parseurs sûrs (JSON.parse, ast.literal_eval), des validateurs en liste blanche pour les expressions, et des sandboxes comme vm2 ou des sous-processus restreints.
● Exemples
- 01
Python : result = eval(request.form['expr']) — charge __import__('os').system('id').
- 02
Node : new Function('return ' + req.query.f)() — charge process.mainModule.require('child_process').execSync('id').
● Questions fréquentes
Qu'est-ce que Injection eval ?
Sous-cas concret de l'injection de code causé par la transmission d'entrées non fiables à des primitives d'évaluation dynamique comme eval() en JavaScript ou eval/exec en Python. Cette notion relève de la catégorie Attaques et menaces en cybersécurité.
Que signifie Injection eval ?
Sous-cas concret de l'injection de code causé par la transmission d'entrées non fiables à des primitives d'évaluation dynamique comme eval() en JavaScript ou eval/exec en Python.
Comment fonctionne Injection eval ?
L'injection eval est le sous-cas concret de l'injection de code : une fonction d'évaluation dynamique du langage — eval ou new Function en JavaScript, setTimeout(string), eval/exec en Python, eval en Ruby, équivalents en PHP, Application.Run en VBA — est invoquée sur des données provenant directement ou indirectement d'une entrée utilisateur. Ces primitives interprétant la chaîne comme du code source complet dans le processus hôte, l'exploitation procure une RCE au niveau du langage : accès aux imports, globales, système de fichiers, environnement et sous-processus. Les mitigations comprennent la suppression totale de l'évaluation dynamique, l'utilisation de parseurs sûrs (JSON.parse, ast.literal_eval), des validateurs en liste blanche pour les expressions, et des sandboxes comme vm2 ou des sous-processus restreints.
Comment se défendre contre Injection eval ?
Les défenses contre Injection eval combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Injection eval ?
Noms alternatifs courants : Injection eval(), Injection d'évaluation dynamique.
● Termes liés
- attacks№ 195
Injection de Code
Famille de vulnérabilités où des données fournies par l'attaquant sont interprétées et exécutées comme du code par l'application, menant à une exécution arbitraire.
- attacks№ 1009
Injection de template côté serveur
Attaque qui injecte la syntaxe d'un moteur de templates dans une entrée non fiable, provoquant l'exécution de code côté serveur au rendu du template.
- attacks№ 202
Injection de commandes
Attaque où une entrée utilisateur est transmise sans assainissement à un shell système, amenant l'application à exécuter des commandes fournies par l'attaquant.
- vulnerabilities№ 539
Désérialisation non sécurisée
Vulnérabilité où une application désérialise des données non fiables, permettant à un attaquant d'instancier des objets arbitraires et souvent d'obtenir un RCE.
- appsec№ 538
Validation des entrées
Contrôle côté serveur vérifiant que chaque entrée non fiable correspond au type, à la longueur, à la plage, au format et à l'ensemble de valeurs attendus avant tout traitement.