Bon anniversaire à l'injection SQL, le bogue qui ne peut être écrasé
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é.
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.
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émonstrationMatias 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.
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é.
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é.
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émonstrationMatias 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.
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
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é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
La note de confiance révèle la valeur des initiatives d'amélioration de la sécurité par la conception
Nos recherches ont montré que la formation au code sécurisé fonctionne. Le Trust Score, qui utilise un algorithme s'appuyant sur plus de 20 millions de points de données d'apprentissage issus du travail de plus de 250 000 apprenants dans plus de 600 organisations, révèle son efficacité à réduire les vulnérabilités et la manière de rendre l'initiative encore plus efficace.
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.