L’injection de code peut être utilisée par un attaquant pour introduire du code malveillant dans un programme informatique vulnérable et changer le cours de l’exécution.
Tous les logiciels prennent une sorte d’entrée – un programme sécurisé doit traiter toutes les entrées d’une source externe comme « non fiables » jusqu’à preuve du contraire. Des vulnérabilités d’injection de code existent lorsqu’un attaquant peut soumettre une entrée exécutable à un programme et inciter le logiciel à exécuter cette entrée. Cela donne à l’attaquant un canal par lequel il peut contourner les restrictions de sécurité mises en place par l’auteur du programme.
Certains types courants d’injection de code sont:
-
Injection SQL. Un traitement non sécurisé des paramètres HTTP lors de la construction de requêtes sur un site Web peut permettre à un attaquant d’exécuter des déclarations SQL arbitraires sur une application vulnérable.
-
Script intersite. Un traitement non sécurisé des paramètres HTTP peut permettre l’injection de JavaScript malveillant dans une application Web.
-
Exécution de la commande. Un traitement non sécurisé des paramètres HTTP peut permettre à une attaquepour exécuter des commandes shell arbitraires sur le serveur Web.
Les conséquences d’une injection de code réussie sont généralement désastreuses pourl’auteur de l’application. Les risques peuvent être atténués en assurant un traitement sécurisé des entrées non fiables et en pratiquant la défense en profondeur pour limiter les privilèges de l’application en cours d’exécution.