Sécurité Informatique

Titre de l'article : Nouvelle tendance : Les vers XSS
Auteur : Adrien Guinault, consultant sécurité Xmco Partners
Courriel : adrien.guinault@xmcopartners.com
Date : Janvier 2007
Version complète en PDF : Actu Sécurité Janvier 2007


Les pirates raffolentdes attaques de Cross Site Scripting. Nous avons choisi de vous présenter, cette fois-ci, les vers Javascript qui se sont développés depuis 2005 et qui ont attaqué quelques grands sites comme MySpace, Yahoo ou encore Google. Comment fonctionnent-ils ? Comment se propagent-ils ?

Petite présentation des derniers vers qui tendent à se se développer sur la Toile.



Définitions et présentations

Qu'est-ce que le Javascript ?

Le Javascript est un langage de programmation principalement utilisé dans les pages HTML.

Il permet d'apporter certaines améliorations au format HTML et d'exécuter des commandes diverses sur le poste client (et non sur le serveur web) : écriture sur une page HTML (document.write), récupération des informations relatives au document (document.cookie), chargement d'une autre page (document.location), affichage de popup (alert()), etc

Les codes Javascript sont lisibles par tous les internautes. En effet, aucune confidentialité du code n'est possible et toutes les portions de code sont accessibles.

code javascript virus


Qu'est-ce que le XSS ?

Le XSS est la contraction de Cross Site Scripting. Ce terme désigne une insertion imprévue de code Javascript au sein d'une page renvoyée par le serveur web et exécutée du coté client par les navigateurs web.

Le Cross Site Scripting est donc une attaque menée dans le but d'exécuter un code Javascript directement sur le poste de la victime. Cette technique a été particulièrement utilisée par les pirates pour voler la session d'un utilisateur connecté.
Une fois le serveur web vulnérable identifié, le script est inséré au sein de l'URL et est envoyé la victime. Si cette dernière est connectée sur le site web vulnérable, elle enverra immédiatement, et à son insue, son cookie de session au pirate. L'attaquant pourra ensuite rejouer ce cookie et voler la session de la victime pour mener des actions frauduleuses.

Vol de session XSS avec un mail

On distinguent deux grandes familles de Cross Site Scripting : le XSS permanent et le XSS non permanent.

Le XSS non permanent est retourné immédiatement et ne reste pas sur le serveur web. La victime est touchée personnellement et l'attaque est souvent menée grâce à un paramètre non contrôlé dans l'URL.

Le XSS permanent est une technique employée pour laisser le code malicieux sur le serveur web pour que chaque client, qui visite la page web vérolée, devienne une nouvelle victime.
Le code réside alors sur le serveur web et sera exécuté par le navigateur. C'est cette méthode que les vers XSS utilisent.

Si vous souhaitez en savoir plus sur les techniques XSS non permanentes, nous vous proposons de vous référer à notre newsletter " Actu-Secu " de Décembre 2006.




Comment cette vulnérabilité est-elle exploitée par les vers ?

Comme les parasites qui doivent s'accrocher à un corps vivant, les vers XSS doivent s'accrocher à une page web pour vivre.

Pour cela, les vers utilisent des sites web où les utilisateurs sont autorisés à insérer leurs propres balises HTML (où il est possible d'insérer du code Javascript). Cela concerne essentiellement les sites communautaires, les forums, les blogs, etc.

Les développeurs web ne prennent pas souvent la peine de vérifier chacune des entrées utilisateurs et laissent ainsi une porte ouverte aux pirates. Les failles XSS sont assez courantes et les avis sur la gravité de cette faille sont plutôt partagés. Certains (administrateurs, DSI, etc) ne prennent pas cette vulnérabilité au sérieux car ce genre d'attaque nécessite une intervention relativement difficile à réaliser pour l'utilisateur car elle doit être menée à grande échelle.

D'autres, dont les experts en sécurité, abordent le sujet sous un autre angle. Ils ont conscience du danger. En effet, cette faille de sécurité est bien plus grave qu'elle n'y paraît. Les pirates l'utilisent le plus souvent pour voler le cookie de session d'un utilisateur. Cela signifie qu'un attaquant peut prendre le contrôle de votre session lorsque vous êtes connecté sur le site de votre banque en ligne. Baptisée " le nouveau débordement de tampon " par certains spécialistes, elle offre d'autres possibilités dont celle d'exécuter n'importe quel code Javascript. Vous êtes donc à même d'imaginer les risques qu'une simple faille de Cross Site Scripting peut engendrer : scan d'un réseau interne, propagation de vers, etc.

Un ver XSS peut se propager par l'intermédiaire de plusieurs vecteurs. Les exemples qui suivent, présentent les différentes voies de contamination possibles.

Samy : premier ver pour MySpace

Le premier ver du genre fut créé en 2005 par un adolescent. Le ver n'avait aucun impact sérieux, il se contentait d'ajouter le profil "Samy " dans la liste d'amis de l'utilisateur abusé . Il se répliquait ensuite pour finalement contaminer près de 1 000 000 profils.

Le jeune pirate a, tout d'abord, analysé la sécurité du site en question et a constaté que l'insertion de balises HTML au sein de son profil était relativement simple. Bien que le site filtrait correctement plusieurs mots utilisés par le langage " Javascript " (ce qui restreint à priori ce genre d'attaque), l'insertion d'un tel code était toujours possible en utilisant des méthodes de contournement ingénieuses?(voir cadre a la fin de l'article)

Samy a trouvé une méthode relativement simple qui consistait à scinder le mot " Javascript " en 2 (retour chariot) afin de tromper une grande partie des navigateurs web. L'attaque pouvait alors commencer.




A l'aide d'un code Javascript particulièrement travaillé, le ver envoyait silencieusement des requêtes POST et GET via Ajax pour contaminer chacun des utilisateurs et des contacts visitant le profil " Samy ". La méthode utilisée était particulièrement astucieuse puisque l'auteur a réussi à générer des requêtes http via Ajax ainsi qu'un clic de validation sans la moindre intervention de l'utilisateur.

La création d'un tel ver n'est pas évidente car les plus grands sites prennent généralement des précautions afin d'éviter l'exécution de code Javascript. L'auteur de ce ver a donc du trouver des moyens pour contourner les contrôles de MySpace.

Yammaner : le premier ver sur une plateforme web-mail

Yammaner fut le premier ver du genre.

Identifié en juin 2006, ce virus était inséré directement dans le corps d'un e-mail et s'exécutait dès qu'un utilisateur de la web-mail de Yahoo ouvrait l'e-mail vérolé. `

Ce dernier avait pour but de chercher tous les contacts du carnet d'adresses pour se diffuser par la suite par l'intermédiaire des requêtes Ajax. L'exécution de code Javascript n'était pas interdite par Yahoo.
N'importe quel code pouvait donc être inséré dans un e-mail et s'exécuter dans le contexte de la victime. Une fois l'e-mail ouvert, le ver se propageait en envoyant une copie de lui-même à tous les contacts de la victime (avec un champ " From " correspondant à un des contacts).

Dernier exemple en date : Quickspace MySpace

MySpace est un site de rencontre utilisé par près de 73 millions de personnes dans le monde. La moindre faille pourrait affecter le profil de nombreux utilisateurs, ce qui fut le cas au mois de décembre dernier.
En effet, les pirates ont utilisé une fonction intégrée de Quicktime et une faille de Cross Site Scripting (corrigée maintenant) pour voler un grand nombre de comptes.

Le ver était écrit en Javascript et camouflé au sein d'une vidéo " .mov ".
Le principe est relativement simple. La vidéo malicieuse est glissée sur une page de profil MySpace.
Un usager MySpace se connecte alors sur le profil qui " héberge " la vidéo pirate.

Dès l'ouverture de la vidéo avec le lecteur Quicktime, le ver utilise une fonction nommée " HREF Track", qui oblige le lecteur à utiliser un code JavaScript (voir plus bas) afin de charger des pages web. Ce code téléchargeait un script " .js " aux adresses suivantes  :

http://almobty.com/css/[REMOVED].js
http://www.cake.fi/images/[REMOVED].js
http://www.daviddraftsystem.com/images/[REMOVED].js
http://www.tm-group.co.uk/images/[REMOVED].js


Le contenu du profil de l'utilisateur abusé était alors modifié. Une fausse barre de navigation remplaçait la barre officielle et pointaient vers des sites pirates qui affichaient une fausse page de login MySpace. Par ailleurs, il subtilisait les mots de passe et les login entrés par les victimes. Quant à la vidéo infectée, elle apparaissait sur le profil MySpace de l'utilisateur qui devenait alors le nouvel hôte pour diffuser le ver.

Enfin le code qui contenait aussi une fonction de spamming était envoyé par e-mail à tous les contacts du compte infecté.

Comme nous vous le disions au préalable, le problème vient du logiciel Quicktime et de la fonction " HREF track ". D'après Apple, cette fonctionnalité permet de définir des fonctions Javascript ou bien des pages web qui chargeront une "frame" ou fenêtre précise. En d'autres termes, une page web spécifiée dans une balise " HREF Track " s'ouvrira dès le lancement de la vidéo.

La fonction de Quicktime mise en cause n'a pas alerté Apple qui a délivré un correctif temporaire ne prévoyant pas cependant de supprimer cette fonction.

La faille PDF au centre des interrogations

Après l'insertion de code Javascript au sein de fichiers " .Mov " et " .swf " qui aident au développement de vers, un autre format de fichier extrêmement utilisé inquiète les experts en sécurité informatique.

Le format PDF peut également exécuter du Code Javascript à l'aide d'une simple URL. En ajoutant un morceau de code après le nom du fichier PDF dans l'URL, une attaque de Cross Site Scripting est possible. Tous les sites qui hébergent un tel fichier, sont alors vulnérables ce qui laisse un très grand nombre de cibles pour les développeurs de malwares.

Un article détaillé a, d'ailleurs, été rédigé par nos consultants. Il est disponible à l'adresse citée en référence.

Webographie



Explication du code du ver Samy :
http://namb.la/popular/tech.html

Article Xmco : La faille d'Acrobat Reader qui inquiète les DSI :
http://www.mag-securs.com/article.php3?id_article=6940

Description du ver Yamanner par F-Secure :
http://www.f-secure.com/v-descs/yamanner_a.shtml



Actualite Securite

Version complète en PDF

> Autres articles

+ Tous les articles

+ S'abonner à la newsletter



> Le cabinet Xmco Partners

+ La société

+ Contacts