INF 6033 GNIE LOGICIEL AVANC Bypass Testing of
INF 6033: GÉNIE LOGICIEL AVANCÉ Bypass Testing of Web Applications Pr. Michal Iglewski Présenté par: Hatem Bouzayani Bypass Testing of Web Applications
Plan • • • Bypass Testing: Pourquoi? Introduction Types de validation du coté client Généralisation pour les validations des inputs Étude de faisabilité: Cyber. Chair Modélisation des unités input HTML Bypass Testing Répense des serveurs Travaux reliés au Bypass Testing Conclusion Références Bypass Testing of Web Applications 2
Bypass Testing: Pourquoi? • Les applications Web: transmission, acceptation et sauvegard des données sensitives (personels, confidentiels, . . ) • Tester les forces et les faiblesses de quelques logiciels • Tester le niveau de sécurité – Input Validation Testing (IVT): par des outils logiciels, et des langages scripts Bypass Testing of Web Applications 3
Introduction • Applications Web: – À partir des composantes logicielles hétérogènes qui s’interagissent entre eux – S’exécute à partir de plusieurs ordinateurs dans différents environnements implémentés en différents langages – Et doivent répondre à des très hautes exigences en matière de fiabilité, disponibilité et facilité d'utilisation Bypass Testing of Web Applications 4
Introduction (suite) • Applications Web: – Interaction client-serveur à partir les browsers – HTTP est ‘stateless protocol’: chaque requête est indépendante d’une autre (le serveur ne sait pas si différentes requêtes viennent d’un ou de pls utilisateurs) – Methodes GET & POST • GET: permet la visibilité dans parametres dans le URL – Exemple: http: //www. byit. com? name=george Bypass Testing of Web Applications 5
Introduction (suite) • Défits: – Analyses – Évaluations – Maintenance – Test Bypass Testing of Web Applications 6
Introduction (suite) • Validation des données doit être faite du coté client avant la submission • Elle peut être faite aussi du coté serveur Bypass Testing of Web Applications 7
Types de validation du coté client • Validation sémantique de l’input: 1. Conversion de type de données: – Tous les entrées au début sont sous format ‘String’ mais seront convertis en différent types au niveau serveur – Client peut vérifier si l’input va être converti correctement – Ex: pour des entres numériques il faut avoir que des digits Bypass Testing of Web Applications 8
Types de validation du coté client (suite) • Validation sémantique de l’input: 2. Validation du format des données • Ex: – – – Monnaie Téléphone Code postale Courriel URLs … Bypass Testing of Web Applications 9
Types de validation du coté client (suite) • Validation sémantique de l’input: 3. Validation des contraintes inter-valeurs – Des champs dans un formulaire doivent apparaitre ensemble – Ex: – Un login doit avoir un username et un password – Numéro de la carte crédit doit exister avec la date d’expiration et le nom de la personne Bypass Testing of Web Applications 10
Types de validation du coté client (suite) • Validation syntaxique 1. Restriction sur la longueur de l’input • Ex: <INPUT Type=text Name=Age Maxlength=3> 2. Restriction sur la valeur: • Utilisation des select boxes, check boxes et radio boxes Bypass Testing of Web Applications 11
Types de validation du coté client (suite) • Validation syntaxique 3. Restriction sur le mode transfert (GET, POST) 4. Accès aux données: le browser gére 2 types de données: 1. Les hidden form fields: utilisés pour passer des données d’une page à une autre et pour ne pas rentrer les données plusieurs fois (source code) 2. Les cookies: gérés par le browser et le serveur, peuvent persister le long de plusieurs HTTP requêtes (Tools Cookies) Bypass Testing of Web Applications 12
Types de validation du coté client (suite) • Validation syntaxique: 5. Selection du champs d’input: la visibilité des champs et leurs activation peuvent être gérées par des scripts 6. Restriction sur le contrôle des flux: l’argument Action dans un formulaire HTML redirige l’utilisateur vers la page d’action Bypass Testing of Web Applications 13
Généralisation pour les validations des inputs • Wheeler: – ‘Any input accepted from user must be validated any illegal input data should be filtered out’ • Quelques règles doivent être pris en considération: 1. Filtrations: caractères illégaux doivent être éliminés Bypass Testing of Web Applications 14
Bypass Testing of Web Applications 15
Généralisation pour les validations des inputs (suite) 2. Limitation des valeurs numériques (ex: mois, jours par mois, …) 3. Adresse courriel: utilisateur, domaine, contenu, sujet et récipiendaire doivent être vérifiés, les attachés, … 4. URLs: avoir une forme valide ainsi que l’adresse existe 5. Caractères patrons: les inputs qui ne matchent pas les expressions régulières doivent être rejetés Bypass Testing of Web Applications 16
Étude de faisabilité: Cyber. Chair • Procédure d’implémentation d’un Bypass testing: – Sauvegarder une copie de page de soumission dans un répertoire locale et faire des modifications – les inputs sont brisés en 3 niveaux: 1. Contrôle de flux: soumission sans login 2. Paramètres: éliminer quelques paramètres 3. Valeurs: différents types sont accepter Bypass Testing of Web Applications 17
Étude de faisabilité: Cyber. Chair (suite) 5 types de failles: 1. Soumission sans authentification 2. Mal utilisation des hidden fields 3. Divulgation de l’information: les messages d’erreurs indiquent exactement l’emplacement d’erreurs(…) 4. Pas de validation sur les contraintes des paramètres. 5. Pas de validation sur les types de données Bypass Testing of Web Applications 18
Modélisation des unités input HTML • Chaque page HTML – une ou plusieurs formulaires • Plusieurs champs d’entrés – Validation manuelle difficile • Solution: construction d’un modèle formelle pour les entrées HTML client -serveur Bypass Testing of Web Applications 19
Modélisation des unités input HTML (suite) • Une page HTML interagisse avec le serveur à partir des inputs d’un formulaire • IU = (S, D, T) unité de base d’interaction du coté client • S: les inputs envoyés vers le serveurs • D: ensemble des couples ordonnées (n, v) – n: nom du paramètre – v: valeurs possibles assignées à n • T: mode HTTP de transfert (GET, POST) • Ex: <A HREF=“prog? val=1”> – S=prog, D = {(val, 1)} Bypass Testing of Web Applications 20
Modélisation des unités input HTML (suite) • 2 types d’entrées dans une page HTML: – À partir du formulaire – Hors du formulaire Bypass Testing of Web Applications 21
Modélisation des unités input HTML (suite) • Règles de composition des unités inputs: Soient {iu 1 = (S 1, D 1, T 1), iu 2 = (S 2, D 2, T 2)}, et D 1 = {(n 1, v 1)} and D 2 = {(n 2, v 2)}. 1. Identical Input units composition: iu 1 et iu 2 sont identiques SSi S 1 = S 2, D 1 = D 2 et T 1=T 2 – Les 2 unités sont remplacés par une seule Bypass Testing of Web Applications 22
Modélisation des unités input HTML (suite) 2. Optional input element composition: iu 1 et iu 2 ont des éléments optionelles Si S 1 = S 2, D 1 = D 2 et Ǝ (n 1, v 1) ∈ D 1 mais (n 1, v 1)∉ D 2 – Les 2 unités s’unissent pour former iu = (S 1, D’, T 1) où D’ = D 1 ∪ D 2 3. Optional input value composition: iu 1 et iu 2 ont des valeurs inputs optionelles Si S 1 = S 2, D 1 = D 2 et Ǝ (n 1, v 1) ∈ D 1 et (n 2, v 2) ∈ D 2 telque n 1 = n 2 mais v 1 ≠ v 2 – Les 2 unités s’unissent pour former iu = (S 1, D’, T 1) où D’ = {D 1 – (n 1, v 1) } ∪ {D 1 - (n 2, v 2)} ∪ {n 1, (v 1 ∪ v 2)} Bypass Testing of Web Applications 23
Modélisation des unités input HTML (suite) • Par conséquant – Deux formulaires qui sont presque identiques pourquoi ne les fusionner pas en un seul formulaire et mettre les entrées non identiques comme optionnelles Bypass Testing of Web Applications 24
Bypass Testing • Introduction: – Les validations sont faciles avec les fomulaires statiques inchangeables – mais, plus complexe avec les pages dynamiques où les paramètres peuvent aussi changer ainsi que le nombre des inputs (interrelation entre les paramètres) – Bypass testing va se faire à 3 niveaux Bypass Testing of Web Applications 25
Bypass Testing (suite) 1. Niveaux des valeurs: Ø Type de données et modification des valeurs: string, integers, real numbers, dates, … Ø maxlength: pour la restriction du longueur d’un paramètre Ø Inputs prédéfinis: select, check et radio boxes Ø Valeurs spéciale des inputs: quelques caractères doivent être vérifiés avant l’envoi des données vers la base de données ou vers les fichiers XML Bypass Testing of Web Applications 26
Bypass Testing (suite) 2. Niveaux des paramètres: § Relations entre les paramètres § Invalid pair: 2 param. ne doivent pas avoir des valeurs en même temps § § Required pair: si l’un a une valeur l’autre le doit aussi § § Ex: chequing account & credit card expiration date Ex: credit card nr & expiration date On essaie d’exécuter des cas de test qui touchent les relations restrictives entre les paramètres Bypass Testing of Web Applications 27
Bypass Testing 2. Niveaux des paramètres § § (suite) : On défini input pattern l’ensemble des paramètres qui seront envoyés vers le serveur But: identifier tous les inputs pattern dans une application web Bypass Testing of Web Applications 28
Bypass Testing of Web Applications 29
Bypass Testing 2. Niveaux des paramètres § (suite) : Après l’exécution de l’algorithme on a une collection des inputs units IU = (S, D, T) § § § D = {P 1, P 2, …, Pk} et Pi = Pi est une valide input units Mais aussi on peut génerer des inputs qui ne sont pas valides pour la relation entre les pramètres, dont on a 3 Bypass Testing of Web Applications 30
Bypass Testing 2. Niveaux des paramètres § (suite) : Empty input pattern si on n’a pas de données à envoyer vers le serveur § IU 1 = (S, Ø, T) § § (suite) Violation de la relation required pair Universal input pattern si tous les paramètres vont avoir des valeurs § IU 2 = (S, P 1 ∪ P 2 ∪ … ∪ Pk, T) § Violation de la relation invalid pair Bypass Testing of Web Applications 31
Bypass Testing 2. Niveaux des paramètres § (suite) : Differential input pattern si on soumet des valeurs appropriées pour tous les paramètres en un input pattern, pour chaque pair d’input pattern Pi et Pj on aura x = Pi – Pj § IU 3 = (S, P’, T), où P’ = Pi ∪{x} Bypass Testing of Web Applications 32
Bypass Testing (suite) 3. Niveau du contrôle du flux (suite): on essaie d’exécuter des cas de test sur l’application web – Identifier le cas normal (algorithme précédent) – Tous les inputs units retournés après une soumission sont considérés comme des candidats pour le prochain contrôle du flux Bypass Testing of Web Applications 33
Bypass Testing (suite) 3. Niveau du contrôle du flux (suite): étant données un contrôle de flux normale et iu 1, iu 2, …, iuk des unités d’inputs, on peut distinguer: – Backward and forward CF: • Backward: (iui, iui+1) vers (iui, iui-1) • Forward: (iui, iui+1) vers (iui, iui+2) – Arbitrary CF: • iui vers iut ou 1≤t ≤ k et t≠i Bypass Testing of Web Applications 34
Répense des serveurs • Après des inputs invalides: – Les inputs sont reconnus par le serveur – Les inputs ne sont pas reconnus • Situation anormale du serveur (mécanisme d’erreur) – Les inputs ne sont pas reconnus par le serveurs et les nouvelles situations du serveur sont exposés directement au utilisateurs Bypass Testing of Web Applications 35
Bypass Testing of Web Applications 36
Travaux reliés au Bypass Testing • Input validation testing • GUI testing: formulaires HTML • Web application testing: client-side validation et static server-side validation of links • Web. ML (Web Modeling Language): permet au pages web une description conceptuelle, et une modelisation des données • Kung et al. : une site web comme une graphe, les tests se basent sur le parcour des pages web • … Bypass Testing of Web Applications 37
Conclusion • Bypass testing est une manière de tester les pages (sites) web ainsi les serveurs en se plaçant du coté client. • Le concept d’un Bypass testing est relativement simple • Une motivation au développeurs de web de valider et tester les données avant la soumission. • Une avantage majeure: pas nécessaire d’accéder au ressources des logiciels Bypass Testing of Web Applications 38
Références • http: //portal. acm. org/citation. cfm? id =1025118. 1025602 • http: //cs. gmu. edu/~offutt//rsrch/pa pers/bypass-issre. pdf • Pour des attacks des pages web: http: //www. microsoft. com/technet/c ommunity/columns/secmvp/sv 0505. mspx Bypass Testing of Web Applications 39
- Slides: 39