Résumé de l’épisode précédent : le XSS, en tirant notamment parti de l’API DOM, permet de réaliser des attaques si puissantes que Jeremiah Grossman sous-titrait son livre XSS Attacks paru en avril 2007 « XSS is the New Buffer Overflow, JavaScript Malware is the New Shell Code »2. Il est important d’examiner de plus près cette analogie entre XSS et attaques applicatives classiques afin de bien comprendre toute l’étendue des possibilités offertes par le XSS à un attaquant, notamment à travers l’injection de différents types de codes JavaScript malveillants. Dans la troisième partie de cet article, nous essaierons d’évaluer le risque réel de différents scénarios d’attaques, tirant notamment partie des trois erreurs les plus fréquemment commises à propos du XSS.
Les attaques XSS ne constituent en rien un genre nouveau d’attaque informatique ; elles font partie de la grande famille des attaques par injection, comme le dépassement de tampon.
Dans une attaque applicative classique par dépassement de tampon, on distingue généralement trois phases :
a) L’exploitation de la faille, qui consiste à placer dans une variable une valeur de longueur supérieure à celle de la mémoire qui lui est réservée et contenant un code que l’on souhaite injecter. On écrit donc au-delà du tampon sur la zone mémoire du processus, jusqu’à remplacer une adresse de retour ou des structures internes par l’adresse du code injecté ; cette valeur, contenant le code à exécuter et l’adresse de retour, est communément appelée « charge utile » ou payload en anglais, car elle contient tous les éléments nécessaires à l’exploitation de la faille.
b) L’exécution du code injecté, qui lance généralement un shell, mais qui permet...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première