Actualités

Discord : trois vulnérabilités découvertes dont une de type XSS !

Presque par hasard ou “envie“, un chercheur du nom de Masato Kinugawa a publié, au 17 Octobre dernier, le PoC de trois vulnérabilités sur Discord permettant, en finalité d’exploiter ou d’exécuter à distance du code.

 

 

Voici un condensé des failles mises en exergue :

 

  • Premièrement, au sein du framework Electron : depuis un contournement JavaScript d’Electron (dont le contenu peut être “sauvegardé localement” du fait de la consultation libre du format ASAR du projet), une défaillance apparaissait au niveau de l’API BrowserWindow, au sein des options. La fonction require () s’opère sur une valeur “true” de Node.js ce qui permet une exécution directe de code. Combiné avec une autre option (ContextIsolation) dont la valeur est “false”, “le JavaScript d’une page Web peut affecter l’exécution du code JavaScript interne d’Electron sur le moteur de rendu et les scripts de préchargement (dans ce qui suit, ces JavaScript seront appelés le code JavaScript en dehors des pages Web). Par exemple, si vous remplacez Array.prototype.join, l’une des méthodes intégrées JavaScript, avec une autre fonction du JavaScript d’une page Web, le code JavaScript en dehors des pages Web utilisera également la fonction remplacée lorsque la jointure est appelée“. Il s’agit d’une vulnérabilité déjà évoquée (et découverte en binôme, avec un dénommé Cure53) en 2016 au détour de la CureCon d’Août 2018 : à l’époque, Electron était au courant de cette brèche et avait déployé, sur les recommandations des chercheurs, le ContextIsolation. Comme indiqué par son nom, l’isolement contextuel (entre les pages HTMLs et le code JavaScript hors pages) avait été conçu pour justement éliminer une menace potentielle d’exécution de code à distance. Par rapport au PoC de 2016, l’exploitation de la présente faille a été limitée hors pages Web ou avec une impossibilité d’introduire des outils complémentaires malveillants mais des contournements ont été, possible : “j’ai pu confirmer que l’application calc est apparue lorsque j’appelle la fonction getGPUDriverVersions qui est définie dans le module appelé “discord_utils” de devTools, tout en remplaçant RegExp.prototype.test et Array.prototype.join” ;

 

  • Deuxièmement, au sein d’iFrame qui génère ou déploie un contenu vidéo : en temps normal, l’appel (algorithmique) de ce contenu vidéo se fait par étape sécuritaire depuis l’URL via l’OGP (titre, description, date, miniature de la vidéo, contenus relatifs…). Si le domaine fait partie des URLs autorisés à être chargés dans les pages, le contenu s’affiche. Faute de documentation fournie, “un par un“, le chercheur a chercher une URL permettant d’injecter directement “en spécifiant le domaine dans les informations OGP“. Sketchfab.com a été un candidat à cette pêche malveillante (frame-src, CSP). Du fait de l’isolement contextuel, le JavaScript ne s’exécute pas, en partie, librement : pour opérer une faille XSS, “new-window” et “will-navigate” peuvent être utilisé pour parfaire l’exploit ;

 

  •  Enfin, troisièmement, en combinant les deux failles. Assignée CVE-2020-15174, elle permet de boucler l’exploit quand bien même le top-windows et l’iframe sont de nature différente : “j’ai trouvé que l’événement “will-navigate” n’est pas émis à partir de la navigation supérieure démarrée à partir d’une iframe pour une raison quelconque. Pour être exact, si l’origine du top et l’origine de l’iframe sont dans la même origine, l’événement est émis mais s’il est dans l’origine différente, l’événement n’est pas émis“.

 

Signalée à Discord, la vulnérabilité (intégrant ces trois exploits) a été intégré au bug bounty de la plate-forme communautaire qui a rapidement rendu inactif Sketchfab tout en ajoutant une sandbox depuis l’iFrame. Bien évidemment, l’isolement contextuel a été, par défaut, activé (true) “après un certain temps“. Enfin et en tout, 5 300 dollars ont été versés au chercheur… A veiller !

 

 

Source : Masato Kinugawa – 17 Octobre 2020 – Discord : 3 vulnérabilités permettait des exploits de type Remote Code Exécution.




  • 50% J'apprécieVS
    50% Je n'apprécie pas
    Pas de commentaire

    Laisser un commentaire

    ;) :zzz: :youpi: :yes: :xmas: :wink: :whistle: :warning: :twisted: :sw: :sleep: :sg1: :schwarzy: :sarko: :sante: :rollol: :roll: :rip: :pt1cable: :popcorn: :pff: :patapai: :paf: :p :ouch: :oops: :o :non: :na: :mrgreen: :mdr: :macron: :love: :lol: :kissou: :kaola: :jesuisdehors: :jap: :ilovesos: :idea: :houra: :hello: :heink: :grumpy: :fume: :frenchy: :fouet: :fouet2: :first: :fessee: :evil: :dispute: :demon: :cryy: :cry: :cpignon: :cool: :cassepc: :capello: :calin: :bug: :boxe: :bounce: :bluesbro: :bisou: :babyyoda: :assassin: :arrow: :annif: :ange: :amen: :D :??: :?: :/ :-| :-x :-o :-P :-D :-? :-1: :+1: :) :( 8-O 8)

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

    Copyright © Association SOSOrdi.net 1998-2020 - v1.3.1