Une récente publication du centre de recherche Microsoft montre quelques exemples de faiblesse de sécurité fonctionnelle (Logic flaw ou business logic flaw). L’étude porte sur certains processus de paiement offerts par plusieurs grands fournisseurs et sur l’implémentation coté sites marchands.
Les chercheurs ont ainsi démontré au moins 9 vulnérabilités ayant comme origine des failles dans la logique applicative liée au processus de paiement ou aux choix d’implémentation fait par les marchands.
Les principales causes remontées par l’étude sont:
- Le manque de validation des interactions et des échanges d’informations entre les parties prenantes du paiement : l’acheteur (ou son navigateur), le site du marchand en ligne (son application web E-commerce), le fournisseur de paiement (les services exposés)
- Le manque de contrôle sur l’intégrité des données, l’authentification de l’origine des demandes de transaction, …
- La complexité d’intégration des modules/fonctions de paiement
Nous vous recommandons la lecture de cette publication pour plus de détail : http://research.microsoft.com/apps/pubs/?id=145858
Faille de logique fonctionnelle : Les solutions ?
Selon notre expérience, les outils de détection de vulnérabilité ne peuvent que (très) difficilement pointer ce type de faiblesse. Une analyse humaine nous semble généralement plus appropriée et surtout (beaucoup) plus efficace.
Dans ce contexte, il est possible d’effectuer une analyse que nous appelons : « Malicious use case analysis».
La notion de « Malicious use case» n’est pas neuve (http://www.acsac.org/1999/papers/wed-b-1030-john.pdf) mais mériterait peut-être plus d’attention dans le cadre de la mise en place des cycles de développement sécurisé (ou SDLC pour Secure Developpement Life Cycle).
En synthèse, l’objectif est d’analyser les interactions entre les différents acteurs/modules applicatifs et de bâtir des scénarios d’attaque.
Le moyen ?
Il est possible d’utiliser les « use case diagrams » (ou un autre équivalent méthodologique)

et de simuler fonctionnellement les scénarios d’attaque :
Quelques exemples (dans le contexte de l’étude des paiements en ligne)
- Que se passe-t-il si un « acheteur » modifie son ID de transaction ?
- Est-il possible de de renvoyer à la plate-forme de paiement un ID de transaction différent avec un autre message de paiement authentifié mais d’un autre achat effectué par le même acheteur (malicieux !)
- Etc…
Il s’agit :
- De déterminer les risques de contournement (et donc les impacts financiers ou métiers) dès les phases de conception des applications Web :
- De définir les points de contrôle nécessaire à la sécurisation des échanges (contrôle d’origine des requêtes, contrôle de l’authentification des demandeurs et des valeurs de transactions…) en fonction des scénarios d’attaque définis
En prenant un raccourci, il s’agit en quelque sorte de réaliser un test d’intrusion fonctionnel !
Outre le fait de limiter les vulnérabilités, cette démarche offre d’autres avantages : cette activité facilite l’intégration des besoins de sécurité :
- Dans les processus de développement au niveau des spécifications fonctionnelles
- Dans le respect des méthodologies utilisées plus particulièrement par les équipes de développement
L’acceptation des mesures de sécurité à mettre en place est donc souvent plus simple (et donc plus efficace)
Opale Security reste à votre disposition pour vous accompagner dans la sécurisation de vos applications Web au niveau technique et… fonctionnel.