Blog

Bon anniversaire à l'injection SQL, le bogue qui ne peut être écrasé

Matias Madou, Ph.D.
Publié le 17 mars 2021

Une version de cet article a été publiée à l'origine dans Help Net Security. Elle a été mise à jour et publiée ici.

Si vous jouez un rôle pratique dans le domaine de la cybersécurité - un rôle qui exige une certaine familiarité avec le code - il y a de fortes chances que vous ayez eu à penser à l'injection SQL... encore et encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que l'on connaisse son remède assez simple quelques semaines après la première découverte, continue de nuire à nos logiciels et d'offrir 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 l'injection SQL, et bien que cette vulnérabilité soit assez vieille pour être bue, nous la laissons prendre le dessus au lieu de l'écraser pour de bon. En août de cette année, la société Freepik a révélé qu'elle avait été victime d'une injection SQL qui avait compromis les comptes de 8,3 millions d'utilisateurs. Si un certain nombre d'entre eux utilisaient des identifiants de tiers (Google, Facebook, etc.), 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 beaucoup d'autres, les retombées de ces incidents sont un énorme casse-tête, et le rétablissement de la confiance avec la base d'utilisateurs est un processus de longue haleine.

Alors que nous "célébrons" cette étape avec ce qui est considéré comme un problème hérité du passé, disséquons-le un instant. Pourquoi ce problème réapparaît-il sans cesse, pourquoi reste-t-il 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 correction relativement simple n'est-elle pas intégrée dans les normes de référence générales pour le développement de logiciels ?

Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?

Un coup d'œil rapide sur une récente violation très médiatisée, la cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication stupéfiant : il s'agissait d'une attaque hautement coordonnée, menée par un État-nation, utilisant un large éventail de techniques avancées qui semblaient avoir été conçues sur mesure pour un vol de FireEye :

"Les attaquants ont adapté leurs capacités de classe mondiale spécifiquement pour cibler et attaquer FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et ont agi avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions pas été témoins dans le passé".

C'est un véritable cauchemar pour tout RSSI, et si une telle chose arrive à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.

... sauf qu'il s'agit d'une nouvelle encore plus grave pour l'organisation moyenne. FireEye est l'une des entreprises de cybersécurité les plus renommées au monde, et pour réussir cette attaque, il a fallu que des escrocs dignes d'un génie mettent tout ce qu'ils avaient dans une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation lucrative des données peut être possible en exploitant un simple bogue, assez rapidement, sans qu'aucun cerveau ne soit nécessaire. L'injection SQL est un exemple courant de ce type de faille, encore exploitée par des script kiddies qui cherchent à gagner rapidement de l'argent sur le Dark Web.

En mai 2020, un homme a été inculpé de trafic de cartes de crédit et de piratage informatique lorsqu'il a été trouvé en possession de supports numériques stockant des centaines de milliers de numéros de cartes de crédit actives. Il les a récoltés à 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 nous améliorons sans cesse, mais l'injection SQL reste une menace importante et affecte bien plus que les systèmes hérités ou non corrigés.

Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)

Nous répétons sans cesse que l'injection SQL est simple à corriger et que le code devrait ê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 à le faire correctement.

C'est là que la roue commence à vaciller dans le processus de développement de logiciels. Les développeurs commettent les mêmes erreurs, ce qui entraîne l'infiltration de vulnérabilités récurrentes, telles que l'injection SQL, dans la base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir appris grand-chose sur le codage sécurisé, voire rien 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é dans leur rôle.

Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plate-forme solide pour commencer à prendre conscience de la sécurité. De mauvais modèles de codage maintiennent en vie des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, et leur donner le temps d'écrire un code de qualité plus sûr. Les modèles de codage sécurisés peuvent prendre plus de temps à écrire, mais le temps passé à le faire crée des efficacités qui sont inestimables plus tard dans le processus.

Y aura-t-il un jour des funérailles pour les injections SQL ?

La métaphore des funérailles est un peu morbide, mais vraiment, nos données sensibles seraient plus en sécurité si l'injection SQL était enterrée pour de bon. Je suis convaincu que nous fêterons encore quelques anniversaires avant d'en arriver là, car la culture de la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas évolué suffisamment pour commencer à clouer le cercueil.

Des langages plus récents et plus robustes sur le plan de la sécurité, comme Rust, permettent d'éradiquer certains des bogues auxquels nous sommes confrontés depuis longtemps grâce à l'utilisation de fonctions plus sûres, mais il existe une quantité énorme de logiciels hérités, de systèmes plus anciens et de bibliothèques qui continueront d'être utilisés et potentiellement vulnérables.

La responsabilité partagée de la sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons voir les exploits "faciles" disparaître pour de bon. Les développeurs doivent être impliqués dès le départ et soutenus pour assumer 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 élaboré un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger les injections SQL. Complété par un défi ludique dans le langage de programmation de leur choix (même COBOL !), ce guide fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.

Voir la ressource
Voir la ressource

C'est le 22e anniversaire de l'injection SQL et, bien que cette vulnérabilité soit assez vieille pour être bue, nous la laissons prendre le dessus au lieu de l'éliminer pour de bon.

Vous souhaitez en savoir plus ?

Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

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émonstration
Partager sur :
Auteur
Matias Madou, Ph.D.
Publié le 17 mars 2021

Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.

Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.

Partager sur :

Une version de cet article a été publiée à l'origine dans Help Net Security. Elle a été mise à jour et publiée ici.

Si vous jouez un rôle pratique dans le domaine de la cybersécurité - un rôle qui exige une certaine familiarité avec le code - il y a de fortes chances que vous ayez eu à penser à l'injection SQL... encore et encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que l'on connaisse son remède assez simple quelques semaines après la première découverte, continue de nuire à nos logiciels et d'offrir 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 l'injection SQL, et bien que cette vulnérabilité soit assez vieille pour être bue, nous la laissons prendre le dessus au lieu de l'écraser pour de bon. En août de cette année, la société Freepik a révélé qu'elle avait été victime d'une injection SQL qui avait compromis les comptes de 8,3 millions d'utilisateurs. Si un certain nombre d'entre eux utilisaient des identifiants de tiers (Google, Facebook, etc.), 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 beaucoup d'autres, les retombées de ces incidents sont un énorme casse-tête, et le rétablissement de la confiance avec la base d'utilisateurs est un processus de longue haleine.

Alors que nous "célébrons" cette étape avec ce qui est considéré comme un problème hérité du passé, disséquons-le un instant. Pourquoi ce problème réapparaît-il sans cesse, pourquoi reste-t-il 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 correction relativement simple n'est-elle pas intégrée dans les normes de référence générales pour le développement de logiciels ?

Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?

Un coup d'œil rapide sur une récente violation très médiatisée, la cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication stupéfiant : il s'agissait d'une attaque hautement coordonnée, menée par un État-nation, utilisant un large éventail de techniques avancées qui semblaient avoir été conçues sur mesure pour un vol de FireEye :

"Les attaquants ont adapté leurs capacités de classe mondiale spécifiquement pour cibler et attaquer FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et ont agi avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions pas été témoins dans le passé".

C'est un véritable cauchemar pour tout RSSI, et si une telle chose arrive à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.

... sauf qu'il s'agit d'une nouvelle encore plus grave pour l'organisation moyenne. FireEye est l'une des entreprises de cybersécurité les plus renommées au monde, et pour réussir cette attaque, il a fallu que des escrocs dignes d'un génie mettent tout ce qu'ils avaient dans une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation lucrative des données peut être possible en exploitant un simple bogue, assez rapidement, sans qu'aucun cerveau ne soit nécessaire. L'injection SQL est un exemple courant de ce type de faille, encore exploitée par des script kiddies qui cherchent à gagner rapidement de l'argent sur le Dark Web.

En mai 2020, un homme a été inculpé de trafic de cartes de crédit et de piratage informatique lorsqu'il a été trouvé en possession de supports numériques stockant des centaines de milliers de numéros de cartes de crédit actives. Il les a récoltés à 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 nous améliorons sans cesse, mais l'injection SQL reste une menace importante et affecte bien plus que les systèmes hérités ou non corrigés.

Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)

Nous répétons sans cesse que l'injection SQL est simple à corriger et que le code devrait ê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 à le faire correctement.

C'est là que la roue commence à vaciller dans le processus de développement de logiciels. Les développeurs commettent les mêmes erreurs, ce qui entraîne l'infiltration de vulnérabilités récurrentes, telles que l'injection SQL, dans la base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir appris grand-chose sur le codage sécurisé, voire rien 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é dans leur rôle.

Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plate-forme solide pour commencer à prendre conscience de la sécurité. De mauvais modèles de codage maintiennent en vie des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, et leur donner le temps d'écrire un code de qualité plus sûr. Les modèles de codage sécurisés peuvent prendre plus de temps à écrire, mais le temps passé à le faire crée des efficacités qui sont inestimables plus tard dans le processus.

Y aura-t-il un jour des funérailles pour les injections SQL ?

La métaphore des funérailles est un peu morbide, mais vraiment, nos données sensibles seraient plus en sécurité si l'injection SQL était enterrée pour de bon. Je suis convaincu que nous fêterons encore quelques anniversaires avant d'en arriver là, car la culture de la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas évolué suffisamment pour commencer à clouer le cercueil.

Des langages plus récents et plus robustes sur le plan de la sécurité, comme Rust, permettent d'éradiquer certains des bogues auxquels nous sommes confrontés depuis longtemps grâce à l'utilisation de fonctions plus sûres, mais il existe une quantité énorme de logiciels hérités, de systèmes plus anciens et de bibliothèques qui continueront d'être utilisés et potentiellement vulnérables.

La responsabilité partagée de la sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons voir les exploits "faciles" disparaître pour de bon. Les développeurs doivent être impliqués dès le départ et soutenus pour assumer 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 élaboré un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger les injections SQL. Complété par un défi ludique dans le langage de programmation de leur choix (même COBOL !), ce guide fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.

Voir la ressource
Voir la ressource

Remplissez le formulaire ci-dessous pour télécharger le rapport

Nous aimerions que vous nous autorisiez à vous envoyer des informations sur nos produits et/ou sur des sujets liés au codage sécurisé. Nous traiterons toujours vos données personnelles avec le plus grand soin et ne les vendrons jamais à d'autres entreprises à des fins de marketing.

Soumettre
Pour soumettre le formulaire, veuillez activer les cookies "Analytics". N'hésitez pas à les désactiver à nouveau une fois que vous aurez terminé.

Une version de cet article a été publiée à l'origine dans Help Net Security. Elle a été mise à jour et publiée ici.

Si vous jouez un rôle pratique dans le domaine de la cybersécurité - un rôle qui exige une certaine familiarité avec le code - il y a de fortes chances que vous ayez eu à penser à l'injection SQL... encore et encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que l'on connaisse son remède assez simple quelques semaines après la première découverte, continue de nuire à nos logiciels et d'offrir 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 l'injection SQL, et bien que cette vulnérabilité soit assez vieille pour être bue, nous la laissons prendre le dessus au lieu de l'écraser pour de bon. En août de cette année, la société Freepik a révélé qu'elle avait été victime d'une injection SQL qui avait compromis les comptes de 8,3 millions d'utilisateurs. Si un certain nombre d'entre eux utilisaient des identifiants de tiers (Google, Facebook, etc.), 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 beaucoup d'autres, les retombées de ces incidents sont un énorme casse-tête, et le rétablissement de la confiance avec la base d'utilisateurs est un processus de longue haleine.

Alors que nous "célébrons" cette étape avec ce qui est considéré comme un problème hérité du passé, disséquons-le un instant. Pourquoi ce problème réapparaît-il sans cesse, pourquoi reste-t-il 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 correction relativement simple n'est-elle pas intégrée dans les normes de référence générales pour le développement de logiciels ?

Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?

Un coup d'œil rapide sur une récente violation très médiatisée, la cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication stupéfiant : il s'agissait d'une attaque hautement coordonnée, menée par un État-nation, utilisant un large éventail de techniques avancées qui semblaient avoir été conçues sur mesure pour un vol de FireEye :

"Les attaquants ont adapté leurs capacités de classe mondiale spécifiquement pour cibler et attaquer FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et ont agi avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions pas été témoins dans le passé".

C'est un véritable cauchemar pour tout RSSI, et si une telle chose arrive à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.

... sauf qu'il s'agit d'une nouvelle encore plus grave pour l'organisation moyenne. FireEye est l'une des entreprises de cybersécurité les plus renommées au monde, et pour réussir cette attaque, il a fallu que des escrocs dignes d'un génie mettent tout ce qu'ils avaient dans une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation lucrative des données peut être possible en exploitant un simple bogue, assez rapidement, sans qu'aucun cerveau ne soit nécessaire. L'injection SQL est un exemple courant de ce type de faille, encore exploitée par des script kiddies qui cherchent à gagner rapidement de l'argent sur le Dark Web.

En mai 2020, un homme a été inculpé de trafic de cartes de crédit et de piratage informatique lorsqu'il a été trouvé en possession de supports numériques stockant des centaines de milliers de numéros de cartes de crédit actives. Il les a récoltés à 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 nous améliorons sans cesse, mais l'injection SQL reste une menace importante et affecte bien plus que les systèmes hérités ou non corrigés.

Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)

Nous répétons sans cesse que l'injection SQL est simple à corriger et que le code devrait ê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 à le faire correctement.

C'est là que la roue commence à vaciller dans le processus de développement de logiciels. Les développeurs commettent les mêmes erreurs, ce qui entraîne l'infiltration de vulnérabilités récurrentes, telles que l'injection SQL, dans la base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir appris grand-chose sur le codage sécurisé, voire rien 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é dans leur rôle.

Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plate-forme solide pour commencer à prendre conscience de la sécurité. De mauvais modèles de codage maintiennent en vie des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, et leur donner le temps d'écrire un code de qualité plus sûr. Les modèles de codage sécurisés peuvent prendre plus de temps à écrire, mais le temps passé à le faire crée des efficacités qui sont inestimables plus tard dans le processus.

Y aura-t-il un jour des funérailles pour les injections SQL ?

La métaphore des funérailles est un peu morbide, mais vraiment, nos données sensibles seraient plus en sécurité si l'injection SQL était enterrée pour de bon. Je suis convaincu que nous fêterons encore quelques anniversaires avant d'en arriver là, car la culture de la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas évolué suffisamment pour commencer à clouer le cercueil.

Des langages plus récents et plus robustes sur le plan de la sécurité, comme Rust, permettent d'éradiquer certains des bogues auxquels nous sommes confrontés depuis longtemps grâce à l'utilisation de fonctions plus sûres, mais il existe une quantité énorme de logiciels hérités, de systèmes plus anciens et de bibliothèques qui continueront d'être utilisés et potentiellement vulnérables.

La responsabilité partagée de la sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons voir les exploits "faciles" disparaître pour de bon. Les développeurs doivent être impliqués dès le départ et soutenus pour assumer 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 élaboré un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger les injections SQL. Complété par un défi ludique dans le langage de programmation de leur choix (même COBOL !), ce guide fournit un excellent apprentissage de base qui aidera chaque développeur à créer un code plus sûr et de meilleure qualité.

Accès aux ressources

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émonstration
Partager sur :
Vous souhaitez en savoir plus ?

Partager sur :
Auteur
Matias Madou, Ph.D.
Publié le 17 mars 2021

Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.

Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.

Partager sur :

Une version de cet article a été publiée à l'origine dans Help Net Security. Elle a été mise à jour et publiée ici.

Si vous jouez un rôle pratique dans le domaine de la cybersécurité - un rôle qui exige une certaine familiarité avec le code - il y a de fortes chances que vous ayez eu à penser à l'injection SQL... encore et encore et encore. Il s'agit d'une vulnérabilité courante qui, bien que l'on connaisse son remède assez simple quelques semaines après la première découverte, continue de nuire à nos logiciels et d'offrir 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 l'injection SQL, et bien que cette vulnérabilité soit assez vieille pour être bue, nous la laissons prendre le dessus au lieu de l'écraser pour de bon. En août de cette année, la société Freepik a révélé qu'elle avait été victime d'une injection SQL qui avait compromis les comptes de 8,3 millions d'utilisateurs. Si un certain nombre d'entre eux utilisaient des identifiants de tiers (Google, Facebook, etc.), 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 beaucoup d'autres, les retombées de ces incidents sont un énorme casse-tête, et le rétablissement de la confiance avec la base d'utilisateurs est un processus de longue haleine.

Alors que nous "célébrons" cette étape avec ce qui est considéré comme un problème hérité du passé, disséquons-le un instant. Pourquoi ce problème réapparaît-il sans cesse, pourquoi reste-t-il 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 correction relativement simple n'est-elle pas intégrée dans les normes de référence générales pour le développement de logiciels ?

Pourquoi l'injection SQL est-elle toujours d'actualité en 2021 ?

Un coup d'œil rapide sur une récente violation très médiatisée, la cyberattaque dévastatrice contre FireEye, révèle un niveau de sophistication stupéfiant : il s'agissait d'une attaque hautement coordonnée, menée par un État-nation, utilisant un large éventail de techniques avancées qui semblaient avoir été conçues sur mesure pour un vol de FireEye :

"Les attaquants ont adapté leurs capacités de classe mondiale spécifiquement pour cibler et attaquer FireEye. Ils sont hautement qualifiés en matière de sécurité opérationnelle et ont agi avec discipline et concentration... Ils ont utilisé une combinaison inédite de techniques dont nous ou nos partenaires n'avions pas été témoins dans le passé".

C'est un véritable cauchemar pour tout RSSI, et si une telle chose arrive à FireEye, cela met en perspective la vulnérabilité réelle de nombreuses entreprises.

... sauf qu'il s'agit d'une nouvelle encore plus grave pour l'organisation moyenne. FireEye est l'une des entreprises de cybersécurité les plus renommées au monde, et pour réussir cette attaque, il a fallu que des escrocs dignes d'un génie mettent tout ce qu'ils avaient dans une exécution coordonnée et à grande échelle. Pour de nombreuses entreprises, une violation lucrative des données peut être possible en exploitant un simple bogue, assez rapidement, sans qu'aucun cerveau ne soit nécessaire. L'injection SQL est un exemple courant de ce type de faille, encore exploitée par des script kiddies qui cherchent à gagner rapidement de l'argent sur le Dark Web.

En mai 2020, un homme a été inculpé de trafic de cartes de crédit et de piratage informatique lorsqu'il a été trouvé en possession de supports numériques stockant des centaines de milliers de numéros de cartes de crédit actives. Il les a récoltés à 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 nous améliorons sans cesse, mais l'injection SQL reste une menace importante et affecte bien plus que les systèmes hérités ou non corrigés.

Pourquoi les développeurs le maintiennent en vie (et pourquoi ce n'est pas de leur faute)

Nous répétons sans cesse que l'injection SQL est simple à corriger et que le code devrait ê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 à le faire correctement.

C'est là que la roue commence à vaciller dans le processus de développement de logiciels. Les développeurs commettent les mêmes erreurs, ce qui entraîne l'infiltration de vulnérabilités récurrentes, telles que l'injection SQL, dans la base de code. Cependant, cela ne devrait pas être une surprise. La plupart des ingénieurs obtiennent leur diplôme sans avoir appris grand-chose sur le codage sécurisé, voire rien 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é dans leur rôle.

Nous ne donnons pas aux développeurs une raison de se préoccuper de la sécurité, ni une plate-forme solide pour commencer à prendre conscience de la sécurité. De mauvais modèles de codage maintiennent en vie des bogues tels que l'injection SQL, et nous devons mettre davantage l'accent sur la sensibilisation des développeurs à la sécurité, et leur donner le temps d'écrire un code de qualité plus sûr. Les modèles de codage sécurisés peuvent prendre plus de temps à écrire, mais le temps passé à le faire crée des efficacités qui sont inestimables plus tard dans le processus.

Y aura-t-il un jour des funérailles pour les injections SQL ?

La métaphore des funérailles est un peu morbide, mais vraiment, nos données sensibles seraient plus en sécurité si l'injection SQL était enterrée pour de bon. Je suis convaincu que nous fêterons encore quelques anniversaires avant d'en arriver là, car la culture de la sécurité préventive et l'accent mis sur le codage sécurisé n'ont tout simplement pas évolué suffisamment pour commencer à clouer le cercueil.

Des langages plus récents et plus robustes sur le plan de la sécurité, comme Rust, permettent d'éradiquer certains des bogues auxquels nous sommes confrontés depuis longtemps grâce à l'utilisation de fonctions plus sûres, mais il existe une quantité énorme de logiciels hérités, de systèmes plus anciens et de bibliothèques qui continueront d'être utilisés et potentiellement vulnérables.

La responsabilité partagée de la sécurité dans le processus de développement (bonjour, DevSecOps) sera cruciale si nous voulons voir les exploits "faciles" disparaître pour de bon. Les développeurs doivent être impliqués dès le départ et soutenus pour assumer 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 élaboré un guide complet pour les développeurs qui souhaitent apprendre à identifier et à corriger les injections SQL. Complété par un défi ludique dans le langage de programmation de leur choix (même COBOL !), ce guide 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

Voir la ressource
Vous souhaitez en savoir plus ?

Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

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écharger
Partager sur :
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles