Nous pouvons différentier deux types de tests d’intrusion sur une application web :

  • Les tests manuels
  • Les scanners automatisés

Les tests manuels sont le process où des testeurs humains (pentesters) vont parcourir votre application web et rechercher des vulnérabilités, les exploiter afin de confirmer qu’elles sont effectivement exploitables et qu’elles pourraient causer des dommages à votre entreprise. Les pentesters utilisent certains outils, généralement dans un mode interactif, utilisent leurs propres scripts, et surtout, leurs compétences.

Les outils automatisés sont des logiciels ou des plateformes qui parcourent automatiquement votre site Internet et détectent tout. Humm… disons tout ce qu’ils sont capables de détecter.

De nombreuses entreprises sont développé ces plateformes de détection, essentiellement car les tests automatisés permettent de gagner du temps, faire des économies, et parce qu’elles peuvent viser plus de clients potentiels avec leurs outils, à des coûts réduits.

Tester manuellement une application web est en effet chronophage, et relativement cher puisque vous aurez de vrais humains en train d’effectuer le travail.

key on screen illustration

Pensez-vous que les pirates (ceux qui volent vos données et impactent votre business) utilisent des outils automatisés? Bien entendu, certains utilisent des scanners qui leur reportent de potentielles victimes, mais au final, les pirates ne sont pas des gens se contentant de cliquer sur le bouton “Commencer le test” d’un outil automatisé. Ce sont des personnes compétentes, qui trouvent parfois des failles que des outils automatisés ne pourraient pas trouver.
Si les scanners étaient si puissants et efficaces, tous les principaux sites web seraient déjà scannés.

Ce que les outils automatisés peuvent faire, et qu’un test purement manuel ne permet pas :

  • Tester chaque possibilité d’attaque sur chaque page (du moins toutes les pages qu’il trouve, et toutes les possibilités qu’on lui a appris et demandé de tester)
  • Effectuer des tests à très haute vitesse (bien qu’un test complet prenne de toute manière beaucoup de temps)

Les principales failles que les outils automatisés ne peuvent pas trouver sont les failles logiques : seuls les testeurs humains sont capables de comprendre la logique derrière le workflow d’une application. Ces failles sont généralement assez sévères et peuvent causer de gros dommages à l’entreprise.
Les outils automatisés reportent des failles techniques, pas des failles de logique business.

En plus de cela, les outils automatisés reportent ce que l’on appelle des faux-positifs. En parcourant le rapport généré pour de tels outils, les développeurs essaient de comprendre ce qui doit être modifié, alors qu’il n’y a parfois rien à corriger.
Lire et comprendre le “rapport” généré par un scanner automatisé peut être très consommateur de temps, et requiert de toute manière des compétences en sécurité.

Quelle approche faut-il donc suivre?

Les éditeurs essayant de vous convaince que leur outil est parfait, qu’il fera tout ce qu’un humain est à même de faire, à des coûts réduits et plus rapidement, est tout simplement en train d’essayer de vous vendre ses produits et services.

Le moyen de plus efficace de tester une application web est une approche qui combine le meilleur des deux mondes!
La meilleure approche est de mixer l’utilisation de techniques manuelles, s’appuyant sur les compétences du testeur, et d’outils automatisés, afin de gagner du temps sur des tâches répétitives et à faible valeur ajoutée.
Un pentester compétent et expérimenté pourra mettre à profit la puissance de certains outils, sélectionnés pour des aspects spécifiques et les combiner avec son analyse de votre cas, unique.

Là où des scanners automatisés sont génériques, certains autres outils sont très efficaces sur des cas bien spécifiques et sur certains types de vulnérabilités. Un testeur humain prendra en compte le contexte de votre application, pour déterminer quelles sont les priorités en termes de risques, et se focalisera en premier sur les éléments les plus sensibles, ce qui ne peut pas être obtenu à partir d’un outil automatisé.