In this article
Les contrôles de sécurité des applications expliqués
Que sont les contrôles de sécurité des applications ?
Dans la hiérarchie de la sécurité, les contrôles de sécurité des applications viennent après les normes et les politiques. Les politiques définissent les exigences en matière de sécurité et de protection des applications, tandis que les normes établissent des règles pour les faire respecter. Les contrôles de sécurité des applications sont les mesures précises que les développeurs ou d’autres équipes doivent mettre en œuvre pour appliquer ces normes. La responsabilité des contrôles applicatifs est partagée entre plusieurs services, mais les développeurs jouent un rôle essentiel. Les solutions de sécurité des applications comme Snyk peuvent vous aider à définir et à mettre en œuvre ces politiques et ces contrôles.
Pourquoi les contrôles de sécurité des applications sont-ils importants ?
Les applications permettent aux employés d’accéder facilement aux données et aux ressources système. Elles offrent également aux pirates de nouveaux moyens de pénétrer les systèmes centraux. Les organisations sont donc confrontées à un dilemme : elles doivent garantir la sécurité des applications tout en limitant les perturbations pour les processus internes et les parties prenantes. Des contrôles applicatifs robustes ajoutent une couche de sécurité supplémentaire, facilitent le triage en cas de violation et donnent aux organisations une vision plus complète des applications de leur environnement. Il est également essentiel que les entreprises veillent à utiliser des contrôles de sécurité des applications pour améliorer leur posture de sécurité.
Les avantages des contrôles de sécurité des applications
Les contrôles de sécurité sont un élément clé du programme de sécurité d’une entreprise. Tout d’abord, ils empêchent l’exploitation des vulnérabilités des applications, réduisant ainsi le risque de violation et son coût potentiel. Ils offrent également une meilleure visibilité sur les applications, le trafic et les données qui circulent sur le réseau.
Les applications sont classées selon leur niveau de menace et leur fonction métier afin d’évaluer leurs vulnérabilités. Les contrôles peuvent ensuite être adaptés à chaque application, ce qui permet aux organisations d’appliquer des normes tout en perturbant le moins possible les workflows existants.
L’exécution des applications est automatiquement contrôlée à l’aide de listes d’autorisation et de blocage. Cette approche améliore l’efficacité, en particulier dans les grandes organisations dont les hôtes sont gérés de manière centralisée. En outre, le contrôle des applications permet d’identifier celles qui consomment beaucoup de ressources et d’organiser le trafic associé, ce qui améliore la stabilité globale du réseau.
Les contrôles applicatifs ouvrent également la voie à de nouvelles approches de surveillance des menaces. Par exemple, le trafic peut être comparé à des modèles réseau afin d’identifier les comportements anormaux.
Quels sont les types de contrôles de sécurité des applications ?
Il existe de nombreux types de contrôles de sécurité des applications. Les développeurs ne sont pas responsables de tous ces contrôles, qui sont différents des techniques de programmation, mais il est judicieux de connaître les différentes approches :
Vérifications d’exhaustivité
Elles garantissent que toutes les entrées d’un champ de saisie de données sont renseignées. Par exemple, les entreprises doivent recertifier périodiquement les utilisateurs des applications afin de s’assurer que seules les personnes autorisées accèdent aux informations sensibles. Dans le cadre de ce processus, une vérification d’exhaustivité confirme que tous les utilisateurs et leurs privilèges ont bien été recertifiés.
Vérifications de validité
Elles garantissent que les données répondent à des critères prédéfinis, afin que seules des données validées soient saisies ou traitées.
Identification
L’identification précise et unique des utilisateurs permet aux organisations de limiter l’accès aux utilisateurs ou aux groupes autorisés, et ainsi de mettre en place une sécurité Zero Trust. Même si un appareil est compromis, seuls les utilisateurs authentifiés peuvent accéder aux données sensibles via une application.
Classification
Prérequis aux contrôles : les données sont classées par groupes selon leur niveau de sensibilité, les risques, les exigences de conformité réglementaire ou d’autres caractéristiques pertinentes.
Journalisation
En cas de violation ou d’activité suspecte, la journalisation permet d’examiner l’activité de tout utilisateur et d’auditer pleinement l’incident. Il est essentiel de définir des normes de journalisation de sécurité précisant les événements à enregistrer.
Chiffrement
Le chiffrement peut s’appliquer à des fichiers individuels ou à plus grande échelle. Inutile de réinventer la roue : il existe des algorithmes de chiffrement open source et des outils de gestion des secrets qui protègent les données au repos et en transit.
Authentification
Ces contrôles vérifient la validité de l’identité revendiquée par un utilisateur ou un composant logiciel, condition préalable à l’application d’une gouvernance des accès fondée sur l’identité.
Contrôles d’accès
Ils limitent l’accès au système applicatif aux utilisateurs, adresses IP ou applications autorisés. Les listes d’autorisation et de blocage des applications sont deux approches du contrôle d’accès. Une liste d’autorisation limite l’accès à une liste d’entités approuvées, tandis qu’une liste de blocage autorise automatiquement l’accès, à l’exception des entités qui y figurent.
Contrôles des entrées
Ils garantissent que seules les entrées autorisées peuvent alimenter le système applicatif.
Deux référentiels de contrôles de sécurité des applications
Étant donné le grand nombre de types de contrôles, il est important d’adopter une approche systématique. Vous pouvez notamment les répartir en contrôles de détection, correctifs ou préventifs. Un autre cadre les classe en contrôles physiques, techniques et administratifs. Une troisième approche consiste à distinguer les contrôles des entrées, du traitement et des sorties.
Pour les développeurs de logiciels, les contrôles portent évidemment sur les pratiques de codage sécurisé. Pourtant, les organisations manquent souvent de référentiels pour les guider. Des organismes de sécurité de premier plan ont publié des référentiels de contrôles applicatifs. Nombre de ces contrôles relèvent de la responsabilité partagée des administrateurs réseau, des équipes de sécurité ou de l’ensemble de l’organisation, mais certains visent spécifiquement à fournir aux développeurs des outils pour développer en tenant compte de la sécurité :
CIS Critical Security Controls
Par exemple, le Center for Internet Security (CIS) maintient un référentiel de 18 Critical Security Controls, dont le contrôle 16 est consacré à la sécurité des applications. Les mesures recommandées consistent notamment à former les développeurs aux pratiques de programmation sécurisée pour éviter l’introduction de failles, à mettre en place des processus de traitement des vulnérabilités logicielles et à utiliser des outils qui surveillent la mise en œuvre des politiques propres aux applications.
Le CIS recommande d’intégrer directement ces outils de gestion des vulnérabilités au cycle de vie du développement logiciel, le plus tôt possible, et de prévoir des mécanismes d’analyse des causes profondes, de vérification des applications tierces, de détection automatique des erreurs et d’évaluation de la gravité des vulnérabilités.
Les contrôles doivent être élaborés à l’aide de méthodes d’évaluation des risques, notamment la modélisation des menaces. Le CIS recommande également d’utiliser des modèles de renforcement de la sécurité pour les bases de données, de déployer des pare-feu d’applications web et de séparer les systèmes de production des systèmes hors production.
OWASP Proactive Controls
La Open Web Application Security Project® Foundation (OWASP), organisation à but non lucratif qui publie des ressources pour promouvoir la sécurité des applications, propose un autre référentiel, devenu de facto la norme pour les contrôles applicatifs proactifs dans le cycle de vie du développement logiciel.
Les recommandations sont présentées par ordre d’importance :
1. Définir les exigences de sécurité :
Déplacer la sécurité vers la gauche commence dès la phase de planification. À quelles exigences précises répondrez-vous dans une version ? Quelles lacunes l’application actuelle présente-t-elle ? Passez ensuite à la mise en œuvre de la norme et à sa vérification avant de déployer la nouvelle version en production.
2. S’appuyer sur des frameworks et des bibliothèques de sécurité
Le contrôle des applications modernes prend une nouvelle dimension avec le nombre de bibliothèques tierces et de composants open source qu’elles intègrent. Cette étape permet de vérifier que ces composants proviennent de sources fiables et sont à jour. Des outils proactifs d’identification des dépendances et des vulnérabilités sont utiles, comme Dependency Check de l’OWASP ou Snyk.
3. Sécuriser l’accès aux bases de données
Cela implique d’adopter des pratiques de requête sécurisées, comme la paramétrisation des requêtes pour atténuer les injections SQL, de sécuriser l’authentification et la configuration des bases de données, ainsi que les communications (par exemple, les API et les services).
4. Encoder et échapper les données
Pour empêcher les attaques par injection. Le cross-site scripting (XSS) et l’injection de commandes dans le système d’exploitation illustrent comment des données peuvent circuler dans le système et entraîner l’exécution de code malveillant.
5. Valider toutes les entrées
La validation des entrées ne constitue pas une règle de sécurité universelle. Elle ne peut, par exemple, empêcher les attaques XSS ou les injections SQL. Toutefois, vérifier que les données sont valides sur le plan syntaxique et sémantique avant leur saisie dans un système contribue à réduire la surface d’attaque.
6. Mettre en œuvre une identité numérique
C’est l’équivalent numérique d’un contrôle à l’aéroport. La vérification d’une identité numérique nécessite des contrôles tels que des mots de passe, l’authentification multifacteur (qui ne devrait pas se limiter aux SMS) ou l’authentification cryptographique matérielle. La gestion des identités exige également une mise en œuvre rigoureuse de la gestion des sessions, ainsi que des pratiques sécurisées pour les cookies et les jetons.
7. Appliquer les contrôles d’accès
Cela commence par une architecture conçue dès le départ pour être sécurisée. Par exemple, au lieu de s’appuyer sur des règles d’accès basées sur les rôles, faites passer les requêtes par une couche de vérification du contrôle d’accès et utilisez des vérifications fondées sur les capacités dans le code. Vous éviterez ainsi d’utiliser le code de l’application pour appliquer les politiques. Par défaut, l’accès doit être refusé et accordé selon le principe du moindre privilège : accordez uniquement les privilèges nécessaires aux utilisateurs pour accomplir leurs tâches. Tous les événements d’accès doivent être consignés dans les journaux de sécurité.
8. Protéger les données partout
Cela comprend :
Sécuriser les données au repos à l’aide de solutions cryptographiques ou des fonctionnalités de sécurité intégrées aux logiciels et services cloud.
Éviter de stocker des données lorsque c’est possible.
Sécuriser les données en transit à l’aide de protocoles à jour (par ex. HTTPS, TLS 1.3).
Utiliser des outils de gestion des secrets pour protéger les certificats, les mots de passe et autres secrets.
9. Mettre en place la journalisation et la surveillance de sécurité
Une journalisation axée sur la sécurité permet la surveillance en temps réel, l’analyse forensique et la conformité réglementaire. L’utilisation d’un framework comme Apache Logging Services permet d’automatiser les réponses aux activités suspectes. La journalisation comporte elle-même des risques : il est donc important d’encoder et de valider les données avant de les consigner, puis de stocker les journaux dans un service sécurisé.
10. Gérer toutes les erreurs et exceptions
Mettez en place un système de gestion des erreurs. Cela permet non seulement d’éviter les arrêts système, mais aussi d’empêcher la divulgation d’informations sensibles dans les messages d’erreur ou d’exception. Il est essentiel de gérer les exceptions de manière centralisée, de traiter les comportements inattendus des applications et de consigner toutes les exceptions.
Les référentiels du CIS et de l’OWASP soulignent tous deux que les développeurs, qui conçoivent les applications, doivent tenir compte de la sécurité pendant le codage, qu’il s’agisse d’applications web, d’interfaces utilisateur, de la logique métier sous-jacente ou d’autres composants d’une application.
Découvrez d’autres conseils pour mettre en œuvre les contrôles proactifs OWASP Top 10.
Comment mettre en œuvre les contrôles de sécurité des applications avec Snyk
La responsabilité de la bonne mise en œuvre des contrôles de sécurité des applications incombe de plus en plus aux développeurs. Même des oublis mineurs, comme ne pas chiffrer des informations sensibles ou ne pas protéger des fichiers ou des répertoires, peuvent avoir des conséquences désastreuses. La violation de données de Capital One, par exemple, a commencé par une légère erreur de configuration qui a permis à un attaquant de télécharger les informations de plus de 100 millions de demandes de crédit depuis un bucket Amazon S3.
Ces erreurs de configuration sont faciles à détecter avec des outils automatisés, ce qui en fait une cible de choix pour les acteurs malveillants. Il est essentiel que les développeurs utilisent également des outils automatisés pour détecter et corriger ces vulnérabilités. Snyk propose plusieurs outils qui s’intègrent aux outils CI/CD afin de détecter automatiquement les vulnérabilités ou les erreurs de configuration et de fournir des conseils de correction contextualisés. Les contrôles de sécurité des applications peuvent ainsi être définis et appliqués tout au long du pipeline CI/CD.
Sécurisez vos applications avec notre outil pensé pour les développeurs
Des conseils efficaces et concrets en sécurité des applications, dans vos IDE, dépôts, conteneurs et pipelines.
Créez un compte gratuit et découvrez par vous-même à quel point il est facile de gérer les contrôles de sécurité des applications avec Snyk.