15 meilleures pratiques de sécurité des applications
Daniel Berman
8 octobre 2020
0 minutes de lectureLe monde du développement d’applications a connu une croissance sans précédent depuis 2010. Les millions d’applications mobiles et web disponibles ont fait des applications un élément essentiel de notre vie quotidienne. En parallèle, on a assisté à une augmentation du développement de l’internet des objets (IoT), qui a permis l’automatisation des processus manuels.
Mais ces évolutions positives ont également entraîné toute une série de problèmes, les questions de sécurité étant notamment devenues monnaie courante. Alors que la majorité des développeurs et des entreprises estiment que leurs applications sont suffisamment sécurisées, ils continuent à pousser du code vulnérable dans les versions de production.
Plus d’applications, plus de problèmes de [sécurité]
La sécurité des applications se heurte à différents défis, notamment :
Programmeurs amateurs : alors que la demande d’applications augmente, le manque de développeurs qualifiés a conduit un grand nombre de programmeurs amateurs à écrire des applications mobiles. Trop souvent, les équipes de développement n’ont pas non plus les connaissances nécessaires pour résoudre les problèmes de sécurité qui se posent.
Utilisation inefficace des outils : il est fréquent que les développeurs n’utilisent pas efficacement les outils de test dans lesquels ils ont investi. Et beaucoup pensent que ces outils vont ralentir le processus de développement.
Vecteur d’attaque des applications Web : les applications web sont le principal vecteur d’attaque dans les fuites de données. Les entreprises doivent donc être conscientes de la présence d’API dans leurs apps et des risques associés. De nombreuses violations d’API touchent les entreprises qui ignorent que ces interfaces sont présentes dans leurs solutions.
Absence d’approche DevSecOps : la plupart des entreprises ne suivent pas les meilleures pratiques de sécurité des applications pour sécuriser leurs logiciels. Elles négligent souvent de mettre en œuvre un processus DevSecOps (« l’approche shift-left »), pourtant indispensable pour s’assurer que chaque problème lié à la sécurité est traité et résolu le plus rapidement possible.
Vulnérabilités open source : les logiciels open source, avec le grand nombre de vulnérabilités qu’ils contiennent, sont une source de risque. On estime que 96 % des applications du marché des entreprises utilisent des logiciels et des bibliothèques open source.
En suivant les préconisations de la liste de contrôle de la sécurité des applications ci-dessous, vous pouvez éviter ces pièges et atteindre un niveau de sécurité plus élevé pour vos applications.
En ce qui concerne les meilleures pratiques de sécurité lors du développement d’applications et de sécurité des applications web, les similitudes existant entre les processus de développement de logiciels web, mobiles et de bureau signifient que les mêmes meilleures pratiques de sécurité s’appliquent souvent aux deux.
Vérificateur de code gratuit
Sécurisez votre code avant votre prochaine livraison.
Liste des 15 meilleures pratiques pour la sécurité des applications
N°1 : Adoptez une approche DevSecOps
L’approche DevSecOps, ou approche shift left, vise à détecter les failles de sécurité dès le premier jour, afin de prévenir les problèmes de sécurité et de les résoudre le plus rapidement possible s’ils surviennent effectivement. DevSecOps permet aux équipes de développement de repérer les problèmes de sécurité à tous les stades de la chaîne d’approvisionnement des logiciels, de la conception à la mise en œuvre.
N 2 : Mettez en place un processus de gestion SDLC sécurisé
Le processus de gestion du cycle de vie du développement logiciel sécurisé (SSDLC) définit le cycle de vie du produit du point de vue de la sécurité du produit. Ce processus garantit que les produits dans leur cycle de vie sont :
développés et maintenus par des employés formés à la sécurité ;
créés dans un environnement sécurisé, dans le respect des meilleures pratiques de sécurité des logiciels ;
livrés de manière sécurisée aux clients.
Le SSDLC s’applique au processus holistique de développement d’un nouveau produit depuis le concept, à travers toutes les activités de développement, jusqu’à son déploiement complet et sécurisé sur le marché en tant que produit mature et jusqu’à la fin de son cycle de vie.
N°3 : Corrigez les vulnérabilités open source
Si les outils à code source ouvert offrent un grand nombre d’avantages, notamment en termes de rentabilité, ils vous exposent également à des vulnérabilités importantes. Lors de l’utilisation de logiciels open source, il est donc indispensable de surveiller en permanence les vulnérabilités, de procéder à des mises à jour régulières et de corriger les vulnérabilités aussi rapidement que possible.
N°4 : Automatisez les tâches de sécurité simples
Il est pratiquement impossible d’atténuer le nombre infini de vulnérabilités qui existent en recourant à une simple approche manuelle. L’automatisation est donc essentielle. Toutes les tâches simples doivent être automatisées afin de permettre aux équipes de se concentrer sur des tâches plus complexes.
N°5 : Connaissez vos actifs
La visibilité est la première étape vers une meilleure compréhension de l’état de la sécurité de votre organisation, car vous ne pouvez pas sécuriser ce que vous n’avez pas identifié. Il est essentiel de connaître précisément les actifs qui composent vos applications et votre infrastructure de production de logiciels.
N°6 : Évaluez les risques
Faites une évaluation des risques en vous mettant à la place de l’attaquant. Assurez-vous que toutes vos bases sont couvertes :
Créez une liste de tous les actifs qui doivent être protégés.
Identifiez vos menaces et comment les isoler et les contenir.
Identifiez les vecteurs d’attaque qui font courir à votre application le risque d’être compromise.
Assurez-vous que vous avez mis en place les mesures de sécurité appropriées pour détecter et prévenir les attaques.
Déterminez si vous avez besoin d’outils supplémentaires, ou peut-être différents.
N°7 : Formez les développeurs à la sécurité
Les développeurs étant également responsables de la mise en production du code, il est essentiel qu’ils reçoivent une formation de votre équipe de sécurité. Cette formation doit bien sûr être adaptée au rôle spécifique du développeur et à ses besoins en matière de sécurité.
N°8 : Gérez les conteneurs de manière appropriée
Tout d’abord, vous devez vous assurer que vos images de conteneurs sont signées avec un outil de signature numérique (par exemple, Docker Content Trust). Il est également important d’exécuter des analyses automatiques des vulnérabilités open source pour sécuriser l’utilisation du conteneur tout au long du pipeline d’intégration commun.
N°9 : Limitez l’accès des utilisateurs aux données
Limiter davantage l’accès à vos données constitue l’un des meilleurs moyens d’améliorer la sécurité :
Déterminez qui a réellement besoin d’accéder à chaque ressource spécifique.
Créez des règles d’accès.
Assurez-vous que les privilèges d’accès restent à jour en supprimant les informations d’identification actives une fois que l’accès aux données n’est plus nécessaire.
N°10 : Installez les mises à jour et appliquez des correctifs régulièrement
L’installation de mises à jour et de correctifs est l’un des moyens les plus efficaces de sécuriser vos logiciels. Pourquoi tenter de résoudre les problèmes vous-même et vous priver des solutions existantes ? Il est toutefois important de prévoir chaque nouvelle mise à jour, car cela nécessite de concevoir l’architecture appropriée afin d’éviter les problèmes de compatibilité des API lors de la mise à niveau vers de nouvelles versions.
N°11 : Assurez l’accès aux données de log
Avoir accès aux données de journal de vos opérations cloud quotidiennes est essentiel à tout plan de réponse aux incidents. L’accumulation et l’interprétation de ces données dans la période précédant un incident auront un impact direct sur la sécurité et peuvent également être pertinentes pour les enquêtes ultérieures. Sans ces connaissances, vous risquez de rester impuissant si un incident de sécurité se produit.
N°12 : Chiffrez vos données
En ce qui concerne les meilleures pratiques de sécurité des applications web, le chiffrement des données au repos et en transit est essentiel. Le chiffrement de base doit comprendre, entre autres, l’utilisation d’un SSL avec un certificat à jour. Il est inacceptable que les données sensibles des utilisateurs, comme les identifiants et les mots de passe, soient stockées en texte clair, car cela pourrait conduire à des attaques de type man-in-the-middle (MITM). Assurez-vous d’utiliser les algorithmes de chiffrement les plus puissants.
N°13 : Utilisez le test d’intrusion
Bien que les tests automatisés parviennent à contrer la plupart des problèmes de sécurité avant lancement, il peut encore exister des lacunes potentielles passées inaperçues. Pour minimiser ce risque, il est utile de faire appel à un pentester expérimenté afin de tester l’application. Ce type de pirate éthique tente de s’introduire dans l’application afin de détecter les vulnérabilités et de trouver des vecteurs d’attaque potentiels dans le but de protéger le système contre une attaque réelle. Il est important de faire appel à un expert externe qui ne soit pas impliqué dans le projet.
N°14 : Assurez une validation précise des entrées
Il est important que toutes les données d’entrée soient syntaxiquement et sémantiquement correctes. La longueur des données doit être validée : elles doivent comprendre le nombre attendu de chiffres et de caractères, être de la bonne taille, de la bonne longueur, etc. Bien que la liste blanche soit recommandée, cette méthode de validation n’est pas toujours possible à mettre en œuvre.
N°15 : Cherchez des solutions permanentes
En analysant les listes sur les vulnérabilités et expositions courantes, on remarque aisément que certains types de vulnérabilités reviennent de temps en temps (par exemple, attaque sur les éléments dynamiques (XSS), Injection SQL, dépassement de tampon). Déterminer la cause première lorsqu’une nouvelle vulnérabilité se présente - plutôt que d’exécuter un correctif partiel - est donc essentiel pour l’éradiquer définitivement.
Conclusion
Bien qu’il existe certainement une grande variété de points de vue et d’opinions parmi les experts de la sécurité en matière de meilleures pratiques de la sécurité des applications, la plupart d’entre eux s’accordent à dire que certains points clés, tels que ceux abordés ici, devraient figurer dans toute liste de contrôle de la sécurité des applications.
Cependant, c’est toujours judicieux d’être plus protégé que les autres et de faire tout son possible pour minimiser le nombre d’erreurs dans vos applications : vous serez ainsi une cible plus difficile à attaquer.
Foire aux questions sur la sécurité des applications
Qu’est-ce que la sécurité des applications ?
La sécurité des applications est le processus consistant à identifier et à adresser les vulnérabilités au niveau des applications. Elle est suivie par des procédures de renforcement qui visent à augmenter la sécurité globale de l’application.
Quels outils de test de sécurité des applications sont recommandés ?
Il n’existe aucun outil ou protocole de test capable d’atténuer tous les risques de sécurité possibles. À défaut, les équipes doivent appliquer une combinaison d’outils, notamment des tests de sécurité des applications statiques (SAST), des tests de sécurité des applications interactifs (IAST), des tests de sécurité des applications dynamiques (DAST) et des outils de test d’analyse de la composition des logiciels (SCA).
Quelles sont les principales approches des tests de sécurité des applications ?
L’un des principaux moyens de détecter les vulnérabilités dans le code source de votre produit consiste à utiliser des outils de test de sécurité des applications statiques (SAST). Contrairement aux outils SAST, les outils de test de sécurité des applications dynamiques (DAST) détectent les vulnérabilités en essayant activement d’exploiter votre application en cours d’exécution.
Sécurisez vos applications avec notre outil au service des développeurs
Des conseils pour la sécurité des applications efficaces et concrets concernant les IDE, les référentiels, les conteneurs et les pipelines.