Posté le octobre 19, 2020 à 15:02
LA VERSION DESKTOP DE DISCORD PRÉSENTAIT UNE FAILLE CRITIQUE QUI A PERMIS DES ATTAQUES RCE
On a récemment découvert que l’application de bureau de Discord présentait un certain nombre de failles et que son utilisation correcte pouvait conduire à une attaque RCE. Heureusement, les failles ont été découvertes dans le cadre d’un programme de prime aux bogues.
Aucun programme, application ou autre type de logiciel n’est parfait, et les chercheurs en sécurité finissent souvent par découvrir de nouvelles failles et vulnérabilités qui doivent être corrigées. L’exemple le plus récent est Discord, l’une des applications de messagerie mondiale les plus populaires, qui s’est révélée avoir un problème critique.
Le problème a été découvert par un chasseur de bogues, Masato Kinugawa, qui a créé une chaîne d’exploitation menant à des attaques par exécution de code à distance (RCE). Cela s’est produit il y a plusieurs mois.
Cependant, il a rendu publique cette faille le week-end dernier, révélant tous les détails techniques de l’attaque potentielle, qui combine en fait plusieurs failles.
La première faille
La première faille pertinente se trouve dans le cadre logiciel utilisé par l’application de bureau de Discord – Electron. Comme certains le savent peut-être, l’application Discord n’est pas open-source. Cependant, le code utilisé par Electron l’est et peut être examiné par n’importe qui.
Ce faisant, le chasseur de primes a découvert que l’un des paramètres de la version d’Electron était réglé sur faux. Le paramètre en question est « contextIsolation » et le fait qu’il soit faux signifie que le code JavaScript en dehors de l’application peut influencer celui à l’intérieur.
Selon Kinugawa, c’est dangereux, car Electron permet au code JavaScript d’avoir une trop grande influence. En gros, le code en dehors des pages web pourrait utiliser les fonctionnalités de Node.js à l’intérieur, et interférer avec elles.
La deuxième faille
La question suivante était de savoir comment exécuter JavaScript sur l’application elle-même, ce qui l’a conduit à la découverte d’un autre problème — celui du cross-site scripting (XSS). Ce problème se trouve dans la fonction iframe ember, que l’application utilise pour afficher des vidéos dans le chat lorsque l’utilisateur publie des URL depuis un autre endroit sur Internet.
Il s’agit d’une petite fonction amusante qui permet aux utilisateurs de regarder des clips YouTube dans Discord, et elle est également utilisée sur d’autres plateformes de médias sociaux. Cependant, sur Discord, elle souffre du problème XSS, qui a finalement conduit Kinugawa à un visualiseur de contenu 3D, Ketchfab.
Aujourd’hui, Discord autorise Sketchfab. Il est sur la liste blanche de la politique de sécurité du contenu de l’application, et peut même être inclus dans l’iframe.
Cependant, le problème réside dans le fait que le XSS basé sur le DOM peut être utilisé de manière abusive et détournée. Dans ses tests, Kinugawa n’a réussi à exécuter JavaScript que dans l’iframe elle-même. Ce qui signifie que ce problème ne suffit toujours pas à lui seul pour atteindre le RCE complet.
C’est alors que le chasseur de primes aux bugs a découvert une troisième menace importante.
La troisième faille
Dans la poursuite de ses recherches, Kinugawa a découvert un contournement de restriction de navigation, et la faille est apparue une fois de plus dans Electron. Cette fois, elle a été découverte dans son code d’événement de navigation volontaire, et elle est connue sous le nom de CVE-2020-15174.
En termes simples, il s’agit d’une erreur de traitement qui peut avoir des conséquences assez désastreuses si elle est combinée aux deux vulnérabilités précédentes. En utilisant une combinaison des trois, Kinugawa a pu réaliser avec succès une attaque RCE complète.
Il a contourné les restrictions de navigation, puis il a utilisé la faille XSS trouvée dans l’iframe pour accéder à un site web étranger, qui contenait une charge utile RCE.
Les failles ont été corrigées et l’attaque n’est plus possible
Après avoir confirmé que l’attaque est effectivement possible, Kinugawa est allé directement à Discord. Il a utilisé le programme de prime aux bogues de la compagnie pour révéler les failles et la méthode dans laquelle elles peuvent être utilisées.
Sachant ce qu’il fallait chercher, l’équipe de Discord n’a pas mis longtemps à identifier les bogues, à confirmer leur validité et à les corriger.
Les développeurs ont d’abord dû désactiver les embarquements de Sketchfab, puis ils ont ajouté un nouvel attribut « sandbox ».
La prime aux bogues a permis de suivre les changements, et dans son billet de blog, il a noté que le contextIsolation a été activé après un certain temps. L’attaque RCE ne peut plus être réalisée, même si un attaquant devait exécuter un JavaScript arbitraire sur l’application.
Heureusement, il semblerait qu’aucune autre entité n’ait réussi à identifier cette méthode de RCE avant le chasseur de prime aux bogues, il n’y a donc pas eu d’incidents de cette nature, pour autant qu’on le sache. Pour ses efforts, Kinugawa a reçu 5.000 dollars de Discord, et 300 dollars supplémentaires de Sketchfab, qui a également été informé de la défectuosité du XSS.