Quand on parle de sécurité informatique (consultez le blog cybersecurity-guide si le sujet vous intéresse), on pense souvent aux virus, aux failles techniques, et aux outils sophistiqués capables de les détecter. Pourtant, il existe un autre type de faille, bien plus insidieuse et difficile à repérer : les failles logiques ! Insidieuses car elles ne sont pas détectables par les logiciels traditionnels, et encore moins par les scanners de vulnérabilités. Pour ne rien arranger, ces erreurs de conception peuvent causer des dégâts considérables, et c’est là que les pentesteurs entrent en jeu… Dès lors, la question qui se pose est comment repérer ces failles ? Voici un guide pratique pour comprendre les failles logiques et, surtout, apprendre à les identifier !
Sommaire de l'article
Qu’est-ce qu’une faille logique ?
Les failles logiques sont des défauts dans la logique métier d’une application, c’est-à-dire dans la manière dont elle fonctionne au niveau des règles internes et des processus. Contrairement aux vulnérabilités techniques, elles ne résultent pas d’une erreur de programmation ou d’une faille de sécurité classique, mais plutôt d’un manque de rigueur dans la conception des flux de travail.
C’est par exemple le cas d’un site d’e-commerce où un utilisateur peut modifier le prix d’un produit, directement dans l’URL ! Si cette modification est acceptée par le serveur sans vérification, vous êtes alors en présence d’une faille logique. Pourquoi ? Parce que le site n’a pas prévu qu’un utilisateur puisse manipuler l’URL pour changer le prix, et cette faille n’est pas détectable par un scanner de vulnérabilités, car ce dernier ne peut pas savoir si une modification de prix est légitime ou non.
En outre, la plupart des outils de pentest sont très efficaces pour repérer des failles comme les injections SQL ou les problèmes de contrôle d’accès. Mais lorsqu’il s’agit de vulnérabilités logiques, ces outils se retrouvent démunis, car ils ne comprennent pas la logique sous-jacente d’une application. C’est pour cette raison que les pentesteurs doivent souvent se creuser la tête et utiliser leur imagination pour tester des scénarios inattendus.
Comment trouver des failles logiques ?
D’emblée, il faut savoir qu’il n’existe pas de recette miracle pour trouver les failles logiques. En d’autres termes, repérer lesdites failles nécessite avant tout de penser différemment. Là où les outils automatisés échouent, l’esprit humain, lui, peut briller. Voici quelques pistes pour identifier ces failles sur un site web ou une application.
Penser « out of the box »
La première étape pour trouver des failles logiques, c’est de se mettre dans la peau d’un utilisateur malveillant. L’un des plus grands pièges des développeurs est de supposer que les utilisateurs agiront toujours de manière prévisible. Votre rôle en tant que pentesteur est de prouver que cette hypothèse est fausse ! Par exemple, si un site vous permet de réserver des billets pour un concert, que se passe-t-il si vous réservez tous les billets disponibles, puis les laissez dans votre panier sans les payer ? Cela bloque-t-il l’accès aux autres utilisateurs ? Ce genre de scénario peut paraître farfelu, mais il pourrait bien révéler une faille dans la gestion des stocks ou des réservations.
Tester l’impossible
Les failles logiques se cachent souvent dans les recoins inattendus des applications, d’où l’importance de tester des scénarios qui, à priori, semblent impossibles. Par exemple, vous pouvez tenter de remplir un panier d’achat avec un nombre absurde de produits, de sorte à voir si le site plante au moment du paiement. Peut-être que la logique interne du site ne gère pas les grands nombres et qu’un bug pourrait survenir.
Autre exemple : modifier les paramètres dans l’URL. Si vous voyez que l’ID d’un produit ou son prix est inclus dans l’URL, essayez de les changer. Dans un monde idéal, le serveur devrait rejeter cette modification. Mais si ce n’est pas le cas, félicitations (si toutefois les félicitations sont de mise…) : vous venez de découvrir une faille logique !
Utiliser son imagination
Les failles logiques ne se limitent pas aux scénarios que l’on pourrait imaginer dans une utilisation normale d’une application. Nous vous le disions, il faut savoir se mettre dans la peau d’un utilisateur créatif – ou malveillant. Essayez de tester toutes les combinaisons possibles. Qu’advient-il si vous soumettez un formulaire incomplet ? Que se passe-t-il si vous changez les droits d’un utilisateur en cours d’utilisation ? Et si vous désactivez JavaScript avant de valider une action sur une page web ? Tous ces tests peuvent mettre en lumière des failles que même les développeurs n’ont pas anticipées.
Ne pas se fier aux validations côté client
Une erreur courante dans la conception des applications web est de se fier aux validations côté client pour vérifier les données des utilisateurs. Or, ces validations sont facilement contournables. Utilisez un proxy pour intercepter les requêtes envoyées au serveur et modifiez les données à la volée. Si le serveur n’a pas de contrôles robustes en place, vous pourriez exploiter cette faille pour détourner une fonctionnalité.
L’importance du pentest manuel
Rappelons, au risque de nous répéter, que si les outils de pentest sont indispensables pour identifier les vulnérabilités techniques, ils ne peuvent remplacer l’ingéniosité humaine pour les failles logiques. Ces dernières sont spécifiques à chaque application et ne rentrent souvent dans aucune catégorie bien définie. Les tests automatisés, comme ceux proposés par les scanners de vulnérabilités, ne peuvent pas comprendre la logique métier d’une application et sont donc inefficaces pour repérer ces erreurs subtiles.
Le pentesting manuel allié à des scanner de vulnérabilités permet alors d’explorer des scénarios complexes, comme les problèmes de gestion des droits d’accès ou les manipulations de paramètres. Prenons l’exemple d’une application avec plusieurs niveaux d’utilisateurs, comme un directeur et des employés. Si un employé parvient à accéder à des informations qui devraient être réservées au directeur, c’est une faille logique, et ce type de vulnérabilité ne peut être détecté que par des tests manuels approfondis.
Quick-Tutoriel.com Network & System Admin.

