Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 

De la Théorie à la pratique











Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

Check Point : La plateforme eBay est exposée à une grave vulnérabilité

février 2016 par Check Point

Check Point alerte eBay au sujet d’une vulnérabilité de sa plateforme de vente en ligne qui permet à des cybercriminels de diffuser des campagnes de phishing et des logiciels malveillants.

eBay, le géant de la vente aux enchères et du commerce électronique en ligne, possède des bureaux dans plus de 30 pays et plus de 150 millions d’utilisateurs actifs dans le monde. L’entreprise ayant une clientèle importante, il n’est donc pas surprenant qu’elle soit la cible de nombreuses cyberattaques.

Check Point a découvert une grave vulnérabilité dans la plateforme de vente en ligne d’eBay. Cette vulnérabilité permet à un agresseur de contourner la validation de code d’eBay et de contrôler le code vulnérable à distance pour exécuter du code JavaScript malveillant auprès d’utilisateurs ciblés. Sans correction de cette faille, les clients d’eBay continueront d’être potentiellement exposés à des attaques de phishing et de vol de données.

Un agresseur pourrait cibler les utilisateurs d’eBay en leur envoyant une page légitime contenant du code malveillant. Lors de l’ouverture de la page, le code serait alors exécuté par le navigateur de l’utilisateur ou une application mobile, conduisant à plusieurs scénarios inquiétants allant du phishing jusqu’au téléchargement binaire.

Après avoir découvert la vulnérabilité, Check Point en a communiqué les détails à eBay le 15 décembre 2015. Cependant, le 16 janvier 2016, eBay a déclaré n’avoir prévu aucune correction de la vulnérabilité. La démonstration de la méthode d’exploitation est encore disponible en ligne.

Découverte de la vulnérabilité

Roman Zaikin, chercheur de Check Point, a récemment découvert une vulnérabilité qui permet à des pirates d’exécuter du code malveillant sur les appareils des utilisateurs d’eBay, à l’aide d’une technique non standard appelée « JSF**k ». Cette vulnérabilité permettrait à des cybercriminels d’utiliser eBay comme plateforme de phishing et de diffusion de logiciels malveillants.
Pour exploiter cette vulnérabilité, un agresseur a simplement besoin de créer une boutique eBay en ligne, et publier une description malveillante d’un article dans les détails de sa boutique. eBay empêche les utilisateurs d’inclure des scripts ou des iFrames en filtrant les balises HTML. Cependant, grâce à JSF**k, l’agresseur peut créer un code qui va charger du code JS supplémentaire depuis son serveur. Cela lui permet d’insérer du JavaScript qu’il peut contrôler et ajuster à distance, par exemple, pour adapter son attaque à un navigateur différent. eBay n’effectue qu’une simple vérification, et ne supprime que les caractères alphanumériques des balises de script. La technique JSF**k permet aux agresseurs de contourner cette protection en utilisant un nombre très limité de caractères.

Voilà ce que vous obtenez si vous incluez le JavaScript de votre site distant :

Voilà à quoi ressemble un simple script JSF**k :

Voilà à quoi ressemble l’exploitation réussie de la vulnérabilité :

Comme on peut le voir, le message qui apparaît sur l’application eBay (plus précisément dans la boutique de l’agresseur sur le site eBay) incite l’utilisateur non averti à télécharger une nouvelle application mobile eBay en proposant une remise. L’utilisateur qui appuie sur le bouton « Télécharger », téléchargera à son insu une application malveillante sur son appareil mobile.

L’avis de Check Point...

« La méthode d’attaque fournit aux cybercriminels un moyen très facile de cibler les utilisateurs en leur envoyant un lien vers un produit très attrayant pour exécuter l’attaque. La principale menace est la diffusion de logiciels malveillants et le vol de données privées. Un agresseur pourrait également proposer une méthode de connexion alternative via Gmail ou Facebook pour détourner des comptes utilisateurs, » précise Oded Vanunu, responsable d’un groupe de recherche chez Check Point. « Check Point reste à l’affût des vulnérabilités dans les applications et les plateformes Internet courantes. En communiquant les menaces au fur et à mesure de leur découverte, nous protégeons l’avenir. »

À propos de JSF**k

Développée par Martin Kleppe, cette technique, qui utilise des caractères non alphanumériques, permet à un agresseur de contourner les processus de nettoyage IDS, TPRet WAF. Seuls 6 caractères différents sont utilisés : []() !+

Le vocabulaire de base suivant nous permet de rédiger tout ce dont nous avons besoin :
1. [ and ] – Accède à des éléments d’un tableau et des propriétés d’objets, obtient des nombres et converti des éléments en chaînes de caractères.
2. ( and ) – Appelle des fonctions et évite les erreurs d’analyse.
3. + – Ajoute des éléments à des chaînes de caractères, additionne et convertit des éléments en nombres.
4. ! – Convertit des éléments en booléens.

Fonctionnement de la logique de programmation

Commençons par la représentation des nombres à l’aide de cette technique. 0 est représenté par +[] :

Cela fonctionne car nous demandons la première valeur d’une liste vide. C’est donc zéro.

Selon notre vocabulaire de base, si nous souhaitons la convertir en valeurs booléennes « vrai » ou « faux », nous ajoutons juste un point d’exclamation «  ! » :

Si nous convertissons « vrai » en nombre entier, nous obtenons le chiffre 1. Pour convertir des booléens en entiers, nous avons juste besoin d’ajouter « + ». Si nous souhaitons obtenir des chaînes de caractères, nous ajoutons « +[] », comme dans l’exemple suivant :

Comme vous pouvez le voir, la programmation est très simple. Si nous souhaitons les combiner pour obtenir des nombres plus élevés, tels que 123, nous écrivons 1, 2, 3 sous forme de chaîne de caractères et la convertissons en entier. Nous pouvons produire n’importe quel entier par cette technique. Pour obtenir des caractères, nous écrivons les mêmes symboles pour créer un tableau, comme dans l’exemple suivant :

• True – Obtenu à partir de «  !![] »
• False – Obtenu à partir de «  ![] »
• NaN – Obtenu en convertissant un objet en nombre : +
• [Objet Objet] – Obtenu à partir de « []+ »
• Undefined – Obtenu en accédant à un élément non existant d’un tableau : [][+[]]

L’utilisation de ces symboles nous permet d’obtenir ces caractères :
« a », « b », « c », « d », « e », « f », « i », « j », « l », « n », « N », « o », « O », « r », « s », « t », et « u ».

Grâce à notre alphabet et ces chaînes de caractères, nous pouvons obtenir les fonctions suivantes :
• Function from array[“sort”][“constructor”]
• Array from array[“constructor”]
• Boolean from false[“constructor”]
• Number from 0[“constructor”]
• Object from [“constructor”]
• String from string[“constructor”]
• prototype.call from f[“call”]
• prototype.concat from string[“concat”]
• prototype.join from array[“join”]
• prototype.slice from array[“slice”]
• prototype.sort from array[“sort”]

Le DOM nous permet d’obtenir le reste des caractères, tels que :

Function(“return location”)() nous apporte « h », « p » et « / ». Nous pouvons donc maintenant créer un mot.

Unescape(“%” + HEXA_ASCII_VALUE) – Il nous manque le caractère « % », mais nous pouvons l’obtenir en échappant « [ ». Cela nous permet d’obtenir %5B.

Le code suivant représente le texte alert(1) dans les balises JavaScript :

Le résultat est un code JavaScript normal avec 6 caractères non alphabétiques.

Communication responsable et réponse de la part d’eBay

Notre rapport initial date du 15 décembre, suivi d’une preuve de concept et d’une description de la vulnérabilité.
eBay a apparemment décidé qu’il ne s’agit pas d’une vulnérabilité puisque le contenu actif est autorisé !
Revenons à la question du contenu actif. eBay autorise effectivement le contenu actif, mais avec une politique très stricte pour contrôler ce qui est permis (pour des raisons évidentes).

Comme nous l’avons démontré à l’équipe de sécurité d’eBay dans la preuve de concept, nous avons pu contourner la politique de sécurité d’eBay et insérer du code malveillant dans la page de notre boutique sans aucune difficulté ni restriction.

À ce stade, il ne nous reste plus à espérer qu’eBay finira par décider de s’occuper de cette vulnérabilité.




Voir les articles précédents

    

Voir les articles suivants