Souvent en raison de budgets trop restreints alloués au développement des applications web et mobiles, celles-ci contiennent fréquemment un grand nombre de vulnérabilités. C’est donc naturellement qu’elles sont les cibles privilégiées des hackers.
Types de vulnérabilité classés par fréquence d’observation - Selon OWASP Top 10 team
Si vous souhaitez sécuriser vos applications critiques, nous vous conseillons de tester leur sécurité tout au long de leurs cycles de vie : développement, test, production.
Pour réaliser ces tests, il existe plusieurs outils et méthodes adaptés à ces cycles ainsi qu’à vos challenges :
- Audit de code source automatisé (SAST - Static Application Security Testing)
- Audit dynamique automatisé (DAST - Dynamic Application Security Testing)
- Test d’intrusion réalisé par un « hacker éthique »
Dans cet article, nous vous expliquerons leurs points forts, leurs limites ainsi que les raisons pour lesquelles des audits automatisés SAST et DAST ne peuvent pas se substituer à des tests d’intrusions réalisés par un hacker éthique.
Audits SAST et DAST de l’application Webgoat écrite en .NET
Audit de code source automatisé (SAST)
L’audit du code source (SAST) de vos applications est important si vous souhaitez détecter et corriger leurs vulnérabilités pendant la phase de développement : plus tôt une vulnérabilité est découverte et moins elle sera couteuse à corriger.
Un audit SAST est non intrusif par nature. Vous pouvez donc scanner en toute sécurité vos applications les plus critiques sans risque d’impacter leur performance.
Un tel audit vous permet de détecter un grand nombre de vulnérabilités présentes dans le code source de vos applications
Exemple de vulnérabilité de type « Path manipulation » découverte par un audit « SAST » :
Un hacker peut se servir de cette vulnérabilité pour consulter le contenu de n’importe quel fichier présent sur le serveur hébergeant cette application : fichiers de configuration, documents confidentiels, etc.
Un audit SAST est particulièrement intéressant car il vous indique l’emplacement exact d’une vulnérabilité dans le code source :
Si la lecture du code source est complexe, vous pouvez consulter une vue simplifiée représentant l’exécution dynamique de votre application :
Audit dynamique avec scanner de vulnérabilité (DAST)
Un audit dynamique (DAST) consiste à se servir d’un scanner pour interagir avec l’application comme un hacker le ferait sur internet : en envoyant un grand nombre de requêtes malicieuses vers l’application auditée afin d’y trouver des failles.
Un scanner de vulnérabilité DAST permet de détecter un certain nombre de vulnérabilités pouvant être découvertes lors d’un audit de code source (SAST) sans pour autant atteindre la même efficacité.
Là ou un scanner de vulnérabilité DAST se démarque c’est dans sa capacité à découvrir des problèmes de configuration relatifs au serveur web sur lequel est installée l’application.
Un audit DAST est intrusif par nature. Il peut détériorer votre application. Il est donc préférable de scanner dynamiquement une application dans un environnement de pré production.
Si vous ne disposez pas d’un environnement de pré production, nous vous conseillons de réaliser un scan DAST léger couplé à un audit de code source (SAST).
De cette manière vous découvrirez un maximum de vulnérabilités sans pour autant impacter votre application.
Exemple de vulnérabilité de type « Web Server Misconfiguration: Unprotected File » découverte par un audit « DAST » :
Un hacker peut se servir de cette configuration non sécurisée du serveur web pour consulter le code source d’une sauvegarde de l’application archivée sur le serveur :
Test d’intrusion
Les audits de code source (SAST) et les audits dynamiques (DAST) automatisés vous permettront de détecter un grand nombre de vulnérabilités. Cependant, il est important de noter que ces solutions ne pourront pas remplacer l’intelligence humaine.
Des tests d’intrusion manuels réalisés par un hacker éthique vous permettront de découvrir des vulnérabilités inhérentes à la logique « métier » de vos applications et ainsi que d’autres vulnérabilités plus difficilement détectables par des solutions automatisées.
Enfin, un testeur d’intrusion sera capable d’exploiter plusieurs vulnérabilités en chaine afin d’obtenir des résultats parfois impressionnant.
Un tel test permet de comprendre la dynamique qu’entretiennent des vulnérabilités entre elles afin de dresser un portrait réaliste de la sécurité de vos applications.
L’homme et la machine : plus fort ensemble
Quels tests réaliser ?
Si votre budget vous le permet nous vous conseillons de réaliser ces 3 types de tests à la fois.
De cette manière vous obtiendrez une grande assurance que vos applications critiques sont dépourvues de vulnérabilités.
Si vous ne pouvez pas vous offrir ces 3 tests, nous vous conseillons de réaliser des scan DAST couplée à une vérification des résultats par un expert.