Avec le nombre croissant d’applications proposées aux consommateurs, la perspective d’effectuer des tests d’intrusion sur chaque application avec un budget limité devient de plus en plus décourageante et apparemment impossible pour la plupart des organisations. Cela dit, les risques liés aux applications ne pourront jamais être suffisamment atténués en s’appuyant uniquement sur l’analyse automatisée, en raison de la nature personnalisée des applications modernes. Cela peut conduire à des décisions difficiles lorsqu’il s’agit d’établir une stratégie rentable pour la sécurité des applications.
Cet article passe en revue les principaux défis liés aux tests de sécurité pour les applications web, les différentes lacunes des analyses automatisées ainsi que les solutions potentielles pour les organisations disposant de ressources limitées et cherchant à sécuriser leurs applications mobiles ou web contre les cyberattaques.
Quelle est la technique la mieux adaptée à vos besoins ?
Tous les professionnels du secteur s’accordent à dire que les applications ne peuvent pas être suffisamment sécurisées en s’appuyant uniquement sur des analyses automatisées. Il va sans dire que le balayage automatisé n’est pas un problème en soi, mais plutôt le contexte dans lequel il est souvent effectué. Il peut s’agir d’un excellent point de départ pour ceux qui ne disposent pas d’un budget suffisant pour procéder à des tests de sécurité fréquents pour toutes leurs applications, mais il ne doit pas être votre seul recours. En règle générale, trois approches principales sont utilisées pour tester la sécurité d’une application, et elles varient en termes de profondeur, de précision et de coût. Ces techniques doivent être utilisées à une fréquence différente en raison des résultats différents qu’elles produisent et doivent être combinées pour obtenir une stratégie de gestion des risques à toute épreuve.
- Scans automatisés
- Scans automatisés + validation manuelle
- Tests de pénétration des applications (analyse automatisée + validation manuelle + tests manuels)
Pour déterminer l’option la mieux adaptée à chaque application, il est courant d’adopter une approche basée sur le risque pour hiérarchiser les applications. Cette approche basée sur le risque est utilisée pour influencer le type d’évaluation que chaque application requiert et sur quelle base, en fonction d’une variété de facteurs tels que : le degré de sensibilité des données traitées, le type de changements récemment apportés à l’application, le nombre d’intégrations tierces, la date de la dernière évaluation approfondie, etc. En fonction de ces facteurs, vos parties prenantes peuvent décider d’opter pour une analyse entièrement automatisée ou pour un test manuel approfondi.
Bien qu’une approche basée sur les risques soit un moyen efficace de déterminer le type d’évaluation à utiliser pour une application, elle conduit souvent à la conclusion que l’analyse automatisée seule est acceptable pour certaines applications, alors qu’en fait, c’est rarement le cas. La grande majorité des applications nécessitent toujours un test d’intrusion manuel régulier, bien que sa fréquence puisse être ajustée en fonction d’une série de facteurs évoqués précédemment. Le point suivant abordera certaines des raisons pour lesquelles il ne devrait pas s’agir de votre seul recours pour tester votre application.
S’appuyer à 100 % sur des analyses automatisées expose les entreprises à des cyberattaques
Si les analyses automatisées jouent un rôle important dans une stratégie de cybersécurité efficace, elles ne doivent pas être la seule option pour évaluer la cybersécurité de votre application. La raison en est simple : la plupart des applications contiennent trop d’éléments propriétaires et une logique d’entreprise unique qu’un scanner automatique ne peut pas contextualiser avec précision. Les validations effectuées par un scanner ne peuvent pas identifier de manière précise et systématique les vulnérabilités les plus critiques et les plus graves présentes dans les applications modernes, telles que les contournements d’authentification ou les faiblesses du contrôle d’accès. Ces vulnérabilités peuvent avoir de graves conséquences lorsqu’elles sont exploitées par des pirates informatiques et nécessitent des tests pratiques pour être identifiées, car elles sont souvent liées aux propriétés et actions uniques de votre application.
Les tests automatisés donnent souvent un faux sentiment de sécurité aux organisations qui s’y fient à 100 %, car elles ont tendance à penser que leur application a été sécurisée avec succès, alors qu’en réalité de nombreuses vulnérabilités critiques ont été laissées de côté. Comme le montrent les exemples ci-dessous, les tests automatisés, même avec une validation manuelle, peuvent exposer les organisations à des cyberattaques, car elles estimeront que leur application ne nécessite plus d’évaluation. Les résultats surlignés en vert représentent des vulnérabilités qui n’auraient pas été prises en compte si l’organisation s’était appuyée uniquement sur des analyses automatisées, ce qui l’aurait exposée à divers scénarios d’attaque.
Scénario de test #1 : Application destinée au public
Niveau de risque | Vulnérabilité | Méthodologie |
Critique | Contournement de l’autorisation par une clé contrôlée par l’utilisateur | Guide de l’Acheteur |
Haut | Contrôle d’accès faible – Page accessible sans authentification | Guide de l’Acheteur |
Haut | Falsification de requête côté serveur | Numérisation automatisée |
Haut | Cryptage non appliqué | Numérisation automatisée |
Moyen | Contrôle d’accès inapproprié – Navigation forcée | Guide de l’Acheteur |
Moyen | Expiration de la session insuffisante | Guide de l’Acheteur |
Moyen | Contrôle de sécurité côté client sans application côté serveur | Guide de l’Acheteur |
Moyen | Attribut HTTP-only manquant dans le cookie de session | Numérisation automatisée |
Moyen | Composants logiciels vulnérables | Numérisation automatisée |
Faible | Divulgation des adresses IP et des noms d’hôtes privés | Numérisation automatisée |
Faible | Divulgation d’informations – <Redacted> Endpoints | Numérisation automatisée |
Dans cette application, une analyse automatisée aurait manqué 5 vulnérabilités importantes qui auraient pu permettre à un pirate d’accéder aux données sensibles des clients et, dans certains cas, d’escalader les privilèges pour accéder à des fonctions administratives.
Scénario de test n°2 : Application de commerce électronique
Niveau de risque | Vulnérabilité | Méthodologie |
Critique | Cryptage non appliqué | Numérisation automatisée |
Critique | Escalade de privilèges par manipulation de l’authentification | Guide de l’Acheteur |
Critique | Un changement de mot de passe non vérifié entraîne une escalade des privilèges | Guide de l’Acheteur |
Critique | Contournement de l’autorisation par une clé contrôlée par l’utilisateur | Guide de l’Acheteur |
Moyen | Attribut Secure manquant dans le cookie de session | Numérisation automatisée |
Dans cette application, une évaluation automatisée n’aurait pas permis d’identifier les différentes façons dont un utilisateur pouvait accéder aux données et aux autorisations d’un autre utilisateur, exposant ainsi l’entreprise à un incident potentiel.
Quand donner la priorité aux test d’intrusion manuels ?
Ces deux études de cas démontrent que, si les analyses automatisées peuvent aider à identifier diverses vulnérabilités qui doivent être corrigées, elles sont loin d’être suffisantes pour sécuriser avec succès une application critique. Sans les tests manuels, les organisations auraient laissé de nombreuses pierres non retournées, ce qui les aurait exposées à des vulnérabilités potentiellement dommageables. Plutôt que de vous demander « lesquelles de mes applications doivent être testées manuellement », vous devriez vous demander « à quelle fréquence chaque application doit-elle faire l’objet d’un test d’intrusion manuel ?
Compte tenu de l’évolution constante des cybermenaces, il est essentiel que toutes les applications soient testées manuellement par des testeurs de pénétration expérimentés et certifiés au moins une fois par an, ce qui vous permet de rester au fait des derniers outils et techniques de piratage utilisés pour contourner les mesures de sécurité de votre application. C’est pourquoi de nombreuses normes, telles que PCI-DSS, imposent un pentest annuel pour rester conforme.
Par ailleurs, il est impératif que vos applications soient testées manuellement lorsque de nouvelles fonctionnalités sont introduites ou que des changements majeurs sont apportés à l’infrastructure du réseau, car de nouvelles vulnérabilités peuvent avoir été introduites, ce qui vous rend vulnérable à un incident potentiel.
Quand utiliser des solutions de tests automatisés pour votre application
Si votre application a récemment fait l’objet d’un test d’intrusion manuel, on peut dire que vous avez couvert toutes les bases. Cependant, les technologies et les cadres sur lesquels vos applications sont construites sont constamment confrontés à de nouvelles vulnérabilités, parfois critiques. Votre organisation n’a peut-être pas les moyens de se soumettre à des tests d’intrusion pratiques tous les mois pour identifier en permanence de nouvelles failles de sécurité, mais il est néanmoins essentiel que votre équipe corrige ces vulnérabilités en permanence. C’est là que les scanners interviennent et comblent les lacunes.
Les analyses automatisées sont bien adaptées à l’identification de certains types de vulnérabilités applicatives figurant dans le top 10 de l’OWASP, notamment les scripts intersites, les injections SQL et les falsifications de requêtes côté serveur. Les analyses automatisées sont également efficaces pour identifier des erreurs de configuration particulières, notamment la mise en œuvre incorrecte de TLS ou l’absence d’en-têtes HTTP et d’attributs de cookies axés sur la sécurité. Leurs validations sont effectuées en exploitant de vastes bases de données de vulnérabilités associées à chacune de vos technologies en place, ainsi que des problèmes spécifiques liés à la version du logiciel que vous avez actuellement installé. Ils peuvent être réalisés de manière récurrente et ne nécessitent pas d’expertise très spécialisée, ce qui en fait une solution rentable pour assurer la sécurité de votre application jusqu’à ce que vous puissiez réaliser votre prochain test d’intrusion complet.
Numérisation automatisée avec validations manuelles
Le principal défaut de l’analyse automatique réside dans le grand nombre de faux positifs qu’elle génère. Cela peut conduire à une utilisation inefficace de vos ressources, car votre équipe peut passer du temps à corriger des vulnérabilités qui ne représentent que peu ou pas de risque pour votre entreprise. La validation manuelle des analyses automatisées par un professionnel certifié vous permet d’adapter les niveaux de risque à votre contexte et d’établir des priorités pour les étapes suivantes, ce qui vous permet d’économiser des ressources à long terme. Il est toutefois important de noter que la validation manuelle n’améliore pas la profondeur de l’analyse, ce qui ne la rend pas aussi fiable que les tests manuels pour sécuriser les applications critiques.