Les codeurs vainquent la sécurité : Série "Partager et apprendre" - Injection de code
Les attaques par injection de code sont parmi les plus courantes, et aussi les plus dangereuses, que rencontrent de nombreux sites web et applications. Elles varient en termes de sophistication et de dangerosité, mais presque tous les sites ou applications qui acceptent des données d'entrée de l'utilisateur peuvent être vulnérables. En fait, presque tous les défenseurs de la cybersécurité seront confrontés à ce type d'attaque à un moment ou à un autre de leur carrière, et probablement à plusieurs reprises.
Une attaque par injection de code peut se produire chaque fois qu'une application ou un site web accepte une entrée de la part des utilisateurs. Il peut s'agir simplement de fournir une fonction de recherche ou de demander à un utilisateur de saisir ses informations d'identification. L'attaque se produit lorsqu'un utilisateur malveillant saisit un code dans le champ ouvert au lieu d'une saisie de texte normale. L'objectif est de faire en sorte que le serveur prenne l'entrée pour un code valide, puis exécute les fonctions souhaitées par l'attaquant.
Si les attaques par injection de code sont extrêmement courantes, les défenses disponibles pour les arrêter le sont tout autant. Dans cet épisode, vous apprendrez
- Comment ils fonctionnent
- Pourquoi ils sont si dangereux
- Comment vous pouvez mettre en place des défenses pour les arrêter.
Comment les attaquants utilisent-ils l'injection de code ?
Bien que les détails spécifiques des attaques par injection de code varient en fonction du langage de programmation utilisé, toute application ou site web peut être vulnérable dès lors qu'il permet à un utilisateur de saisir des données. Des attaques par injection de code ont été déclenchées pour SQL, HTML, XML, CSS et tout autre langage de programmation courant.
Tout d'abord, un attaquant doit localiser le code vulnérable dans une application, normalement à un endroit où les utilisateurs sont autorisés à saisir leurs propres données. Par exemple, ce code prend la fonction PHP eval() et la transmet à un utilisateur pour qu'il la modifie, sans aucune sorte de validation de la chaîne de retour.
$myvar = "varname" ;
$x = $_GET[arg] ;
eval("\$myvar = \$x ;") ;
Un attaquant malin pourrait facilement ajouter sa propre chaîne à la fonction eval, et même exécuter des commandes système s'il le souhaite.
/index.php?arg=1 ; system(id)
Il est important de noter que si les attaques par injection de code peuvent impliquer l'envoi de commandes système, elles ne se limitent pas à cela. En fait, avec les attaques par injection de code, les pirates ne sont limités que par la fonctionnalité du langage lui-même. Dans notre exemple, un pirate pourrait programmer le système ciblé pour qu'il fasse presque tout ce qui est autorisé par le framework PHP.
Pourquoi les attaques par injection de code sont-elles si dangereuses ?
Les attaques par injection de code sont potentiellement très dangereuses en fonction des compétences de l'attaquant. Il peut faire tout ce que le langage de programmation permet, ce qui le met sur un pied d'égalité avec les programmeurs de l'application. Un attaquant peut pratiquement écrire sa propre application et la faire exécuter dans l'environnement cible.
Même les attaquants les moins compétents peuvent être dangereux. Au lieu d'écrire leurs propres applications ou chaînes de code, ils peuvent simplement ordonner au système ciblé d'accepter et d'installer des logiciels malveillants préprogrammés. Cela peut conduire à la défiguration d'un site, à des attaques par ransomware ou même devenir la base d'une campagne d'hameçonnage visant les utilisateurs du site.
La plupart du temps, les attaques par injection de code sont utilisées pour voler des éléments tels que des listes d'utilisateurs et des mots de passe, ou pour obtenir une reconnaissance précieuse dans un système ciblé pour une compromission ultérieure. Mais attention, un programmeur habile peut faire presque n'importe quoi avec une attaque par injection de code, c'est pourquoi il est essentiel que chaque instance potentielle de ces attaques soit découverte et supprimée de votre environnement.
Ne faites confiance à personne ! (Ou du moins, pas les utilisateurs)
Lors de l'élimination des vulnérabilités liées aux attaques par injection de code, le premier endroit à examiner est tout endroit où l'on demande ou autorise une entrée de la part de l'utilisateur. Tout ce qui est saisi par un utilisateur n'est en aucun cas digne de confiance. Si vous autorisez l'entrée d'un utilisateur sans filtrage ou examen, vous invitez en fait les attaquants à tenter de compromettre votre système ou même votre réseau.
Bien que cela ne soit pas toujours possible, la meilleure façon de contrecarrer les attaques par injection de code est d'empêcher les fonctions d'exécuter ou d'interpréter directement les entrées de l'utilisateur. Les utilisateurs peuvent se voir proposer un choix d'options statiques au lieu d'être libres de saisir leurs propres requêtes, l'application étant programmée pour n'accepter que ces choix limités comme étant valides. Il n'est pas toujours approprié de procéder de la sorte, mais lorsque c'est possible, cela permet d'éliminer les injections de code avant qu'elles ne commencent.
Dans les domaines où les utilisateurs doivent saisir leurs propres données, des contrôles stricts doivent être mis en place sur ces données. Partir du principe que tout est une attaque potentielle est un bon point de départ. L'application de politiques de moindre privilège, telles que l'accès des utilisateurs en lecture seule, tant du côté client que du côté serveur, peut empêcher l'exécution de la plupart des codes.
L'autre bonne défense consiste à mettre en place des filtres à l'échelle de l'application et à assainir toutes les entrées de l'utilisateur. Les développeurs sont conscients des attaques par injection de code depuis des années, et il existe des bibliothèques de filtres éprouvés pour chaque cadre et chaque langage. Lorsque vous appliquez ces filtres, veillez à le faire non seulement sur les zones d'entrée utilisateur évidentes ou sur les paramètres courants tels que les commandes Get et Post, mais aussi sur les cookies et les en-têtes HTTP.
Application d'une correction pour l'injection de code
En supprimant les zones d'entrée utilisateur inutiles de votre environnement, en appliquant les principes du moindre privilège et en utilisant les derniers outils de filtrage et d'assainissement pour inspecter et détecter les attaques potentielles, vous pouvez fermer la porte à cette dangereuse vulnérabilité. L'attitude consistant à ne jamais faire confiance aux données saisies par l'utilisateur vous sera également très utile à l'avenir. Faites tout cela et vous aurez une longueur d'avance sur ce type d'attaque dangereuse.
Pour en savoir plus, vous pouvez consulter l'article de l'OWASP sur l' injection de code. Vous pouvez également mettre à l'épreuve vos nouvelles connaissances en matière de défense grâce à la démo gratuite de la plateforme Secure Code Warrior , qui forme les équipes de cybersécurité pour qu'elles deviennent les meilleurs cyber-guerriers. Pour en savoir plus sur la manière de vaincre cette vulnérabilité et d'autres menaces, visitez le blogSecure Code Warrior .
Affrontez l'injection de code de front, dès maintenant. Relevez le défi sur notre plateforme de formation ludique : [Commencez ici]
Les attaques par injection de code sont parmi les plus courantes, et aussi les plus dangereuses, que rencontrent de nombreux sites web et applications. Elles varient en termes de sophistication et de dangerosité, mais presque tous les sites ou applications qui acceptent des données d'entrée de l'utilisateur peuvent être vulnérables.
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Les attaques par injection de code sont parmi les plus courantes, et aussi les plus dangereuses, que rencontrent de nombreux sites web et applications. Elles varient en termes de sophistication et de dangerosité, mais presque tous les sites ou applications qui acceptent des données d'entrée de l'utilisateur peuvent être vulnérables. En fait, presque tous les défenseurs de la cybersécurité seront confrontés à ce type d'attaque à un moment ou à un autre de leur carrière, et probablement à plusieurs reprises.
Une attaque par injection de code peut se produire chaque fois qu'une application ou un site web accepte une entrée de la part des utilisateurs. Il peut s'agir simplement de fournir une fonction de recherche ou de demander à un utilisateur de saisir ses informations d'identification. L'attaque se produit lorsqu'un utilisateur malveillant saisit un code dans le champ ouvert au lieu d'une saisie de texte normale. L'objectif est de faire en sorte que le serveur prenne l'entrée pour un code valide, puis exécute les fonctions souhaitées par l'attaquant.
Si les attaques par injection de code sont extrêmement courantes, les défenses disponibles pour les arrêter le sont tout autant. Dans cet épisode, vous apprendrez
- Comment ils fonctionnent
- Pourquoi ils sont si dangereux
- Comment vous pouvez mettre en place des défenses pour les arrêter.
Comment les attaquants utilisent-ils l'injection de code ?
Bien que les détails spécifiques des attaques par injection de code varient en fonction du langage de programmation utilisé, toute application ou site web peut être vulnérable dès lors qu'il permet à un utilisateur de saisir des données. Des attaques par injection de code ont été déclenchées pour SQL, HTML, XML, CSS et tout autre langage de programmation courant.
Tout d'abord, un attaquant doit localiser le code vulnérable dans une application, normalement à un endroit où les utilisateurs sont autorisés à saisir leurs propres données. Par exemple, ce code prend la fonction PHP eval() et la transmet à un utilisateur pour qu'il la modifie, sans aucune sorte de validation de la chaîne de retour.
$myvar = "varname" ;
$x = $_GET[arg] ;
eval("\$myvar = \$x ;") ;
Un attaquant malin pourrait facilement ajouter sa propre chaîne à la fonction eval, et même exécuter des commandes système s'il le souhaite.
/index.php?arg=1 ; system(id)
Il est important de noter que si les attaques par injection de code peuvent impliquer l'envoi de commandes système, elles ne se limitent pas à cela. En fait, avec les attaques par injection de code, les pirates ne sont limités que par la fonctionnalité du langage lui-même. Dans notre exemple, un pirate pourrait programmer le système ciblé pour qu'il fasse presque tout ce qui est autorisé par le framework PHP.
Pourquoi les attaques par injection de code sont-elles si dangereuses ?
Les attaques par injection de code sont potentiellement très dangereuses en fonction des compétences de l'attaquant. Il peut faire tout ce que le langage de programmation permet, ce qui le met sur un pied d'égalité avec les programmeurs de l'application. Un attaquant peut pratiquement écrire sa propre application et la faire exécuter dans l'environnement cible.
Même les attaquants les moins compétents peuvent être dangereux. Au lieu d'écrire leurs propres applications ou chaînes de code, ils peuvent simplement ordonner au système ciblé d'accepter et d'installer des logiciels malveillants préprogrammés. Cela peut conduire à la défiguration d'un site, à des attaques par ransomware ou même devenir la base d'une campagne d'hameçonnage visant les utilisateurs du site.
La plupart du temps, les attaques par injection de code sont utilisées pour voler des éléments tels que des listes d'utilisateurs et des mots de passe, ou pour obtenir une reconnaissance précieuse dans un système ciblé pour une compromission ultérieure. Mais attention, un programmeur habile peut faire presque n'importe quoi avec une attaque par injection de code, c'est pourquoi il est essentiel que chaque instance potentielle de ces attaques soit découverte et supprimée de votre environnement.
Ne faites confiance à personne ! (Ou du moins, pas les utilisateurs)
Lors de l'élimination des vulnérabilités liées aux attaques par injection de code, le premier endroit à examiner est tout endroit où l'on demande ou autorise une entrée de la part de l'utilisateur. Tout ce qui est saisi par un utilisateur n'est en aucun cas digne de confiance. Si vous autorisez l'entrée d'un utilisateur sans filtrage ou examen, vous invitez en fait les attaquants à tenter de compromettre votre système ou même votre réseau.
Bien que cela ne soit pas toujours possible, la meilleure façon de contrecarrer les attaques par injection de code est d'empêcher les fonctions d'exécuter ou d'interpréter directement les entrées de l'utilisateur. Les utilisateurs peuvent se voir proposer un choix d'options statiques au lieu d'être libres de saisir leurs propres requêtes, l'application étant programmée pour n'accepter que ces choix limités comme étant valides. Il n'est pas toujours approprié de procéder de la sorte, mais lorsque c'est possible, cela permet d'éliminer les injections de code avant qu'elles ne commencent.
Dans les domaines où les utilisateurs doivent saisir leurs propres données, des contrôles stricts doivent être mis en place sur ces données. Partir du principe que tout est une attaque potentielle est un bon point de départ. L'application de politiques de moindre privilège, telles que l'accès des utilisateurs en lecture seule, tant du côté client que du côté serveur, peut empêcher l'exécution de la plupart des codes.
L'autre bonne défense consiste à mettre en place des filtres à l'échelle de l'application et à assainir toutes les entrées de l'utilisateur. Les développeurs sont conscients des attaques par injection de code depuis des années, et il existe des bibliothèques de filtres éprouvés pour chaque cadre et chaque langage. Lorsque vous appliquez ces filtres, veillez à le faire non seulement sur les zones d'entrée utilisateur évidentes ou sur les paramètres courants tels que les commandes Get et Post, mais aussi sur les cookies et les en-têtes HTTP.
Application d'une correction pour l'injection de code
En supprimant les zones d'entrée utilisateur inutiles de votre environnement, en appliquant les principes du moindre privilège et en utilisant les derniers outils de filtrage et d'assainissement pour inspecter et détecter les attaques potentielles, vous pouvez fermer la porte à cette dangereuse vulnérabilité. L'attitude consistant à ne jamais faire confiance aux données saisies par l'utilisateur vous sera également très utile à l'avenir. Faites tout cela et vous aurez une longueur d'avance sur ce type d'attaque dangereuse.
Pour en savoir plus, vous pouvez consulter l'article de l'OWASP sur l' injection de code. Vous pouvez également mettre à l'épreuve vos nouvelles connaissances en matière de défense grâce à la démo gratuite de la plateforme Secure Code Warrior , qui forme les équipes de cybersécurité pour qu'elles deviennent les meilleurs cyber-guerriers. Pour en savoir plus sur la manière de vaincre cette vulnérabilité et d'autres menaces, visitez le blogSecure Code Warrior .
Affrontez l'injection de code de front, dès maintenant. Relevez le défi sur notre plateforme de formation ludique : [Commencez ici]
Les attaques par injection de code sont parmi les plus courantes, et aussi les plus dangereuses, que rencontrent de nombreux sites web et applications. Elles varient en termes de sophistication et de dangerosité, mais presque tous les sites ou applications qui acceptent des données d'entrée de l'utilisateur peuvent être vulnérables. En fait, presque tous les défenseurs de la cybersécurité seront confrontés à ce type d'attaque à un moment ou à un autre de leur carrière, et probablement à plusieurs reprises.
Une attaque par injection de code peut se produire chaque fois qu'une application ou un site web accepte une entrée de la part des utilisateurs. Il peut s'agir simplement de fournir une fonction de recherche ou de demander à un utilisateur de saisir ses informations d'identification. L'attaque se produit lorsqu'un utilisateur malveillant saisit un code dans le champ ouvert au lieu d'une saisie de texte normale. L'objectif est de faire en sorte que le serveur prenne l'entrée pour un code valide, puis exécute les fonctions souhaitées par l'attaquant.
Si les attaques par injection de code sont extrêmement courantes, les défenses disponibles pour les arrêter le sont tout autant. Dans cet épisode, vous apprendrez
- Comment ils fonctionnent
- Pourquoi ils sont si dangereux
- Comment vous pouvez mettre en place des défenses pour les arrêter.
Comment les attaquants utilisent-ils l'injection de code ?
Bien que les détails spécifiques des attaques par injection de code varient en fonction du langage de programmation utilisé, toute application ou site web peut être vulnérable dès lors qu'il permet à un utilisateur de saisir des données. Des attaques par injection de code ont été déclenchées pour SQL, HTML, XML, CSS et tout autre langage de programmation courant.
Tout d'abord, un attaquant doit localiser le code vulnérable dans une application, normalement à un endroit où les utilisateurs sont autorisés à saisir leurs propres données. Par exemple, ce code prend la fonction PHP eval() et la transmet à un utilisateur pour qu'il la modifie, sans aucune sorte de validation de la chaîne de retour.
$myvar = "varname" ;
$x = $_GET[arg] ;
eval("\$myvar = \$x ;") ;
Un attaquant malin pourrait facilement ajouter sa propre chaîne à la fonction eval, et même exécuter des commandes système s'il le souhaite.
/index.php?arg=1 ; system(id)
Il est important de noter que si les attaques par injection de code peuvent impliquer l'envoi de commandes système, elles ne se limitent pas à cela. En fait, avec les attaques par injection de code, les pirates ne sont limités que par la fonctionnalité du langage lui-même. Dans notre exemple, un pirate pourrait programmer le système ciblé pour qu'il fasse presque tout ce qui est autorisé par le framework PHP.
Pourquoi les attaques par injection de code sont-elles si dangereuses ?
Les attaques par injection de code sont potentiellement très dangereuses en fonction des compétences de l'attaquant. Il peut faire tout ce que le langage de programmation permet, ce qui le met sur un pied d'égalité avec les programmeurs de l'application. Un attaquant peut pratiquement écrire sa propre application et la faire exécuter dans l'environnement cible.
Même les attaquants les moins compétents peuvent être dangereux. Au lieu d'écrire leurs propres applications ou chaînes de code, ils peuvent simplement ordonner au système ciblé d'accepter et d'installer des logiciels malveillants préprogrammés. Cela peut conduire à la défiguration d'un site, à des attaques par ransomware ou même devenir la base d'une campagne d'hameçonnage visant les utilisateurs du site.
La plupart du temps, les attaques par injection de code sont utilisées pour voler des éléments tels que des listes d'utilisateurs et des mots de passe, ou pour obtenir une reconnaissance précieuse dans un système ciblé pour une compromission ultérieure. Mais attention, un programmeur habile peut faire presque n'importe quoi avec une attaque par injection de code, c'est pourquoi il est essentiel que chaque instance potentielle de ces attaques soit découverte et supprimée de votre environnement.
Ne faites confiance à personne ! (Ou du moins, pas les utilisateurs)
Lors de l'élimination des vulnérabilités liées aux attaques par injection de code, le premier endroit à examiner est tout endroit où l'on demande ou autorise une entrée de la part de l'utilisateur. Tout ce qui est saisi par un utilisateur n'est en aucun cas digne de confiance. Si vous autorisez l'entrée d'un utilisateur sans filtrage ou examen, vous invitez en fait les attaquants à tenter de compromettre votre système ou même votre réseau.
Bien que cela ne soit pas toujours possible, la meilleure façon de contrecarrer les attaques par injection de code est d'empêcher les fonctions d'exécuter ou d'interpréter directement les entrées de l'utilisateur. Les utilisateurs peuvent se voir proposer un choix d'options statiques au lieu d'être libres de saisir leurs propres requêtes, l'application étant programmée pour n'accepter que ces choix limités comme étant valides. Il n'est pas toujours approprié de procéder de la sorte, mais lorsque c'est possible, cela permet d'éliminer les injections de code avant qu'elles ne commencent.
Dans les domaines où les utilisateurs doivent saisir leurs propres données, des contrôles stricts doivent être mis en place sur ces données. Partir du principe que tout est une attaque potentielle est un bon point de départ. L'application de politiques de moindre privilège, telles que l'accès des utilisateurs en lecture seule, tant du côté client que du côté serveur, peut empêcher l'exécution de la plupart des codes.
L'autre bonne défense consiste à mettre en place des filtres à l'échelle de l'application et à assainir toutes les entrées de l'utilisateur. Les développeurs sont conscients des attaques par injection de code depuis des années, et il existe des bibliothèques de filtres éprouvés pour chaque cadre et chaque langage. Lorsque vous appliquez ces filtres, veillez à le faire non seulement sur les zones d'entrée utilisateur évidentes ou sur les paramètres courants tels que les commandes Get et Post, mais aussi sur les cookies et les en-têtes HTTP.
Application d'une correction pour l'injection de code
En supprimant les zones d'entrée utilisateur inutiles de votre environnement, en appliquant les principes du moindre privilège et en utilisant les derniers outils de filtrage et d'assainissement pour inspecter et détecter les attaques potentielles, vous pouvez fermer la porte à cette dangereuse vulnérabilité. L'attitude consistant à ne jamais faire confiance aux données saisies par l'utilisateur vous sera également très utile à l'avenir. Faites tout cela et vous aurez une longueur d'avance sur ce type d'attaque dangereuse.
Pour en savoir plus, vous pouvez consulter l'article de l'OWASP sur l' injection de code. Vous pouvez également mettre à l'épreuve vos nouvelles connaissances en matière de défense grâce à la démo gratuite de la plateforme Secure Code Warrior , qui forme les équipes de cybersécurité pour qu'elles deviennent les meilleurs cyber-guerriers. Pour en savoir plus sur la manière de vaincre cette vulnérabilité et d'autres menaces, visitez le blogSecure Code Warrior .
Affrontez l'injection de code de front, dès maintenant. Relevez le défi sur notre plateforme de formation ludique : [Commencez ici]
Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Les attaques par injection de code sont parmi les plus courantes, et aussi les plus dangereuses, que rencontrent de nombreux sites web et applications. Elles varient en termes de sophistication et de dangerosité, mais presque tous les sites ou applications qui acceptent des données d'entrée de l'utilisateur peuvent être vulnérables. En fait, presque tous les défenseurs de la cybersécurité seront confrontés à ce type d'attaque à un moment ou à un autre de leur carrière, et probablement à plusieurs reprises.
Une attaque par injection de code peut se produire chaque fois qu'une application ou un site web accepte une entrée de la part des utilisateurs. Il peut s'agir simplement de fournir une fonction de recherche ou de demander à un utilisateur de saisir ses informations d'identification. L'attaque se produit lorsqu'un utilisateur malveillant saisit un code dans le champ ouvert au lieu d'une saisie de texte normale. L'objectif est de faire en sorte que le serveur prenne l'entrée pour un code valide, puis exécute les fonctions souhaitées par l'attaquant.
Si les attaques par injection de code sont extrêmement courantes, les défenses disponibles pour les arrêter le sont tout autant. Dans cet épisode, vous apprendrez
- Comment ils fonctionnent
- Pourquoi ils sont si dangereux
- Comment vous pouvez mettre en place des défenses pour les arrêter.
Comment les attaquants utilisent-ils l'injection de code ?
Bien que les détails spécifiques des attaques par injection de code varient en fonction du langage de programmation utilisé, toute application ou site web peut être vulnérable dès lors qu'il permet à un utilisateur de saisir des données. Des attaques par injection de code ont été déclenchées pour SQL, HTML, XML, CSS et tout autre langage de programmation courant.
Tout d'abord, un attaquant doit localiser le code vulnérable dans une application, normalement à un endroit où les utilisateurs sont autorisés à saisir leurs propres données. Par exemple, ce code prend la fonction PHP eval() et la transmet à un utilisateur pour qu'il la modifie, sans aucune sorte de validation de la chaîne de retour.
$myvar = "varname" ;
$x = $_GET[arg] ;
eval("\$myvar = \$x ;") ;
Un attaquant malin pourrait facilement ajouter sa propre chaîne à la fonction eval, et même exécuter des commandes système s'il le souhaite.
/index.php?arg=1 ; system(id)
Il est important de noter que si les attaques par injection de code peuvent impliquer l'envoi de commandes système, elles ne se limitent pas à cela. En fait, avec les attaques par injection de code, les pirates ne sont limités que par la fonctionnalité du langage lui-même. Dans notre exemple, un pirate pourrait programmer le système ciblé pour qu'il fasse presque tout ce qui est autorisé par le framework PHP.
Pourquoi les attaques par injection de code sont-elles si dangereuses ?
Les attaques par injection de code sont potentiellement très dangereuses en fonction des compétences de l'attaquant. Il peut faire tout ce que le langage de programmation permet, ce qui le met sur un pied d'égalité avec les programmeurs de l'application. Un attaquant peut pratiquement écrire sa propre application et la faire exécuter dans l'environnement cible.
Même les attaquants les moins compétents peuvent être dangereux. Au lieu d'écrire leurs propres applications ou chaînes de code, ils peuvent simplement ordonner au système ciblé d'accepter et d'installer des logiciels malveillants préprogrammés. Cela peut conduire à la défiguration d'un site, à des attaques par ransomware ou même devenir la base d'une campagne d'hameçonnage visant les utilisateurs du site.
La plupart du temps, les attaques par injection de code sont utilisées pour voler des éléments tels que des listes d'utilisateurs et des mots de passe, ou pour obtenir une reconnaissance précieuse dans un système ciblé pour une compromission ultérieure. Mais attention, un programmeur habile peut faire presque n'importe quoi avec une attaque par injection de code, c'est pourquoi il est essentiel que chaque instance potentielle de ces attaques soit découverte et supprimée de votre environnement.
Ne faites confiance à personne ! (Ou du moins, pas les utilisateurs)
Lors de l'élimination des vulnérabilités liées aux attaques par injection de code, le premier endroit à examiner est tout endroit où l'on demande ou autorise une entrée de la part de l'utilisateur. Tout ce qui est saisi par un utilisateur n'est en aucun cas digne de confiance. Si vous autorisez l'entrée d'un utilisateur sans filtrage ou examen, vous invitez en fait les attaquants à tenter de compromettre votre système ou même votre réseau.
Bien que cela ne soit pas toujours possible, la meilleure façon de contrecarrer les attaques par injection de code est d'empêcher les fonctions d'exécuter ou d'interpréter directement les entrées de l'utilisateur. Les utilisateurs peuvent se voir proposer un choix d'options statiques au lieu d'être libres de saisir leurs propres requêtes, l'application étant programmée pour n'accepter que ces choix limités comme étant valides. Il n'est pas toujours approprié de procéder de la sorte, mais lorsque c'est possible, cela permet d'éliminer les injections de code avant qu'elles ne commencent.
Dans les domaines où les utilisateurs doivent saisir leurs propres données, des contrôles stricts doivent être mis en place sur ces données. Partir du principe que tout est une attaque potentielle est un bon point de départ. L'application de politiques de moindre privilège, telles que l'accès des utilisateurs en lecture seule, tant du côté client que du côté serveur, peut empêcher l'exécution de la plupart des codes.
L'autre bonne défense consiste à mettre en place des filtres à l'échelle de l'application et à assainir toutes les entrées de l'utilisateur. Les développeurs sont conscients des attaques par injection de code depuis des années, et il existe des bibliothèques de filtres éprouvés pour chaque cadre et chaque langage. Lorsque vous appliquez ces filtres, veillez à le faire non seulement sur les zones d'entrée utilisateur évidentes ou sur les paramètres courants tels que les commandes Get et Post, mais aussi sur les cookies et les en-têtes HTTP.
Application d'une correction pour l'injection de code
En supprimant les zones d'entrée utilisateur inutiles de votre environnement, en appliquant les principes du moindre privilège et en utilisant les derniers outils de filtrage et d'assainissement pour inspecter et détecter les attaques potentielles, vous pouvez fermer la porte à cette dangereuse vulnérabilité. L'attitude consistant à ne jamais faire confiance aux données saisies par l'utilisateur vous sera également très utile à l'avenir. Faites tout cela et vous aurez une longueur d'avance sur ce type d'attaque dangereuse.
Pour en savoir plus, vous pouvez consulter l'article de l'OWASP sur l' injection de code. Vous pouvez également mettre à l'épreuve vos nouvelles connaissances en matière de défense grâce à la démo gratuite de la plateforme Secure Code Warrior , qui forme les équipes de cybersécurité pour qu'elles deviennent les meilleurs cyber-guerriers. Pour en savoir plus sur la manière de vaincre cette vulnérabilité et d'autres menaces, visitez le blogSecure Code Warrior .
Affrontez l'injection de code de front, dès maintenant. Relevez le défi sur notre plateforme de formation ludique : [Commencez ici]
Table des matières
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
Évaluation comparative des compétences en matière de sécurité : Rationalisation de la conception sécurisée dans l'entreprise
Le mouvement "Secure-by-Design" (conception sécurisée) est l'avenir du développement de logiciels sécurisés. Découvrez les éléments clés que les entreprises doivent garder à l'esprit lorsqu'elles envisagent une initiative de conception sécurisée.
DigitalOcean réduit sa dette de sécurité avec Secure Code Warrior
L'utilisation par DigitalOcean de la formation Secure Code Warrior a considérablement réduit la dette de sécurité, permettant aux équipes de se concentrer davantage sur l'innovation et la productivité. L'amélioration de la sécurité a renforcé la qualité des produits et l'avantage concurrentiel de l'entreprise. À l'avenir, le score de confiance SCW les aidera à améliorer leurs pratiques de sécurité et à continuer à stimuler l'innovation.
Ressources pour vous aider à démarrer
Sécurité réactive contre sécurité préventive : La prévention est un meilleur remède
L'idée d'apporter une sécurité préventive aux codes et systèmes existants en même temps qu'aux applications plus récentes peut sembler décourageante, mais une approche "Secure-by-Design", mise en œuvre en améliorant les compétences des développeurs, permet d'appliquer les meilleures pratiques de sécurité à ces systèmes. C'est la meilleure chance qu'ont de nombreuses organisations d'améliorer leur sécurité.
Les avantages de l'évaluation des compétences des développeurs en matière de sécurité
L'importance croissante accordée au code sécurisé et aux principes de conception sécurisée exige que les développeurs soient formés à la cybersécurité dès le début du cycle de développement durable, et que des outils tels que le Trust Score de Secure Code Warriorles aident à mesurer et à améliorer leurs progrès.
Assurer le succès des initiatives de conception sécurisée de l'entreprise
Notre dernier document de recherche, Benchmarking Security Skills : Streamlining Secure-by-Design in the Enterprise est le résultat d'une analyse approfondie d'initiatives réelles de conception sécurisée au niveau de l'entreprise, et de l'élaboration d'approches de meilleures pratiques basées sur des conclusions fondées sur des données.
Plongée en profondeur : Naviguer dans la vulnérabilité critique de CUPS dans les systèmes GNU-Linux
Découvrez les derniers défis de sécurité auxquels sont confrontés les utilisateurs de Linux en explorant les récentes vulnérabilités de haute sévérité dans le système d'impression commun d'UNIX (CUPS). Apprenez comment ces problèmes peuvent conduire à une potentielle exécution de code à distance (RCE) et ce que vous pouvez faire pour protéger vos systèmes.