
Joyeux anniversaire, l'injection SQL, le bogue qui ne peut pas être corrigé
Une version de cet article a été initialement publiée dans Help Net Security. Il a été mis à jour et diffusé ici.
Si vous occupez un poste pratique dans le domaine de la cybersécurité, qui nécessite une certaine familiarité avec le code, il y a de fortes chances que vous ayez dû penser à l'injection SQL... encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que nous connaissions sa solution assez simple quelques semaines après sa première découverte, continue de sévir dans notre logiciel et offre une petite fenêtre d'opportunité aux attaquants potentiels si elle n'est pas détectée avant le déploiement.
Le 13 décembre 2020 a marqué le 22e anniversaire de SQL Injection, et bien que cette vulnérabilité soit assez ancienne pour être consommée, nous la laissons prendre le dessus sur nous au lieu de l'éliminer définitivement. En août de cette année, Freepik Company a révélé qu'elle avait a été victime d'une erreur d'injection SQL qui a compromis les comptes de 8,3 millions d'utilisateurs. Alors qu'un certain nombre d'entre eux utilisaient des identifiants tiers (par exemple Google, Facebook), quelques millions avaient des mots de passe non chiffrés exposés en même temps que leur nom d'utilisateur. Malheureusement pour eux et pour bien d'autres personnes en cours de route, les conséquences de ces incidents sont un véritable casse-tête, et rétablir la confiance avec la base d'utilisateurs est un processus de longue haleine.
Alors que nous « célébrons » cette étape importante avec ce qui est considéré comme un problème d'héritage, analysons-le un instant. Pourquoi apparaît-il sans cesse, pourquoi est-il toujours si dangereux qu'il n'a pas quitté la première place du Top 10 de l'OWASP depuis des années, et pourquoi sa solution relativement simple ne figure-t-elle pas parmi les normes de référence générales en matière de développement de logiciels ?
Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?
Un rapide coup d'œil sur une récente violation très médiatisée, cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication impressionnant : il s'agissait d'une attaque d'un État-nation hautement coordonnée utilisant un large éventail de techniques avancées qui semblaient avoir été personnalisées pour un cambriolage FireEye. Dans un communiqué, le PDG de FireEye, Kevin Mandia, a déclaré :
»Les attaquants ont adapté leurs capacités de pointe spécifiquement pour cibler et attaque FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et exécutés avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions jamais été témoins dans le passé.»
C'est un carburant cauchemardesque pour tout CISO, et si quelque chose comme cela peut arriver à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.
... sauf que c'est même pire des nouvelles pour l'organisation moyenne. FireEye est l'une des sociétés de cybersécurité les plus renommées au monde, et l'attaque réussie dont elle a été victime a nécessité des escrocs de haut niveau qui ont jeté tout ce qu'ils possédaient dans le cadre d'une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation de données lucrative peut être possible en exploitant un simple bogue, assez rapidement, sans avoir besoin d'aucun cerveau. Et l'injection SQL est un exemple courant de cette dernière solution, encore utilisée par les amateurs de scripts qui cherchent à gagner rapidement de l'argent sur le Dark Web.
En mai 2020, un homme a été accusé de trafic de cartes de crédit et de piratage informatique, lorsqu'il a été découvert avec un support numérique contenant des centaines de milliers de numéros de cartes de crédit actifs. Il les a toutes récoltées à l'aide de techniques d'injection SQL, dans le cadre d'une opération qui a compromis de nombreuses entreprises et des millions de leurs clients.
En tant qu'industrie, nous sont s'améliorant sans cesse, mais l'injection SQL constitue toujours une menace importante et touche bien plus que les systèmes existants ou non patchés.
Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)
Nous n'arrêtons pas de dire que l'injection SQL est simple à corriger et que le code doit être écrit de manière à ne pas l'introduire du tout. Comme la plupart des choses, ce n'est facile que lorsqu'on vous a appris à bien faire les choses.
C'est là que la roue commence à vaciller dans le processus de développement logiciel. Les développeurs commettent les mêmes erreurs, ce qui entraîne des vulnérabilités récurrentes, telles que l'injection SQL infiltrant une base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir beaucoup appris sur le codage sécurisé, voire pas du tout. La plupart des formations en cours d'emploi sont inadéquates, en particulier dans un environnement où la sécurité n'est pas considérée comme une priorité commerciale dans leur rôle.
Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plateforme solide pour commencer à prendre davantage conscience de la sécurité. Des modèles de codage médiocres perpétuent des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, tout en leur donnant le temps d'écrire un code sécurisé et de qualité plus élevé. L'écriture de modèles de codage sécurisés peut prendre plus de temps, mais le temps que vous y passez permet de gagner en efficacité, ce qui est inestimable plus tard dans le processus.
Y aura-t-il un jour des funérailles par injection SQL ?
Une métaphore funèbre est un peu morbide, mais en réalité, nos données sensibles seraient plus en sécurité si l'injection SQL était définitivement arrêtée. Je suis convaincu que nous célébrerons encore quelques anniversaires avant d'en arriver là, car la culture qui entoure la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas suffisamment évolué pour que l'on puisse commencer à fermer le cercueil.
Des langages plus récents et plus robustes en termes de sécurité, tels que Rust, aident à éradiquer certains des bogues que nous avons traités pendant longtemps en utilisant des fonctions plus sûres, mais il existe une énorme quantité de logiciels existants, de systèmes anciens et de bibliothèques qui continueront à être utilisés et potentiellement vulnérables.
La responsabilité partagée en matière de sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons que les exploits « faciles » soient définitivement arrêtés. Les développeurs doivent être impliqués dès le début et soutenus pour qu'ils assument leur part de responsabilité dans la création d'un code plus sûr et de meilleure qualité.
Comment les développeurs doivent-ils aborder la correction d'un bogue d'injection SQL dans leur code ?
Nous avons mis en place un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger l'injection SQL. Complétez le tout avec un défi ludique dans le langage de programmation de leur choix (même COBOL !) , cela fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.


C'est le 22e anniversaire de l'injection SQL, et bien que cette vulnérabilité soit assez ancienne pour être consommée, nous la laissons prendre le dessus sur nous au lieu de l'éliminer définitivement.
Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique 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émoMatias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.
Matias is a researcher and developer with more than 15 years of hands-on software security experience. He has developed solutions for companies such as Fortify Software and his own company Sensei Security. Over his career, Matias has led multiple application security research projects which have led to commercial products and boasts over 10 patents under his belt. When he is away from his desk, Matias has served as an instructor for advanced application security training courses and regularly speaks at global conferences including RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec and BruCon.
Matias holds a Ph.D. in Computer Engineering from Ghent University, where he studied application security through program obfuscation to hide the inner workings of an application.


Une version de cet article a été initialement publiée dans Help Net Security. Il a été mis à jour et diffusé ici.
Si vous occupez un poste pratique dans le domaine de la cybersécurité, qui nécessite une certaine familiarité avec le code, il y a de fortes chances que vous ayez dû penser à l'injection SQL... encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que nous connaissions sa solution assez simple quelques semaines après sa première découverte, continue de sévir dans notre logiciel et offre une petite fenêtre d'opportunité aux attaquants potentiels si elle n'est pas détectée avant le déploiement.
Le 13 décembre 2020 a marqué le 22e anniversaire de SQL Injection, et bien que cette vulnérabilité soit assez ancienne pour être consommée, nous la laissons prendre le dessus sur nous au lieu de l'éliminer définitivement. En août de cette année, Freepik Company a révélé qu'elle avait a été victime d'une erreur d'injection SQL qui a compromis les comptes de 8,3 millions d'utilisateurs. Alors qu'un certain nombre d'entre eux utilisaient des identifiants tiers (par exemple Google, Facebook), quelques millions avaient des mots de passe non chiffrés exposés en même temps que leur nom d'utilisateur. Malheureusement pour eux et pour bien d'autres personnes en cours de route, les conséquences de ces incidents sont un véritable casse-tête, et rétablir la confiance avec la base d'utilisateurs est un processus de longue haleine.
Alors que nous « célébrons » cette étape importante avec ce qui est considéré comme un problème d'héritage, analysons-le un instant. Pourquoi apparaît-il sans cesse, pourquoi est-il toujours si dangereux qu'il n'a pas quitté la première place du Top 10 de l'OWASP depuis des années, et pourquoi sa solution relativement simple ne figure-t-elle pas parmi les normes de référence générales en matière de développement de logiciels ?
Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?
Un rapide coup d'œil sur une récente violation très médiatisée, cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication impressionnant : il s'agissait d'une attaque d'un État-nation hautement coordonnée utilisant un large éventail de techniques avancées qui semblaient avoir été personnalisées pour un cambriolage FireEye. Dans un communiqué, le PDG de FireEye, Kevin Mandia, a déclaré :
»Les attaquants ont adapté leurs capacités de pointe spécifiquement pour cibler et attaque FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et exécutés avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions jamais été témoins dans le passé.»
C'est un carburant cauchemardesque pour tout CISO, et si quelque chose comme cela peut arriver à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.
... sauf que c'est même pire des nouvelles pour l'organisation moyenne. FireEye est l'une des sociétés de cybersécurité les plus renommées au monde, et l'attaque réussie dont elle a été victime a nécessité des escrocs de haut niveau qui ont jeté tout ce qu'ils possédaient dans le cadre d'une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation de données lucrative peut être possible en exploitant un simple bogue, assez rapidement, sans avoir besoin d'aucun cerveau. Et l'injection SQL est un exemple courant de cette dernière solution, encore utilisée par les amateurs de scripts qui cherchent à gagner rapidement de l'argent sur le Dark Web.
En mai 2020, un homme a été accusé de trafic de cartes de crédit et de piratage informatique, lorsqu'il a été découvert avec un support numérique contenant des centaines de milliers de numéros de cartes de crédit actifs. Il les a toutes récoltées à l'aide de techniques d'injection SQL, dans le cadre d'une opération qui a compromis de nombreuses entreprises et des millions de leurs clients.
En tant qu'industrie, nous sont s'améliorant sans cesse, mais l'injection SQL constitue toujours une menace importante et touche bien plus que les systèmes existants ou non patchés.
Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)
Nous n'arrêtons pas de dire que l'injection SQL est simple à corriger et que le code doit être écrit de manière à ne pas l'introduire du tout. Comme la plupart des choses, ce n'est facile que lorsqu'on vous a appris à bien faire les choses.
C'est là que la roue commence à vaciller dans le processus de développement logiciel. Les développeurs commettent les mêmes erreurs, ce qui entraîne des vulnérabilités récurrentes, telles que l'injection SQL infiltrant une base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir beaucoup appris sur le codage sécurisé, voire pas du tout. La plupart des formations en cours d'emploi sont inadéquates, en particulier dans un environnement où la sécurité n'est pas considérée comme une priorité commerciale dans leur rôle.
Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plateforme solide pour commencer à prendre davantage conscience de la sécurité. Des modèles de codage médiocres perpétuent des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, tout en leur donnant le temps d'écrire un code sécurisé et de qualité plus élevé. L'écriture de modèles de codage sécurisés peut prendre plus de temps, mais le temps que vous y passez permet de gagner en efficacité, ce qui est inestimable plus tard dans le processus.
Y aura-t-il un jour des funérailles par injection SQL ?
Une métaphore funèbre est un peu morbide, mais en réalité, nos données sensibles seraient plus en sécurité si l'injection SQL était définitivement arrêtée. Je suis convaincu que nous célébrerons encore quelques anniversaires avant d'en arriver là, car la culture qui entoure la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas suffisamment évolué pour que l'on puisse commencer à fermer le cercueil.
Des langages plus récents et plus robustes en termes de sécurité, tels que Rust, aident à éradiquer certains des bogues que nous avons traités pendant longtemps en utilisant des fonctions plus sûres, mais il existe une énorme quantité de logiciels existants, de systèmes anciens et de bibliothèques qui continueront à être utilisés et potentiellement vulnérables.
La responsabilité partagée en matière de sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons que les exploits « faciles » soient définitivement arrêtés. Les développeurs doivent être impliqués dès le début et soutenus pour qu'ils assument leur part de responsabilité dans la création d'un code plus sûr et de meilleure qualité.
Comment les développeurs doivent-ils aborder la correction d'un bogue d'injection SQL dans leur code ?
Nous avons mis en place un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger l'injection SQL. Complétez le tout avec un défi ludique dans le langage de programmation de leur choix (même COBOL !) , cela fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.

Une version de cet article a été initialement publiée dans Help Net Security. Il a été mis à jour et diffusé ici.
Si vous occupez un poste pratique dans le domaine de la cybersécurité, qui nécessite une certaine familiarité avec le code, il y a de fortes chances que vous ayez dû penser à l'injection SQL... encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que nous connaissions sa solution assez simple quelques semaines après sa première découverte, continue de sévir dans notre logiciel et offre une petite fenêtre d'opportunité aux attaquants potentiels si elle n'est pas détectée avant le déploiement.
Le 13 décembre 2020 a marqué le 22e anniversaire de SQL Injection, et bien que cette vulnérabilité soit assez ancienne pour être consommée, nous la laissons prendre le dessus sur nous au lieu de l'éliminer définitivement. En août de cette année, Freepik Company a révélé qu'elle avait a été victime d'une erreur d'injection SQL qui a compromis les comptes de 8,3 millions d'utilisateurs. Alors qu'un certain nombre d'entre eux utilisaient des identifiants tiers (par exemple Google, Facebook), quelques millions avaient des mots de passe non chiffrés exposés en même temps que leur nom d'utilisateur. Malheureusement pour eux et pour bien d'autres personnes en cours de route, les conséquences de ces incidents sont un véritable casse-tête, et rétablir la confiance avec la base d'utilisateurs est un processus de longue haleine.
Alors que nous « célébrons » cette étape importante avec ce qui est considéré comme un problème d'héritage, analysons-le un instant. Pourquoi apparaît-il sans cesse, pourquoi est-il toujours si dangereux qu'il n'a pas quitté la première place du Top 10 de l'OWASP depuis des années, et pourquoi sa solution relativement simple ne figure-t-elle pas parmi les normes de référence générales en matière de développement de logiciels ?
Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?
Un rapide coup d'œil sur une récente violation très médiatisée, cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication impressionnant : il s'agissait d'une attaque d'un État-nation hautement coordonnée utilisant un large éventail de techniques avancées qui semblaient avoir été personnalisées pour un cambriolage FireEye. Dans un communiqué, le PDG de FireEye, Kevin Mandia, a déclaré :
»Les attaquants ont adapté leurs capacités de pointe spécifiquement pour cibler et attaque FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et exécutés avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions jamais été témoins dans le passé.»
C'est un carburant cauchemardesque pour tout CISO, et si quelque chose comme cela peut arriver à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.
... sauf que c'est même pire des nouvelles pour l'organisation moyenne. FireEye est l'une des sociétés de cybersécurité les plus renommées au monde, et l'attaque réussie dont elle a été victime a nécessité des escrocs de haut niveau qui ont jeté tout ce qu'ils possédaient dans le cadre d'une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation de données lucrative peut être possible en exploitant un simple bogue, assez rapidement, sans avoir besoin d'aucun cerveau. Et l'injection SQL est un exemple courant de cette dernière solution, encore utilisée par les amateurs de scripts qui cherchent à gagner rapidement de l'argent sur le Dark Web.
En mai 2020, un homme a été accusé de trafic de cartes de crédit et de piratage informatique, lorsqu'il a été découvert avec un support numérique contenant des centaines de milliers de numéros de cartes de crédit actifs. Il les a toutes récoltées à l'aide de techniques d'injection SQL, dans le cadre d'une opération qui a compromis de nombreuses entreprises et des millions de leurs clients.
En tant qu'industrie, nous sont s'améliorant sans cesse, mais l'injection SQL constitue toujours une menace importante et touche bien plus que les systèmes existants ou non patchés.
Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)
Nous n'arrêtons pas de dire que l'injection SQL est simple à corriger et que le code doit être écrit de manière à ne pas l'introduire du tout. Comme la plupart des choses, ce n'est facile que lorsqu'on vous a appris à bien faire les choses.
C'est là que la roue commence à vaciller dans le processus de développement logiciel. Les développeurs commettent les mêmes erreurs, ce qui entraîne des vulnérabilités récurrentes, telles que l'injection SQL infiltrant une base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir beaucoup appris sur le codage sécurisé, voire pas du tout. La plupart des formations en cours d'emploi sont inadéquates, en particulier dans un environnement où la sécurité n'est pas considérée comme une priorité commerciale dans leur rôle.
Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plateforme solide pour commencer à prendre davantage conscience de la sécurité. Des modèles de codage médiocres perpétuent des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, tout en leur donnant le temps d'écrire un code sécurisé et de qualité plus élevé. L'écriture de modèles de codage sécurisés peut prendre plus de temps, mais le temps que vous y passez permet de gagner en efficacité, ce qui est inestimable plus tard dans le processus.
Y aura-t-il un jour des funérailles par injection SQL ?
Une métaphore funèbre est un peu morbide, mais en réalité, nos données sensibles seraient plus en sécurité si l'injection SQL était définitivement arrêtée. Je suis convaincu que nous célébrerons encore quelques anniversaires avant d'en arriver là, car la culture qui entoure la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas suffisamment évolué pour que l'on puisse commencer à fermer le cercueil.
Des langages plus récents et plus robustes en termes de sécurité, tels que Rust, aident à éradiquer certains des bogues que nous avons traités pendant longtemps en utilisant des fonctions plus sûres, mais il existe une énorme quantité de logiciels existants, de systèmes anciens et de bibliothèques qui continueront à être utilisés et potentiellement vulnérables.
La responsabilité partagée en matière de sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons que les exploits « faciles » soient définitivement arrêtés. Les développeurs doivent être impliqués dès le début et soutenus pour qu'ils assument leur part de responsabilité dans la création d'un code plus sûr et de meilleure qualité.
Comment les développeurs doivent-ils aborder la correction d'un bogue d'injection SQL dans leur code ?
Nous avons mis en place un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger l'injection SQL. Complétez le tout avec un défi ludique dans le langage de programmation de leur choix (même COBOL !) , cela fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique 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é.
Afficher le rapportRéservez une démoMatias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.
Matias is a researcher and developer with more than 15 years of hands-on software security experience. He has developed solutions for companies such as Fortify Software and his own company Sensei Security. Over his career, Matias has led multiple application security research projects which have led to commercial products and boasts over 10 patents under his belt. When he is away from his desk, Matias has served as an instructor for advanced application security training courses and regularly speaks at global conferences including RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec and BruCon.
Matias holds a Ph.D. in Computer Engineering from Ghent University, where he studied application security through program obfuscation to hide the inner workings of an application.
Une version de cet article a été initialement publiée dans Help Net Security. Il a été mis à jour et diffusé ici.
Si vous occupez un poste pratique dans le domaine de la cybersécurité, qui nécessite une certaine familiarité avec le code, il y a de fortes chances que vous ayez dû penser à l'injection SQL... encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que nous connaissions sa solution assez simple quelques semaines après sa première découverte, continue de sévir dans notre logiciel et offre une petite fenêtre d'opportunité aux attaquants potentiels si elle n'est pas détectée avant le déploiement.
Le 13 décembre 2020 a marqué le 22e anniversaire de SQL Injection, et bien que cette vulnérabilité soit assez ancienne pour être consommée, nous la laissons prendre le dessus sur nous au lieu de l'éliminer définitivement. En août de cette année, Freepik Company a révélé qu'elle avait a été victime d'une erreur d'injection SQL qui a compromis les comptes de 8,3 millions d'utilisateurs. Alors qu'un certain nombre d'entre eux utilisaient des identifiants tiers (par exemple Google, Facebook), quelques millions avaient des mots de passe non chiffrés exposés en même temps que leur nom d'utilisateur. Malheureusement pour eux et pour bien d'autres personnes en cours de route, les conséquences de ces incidents sont un véritable casse-tête, et rétablir la confiance avec la base d'utilisateurs est un processus de longue haleine.
Alors que nous « célébrons » cette étape importante avec ce qui est considéré comme un problème d'héritage, analysons-le un instant. Pourquoi apparaît-il sans cesse, pourquoi est-il toujours si dangereux qu'il n'a pas quitté la première place du Top 10 de l'OWASP depuis des années, et pourquoi sa solution relativement simple ne figure-t-elle pas parmi les normes de référence générales en matière de développement de logiciels ?
Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?
Un rapide coup d'œil sur une récente violation très médiatisée, cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication impressionnant : il s'agissait d'une attaque d'un État-nation hautement coordonnée utilisant un large éventail de techniques avancées qui semblaient avoir été personnalisées pour un cambriolage FireEye. Dans un communiqué, le PDG de FireEye, Kevin Mandia, a déclaré :
»Les attaquants ont adapté leurs capacités de pointe spécifiquement pour cibler et attaque FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et exécutés avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions jamais été témoins dans le passé.»
C'est un carburant cauchemardesque pour tout CISO, et si quelque chose comme cela peut arriver à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.
... sauf que c'est même pire des nouvelles pour l'organisation moyenne. FireEye est l'une des sociétés de cybersécurité les plus renommées au monde, et l'attaque réussie dont elle a été victime a nécessité des escrocs de haut niveau qui ont jeté tout ce qu'ils possédaient dans le cadre d'une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation de données lucrative peut être possible en exploitant un simple bogue, assez rapidement, sans avoir besoin d'aucun cerveau. Et l'injection SQL est un exemple courant de cette dernière solution, encore utilisée par les amateurs de scripts qui cherchent à gagner rapidement de l'argent sur le Dark Web.
En mai 2020, un homme a été accusé de trafic de cartes de crédit et de piratage informatique, lorsqu'il a été découvert avec un support numérique contenant des centaines de milliers de numéros de cartes de crédit actifs. Il les a toutes récoltées à l'aide de techniques d'injection SQL, dans le cadre d'une opération qui a compromis de nombreuses entreprises et des millions de leurs clients.
En tant qu'industrie, nous sont s'améliorant sans cesse, mais l'injection SQL constitue toujours une menace importante et touche bien plus que les systèmes existants ou non patchés.
Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)
Nous n'arrêtons pas de dire que l'injection SQL est simple à corriger et que le code doit être écrit de manière à ne pas l'introduire du tout. Comme la plupart des choses, ce n'est facile que lorsqu'on vous a appris à bien faire les choses.
C'est là que la roue commence à vaciller dans le processus de développement logiciel. Les développeurs commettent les mêmes erreurs, ce qui entraîne des vulnérabilités récurrentes, telles que l'injection SQL infiltrant une base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir beaucoup appris sur le codage sécurisé, voire pas du tout. La plupart des formations en cours d'emploi sont inadéquates, en particulier dans un environnement où la sécurité n'est pas considérée comme une priorité commerciale dans leur rôle.
Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plateforme solide pour commencer à prendre davantage conscience de la sécurité. Des modèles de codage médiocres perpétuent des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, tout en leur donnant le temps d'écrire un code sécurisé et de qualité plus élevé. L'écriture de modèles de codage sécurisés peut prendre plus de temps, mais le temps que vous y passez permet de gagner en efficacité, ce qui est inestimable plus tard dans le processus.
Y aura-t-il un jour des funérailles par injection SQL ?
Une métaphore funèbre est un peu morbide, mais en réalité, nos données sensibles seraient plus en sécurité si l'injection SQL était définitivement arrêtée. Je suis convaincu que nous célébrerons encore quelques anniversaires avant d'en arriver là, car la culture qui entoure la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas suffisamment évolué pour que l'on puisse commencer à fermer le cercueil.
Des langages plus récents et plus robustes en termes de sécurité, tels que Rust, aident à éradiquer certains des bogues que nous avons traités pendant longtemps en utilisant des fonctions plus sûres, mais il existe une énorme quantité de logiciels existants, de systèmes anciens et de bibliothèques qui continueront à être utilisés et potentiellement vulnérables.
La responsabilité partagée en matière de sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons que les exploits « faciles » soient définitivement arrêtés. Les développeurs doivent être impliqués dès le début et soutenus pour qu'ils assument leur part de responsabilité dans la création d'un code plus sûr et de meilleure qualité.
Comment les développeurs doivent-ils aborder la correction d'un bogue d'injection SQL dans leur code ?
Nous avons mis en place un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger l'injection SQL. Complétez le tout avec un défi ludique dans le langage de programmation de leur choix (même COBOL !) , cela fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.
Table des matières
Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

Secure Code Warrior est là pour aider votre organisation à sécuriser le code tout au long du cycle de développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable de la sécurité des applications, développeur, responsable de la sécurité informatique 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émoTéléchargerRessources pour vous aider à démarrer
Sujets et contenus de formation sur le code sécurisé
Notre contenu de pointe évolue constamment pour s'adapter à l'évolution constante du paysage du développement de logiciels tout en tenant compte de votre rôle. Des sujets couvrant tout, de l'IA à l'injection XQuery, proposés pour une variété de postes, allant des architectes aux ingénieurs en passant par les chefs de produit et l'assurance qualité. Découvrez un aperçu de ce que notre catalogue de contenu a à offrir par sujet et par rôle.
Threat Modeling with AI: Turning Every Developer into a Threat Modeler
Walk away better equipped to help developers combine threat modeling ideas and techniques with the AI tools they're already using to strengthen security, improve collaboration, and build more resilient software from the start.
Ressources pour vous aider à démarrer
Cybermon est de retour : les missions d'IA Beat the Boss sont désormais disponibles à la demande
Cybermon 2025 Beat the Boss est désormais disponible toute l'année dans SCW. Déployez des défis de sécurité avancés liés à l'IA et au LLM pour renforcer le développement sécurisé de l'IA à grande échelle.
Explication de la loi sur la cyberrésilience : ce que cela signifie pour le développement de logiciels sécurisés dès la conception
Découvrez ce que la loi européenne sur la cyberrésilience (CRA) exige, à qui elle s'applique et comment les équipes d'ingénieurs peuvent se préparer grâce à des pratiques de sécurité dès la conception, à la prévention des vulnérabilités et au renforcement des capacités des développeurs.
Facilitateur 1 : Critères de réussite définis et mesurables
Enabler 1 donne le coup d'envoi de notre série en 10 parties intitulée Enablers of Success en montrant comment associer le codage sécurisé à des résultats commerciaux tels que la réduction des risques et la rapidité pour assurer la maturité à long terme des programmes.




%20(1).avif)
.avif)
