Les principales failles de sécurité des applications web actuelles, telles que recensées par l'OWASP: principes, parades et bonnes pratiques de développement( Télécharger le fichier original )par Guillaume HARRY Conservatoire national des arts et métiers - Ingénieur 2012 |
4.4 Référence directe non sécurisée à un objet4.4.1 PrincipeCette vulnérabilité existe simplement parce que les paramètres de requêtes ne sont pas vérifiés avant traitement. Si le paramètre vulnérable fait référence à un fichier, à une valeur dans une base de données, il suffit de reconstruire la requête avec une valeur de paramètre normalement interdite pour y avoir accès. Cette faille peut avoir des impacts importants si un utilisateur mal intentionné obtient par ce biais des accès à des informations et des fonctionnalités pour lesquelles il n'a aucune autorisation. 4.4.2 Exemples d'attaqueCette faille est une des bases de la vulnérabilité exploitée par XSS. En effet, dans les exemples d'attaques exposés précédemment (' voir paragraphe 3.2.2), les paramètres récupérés ne sont pas vérifiés. Par contre, si ces valeurs avaient été contrôlées, les caractères spéciaux n'auraient pas été autorisés, empêchant ainsi l'envoi de code frauduleux au navigateur. Si les paramètres sont passés en paramètre d'un lien, un utilisateur malintentionné peut aisément modifier l'adresse pour accéder à des informations auxquelles il n'aurait pas dû avoir accès. L'exemple suivant reprend la table « comptes » (voir ' paragraphe 3.1.1) qui va être interrogée par un script PHP pour afficher le numéro de carte bancaire de l'utilisateur. <?php //recuperation des parametres$nom = $_GET['proprietaire']; //generation de la requete$requeteSQL = "SELECT numerocarte FROM comptes WHERE nom = '$nom'"; //execution de la requete$reponse = mysql_query($requeteSQL);$resultat = mysql_fetch_assoc($reponse);//affichage du resultatecho "<tr><td> Votre numero de carte est :</td><td>";echo $resultat['numerocarte'];echo "</td></tr>";?> Figure 18 - Script PHP pour l'affichage du numéro de carte Si l'utilisateur malveillant saisit dans son navigateur l'adresse de cette page avec pour paramètre « nom=nom_de_la_victime », il a alors accès au numéro de carte bancaire qu'il n'aurait jamais du pouvoir voir. 4.4.3 Parade et bonnes pratiquesPour protéger les données les plus confidentielles ou les fonctionnalités les plus avancées, le WASC recommande de demander à l'utilisateur de saisir à nouveau son identifiant et son mot avant de pouvoir y accéder. Ensuite il suffit de se baser sur ces valeurs pour construire les requêtes. Ainsi dans l'exemple de l'affichage du numéro de carte, le paramètre utilisé pour la recherche aurait été celui de la personne qui s'est authentifiée et non celui fournit en paramètre du lien. |
|