Door het combineren van drie kwetsbaarheden in de desktopversie van het populaire chatplatform Discord hadden aanvallers op afstand code kunnen uitvoeren. Discord heeft de problemen inmiddels verholpen en onderzoeker Masato Kinugawa die de beveiligingslekken rapporteerde met 5.000 dollar beloond.
Het eerste probleem dat Kinugawa aantrof bevond zich in het Electron-opensourceframework waar de desktopversie van Discord gebruik van maakt. De Discord-ontwikkelaars hadden een bepaalde optie op zo'n manier ingesteld waardoor JavaScriptcode buiten de app het uitvoeren van interne JavaScriptcode kon beïnvloeden. Deze code zou ook verschillende "preload scripts" kunnen aanroepen. Via deze preload scripts was weer een functie benaderbaar waarmee remote code execution mogelijk was.
Voor zijn aanval moest Kinugawa nog wel een manier vinden om zijn JavaScriptcode in de Discord-applicatie uit te voeren. Hiervoor gebruikte hij een kwetsbaarheid in de iframe embeds feature van Discord. Deze feature zorgt ervoor dat de videospeler automatisch in de chat wordt weergegeven bij het plaatsen van bijvoorbeeld een YouTube-link. Wanneer de url in de chat verschijnt probeert Discord informatie over de url op te halen en weer te geven, zoals titel, omschrijving, thumbnail-afbeelding en ander zaken.
Discord doet dit echter voor een select aantal goedgekeurde domeinen, waaronder het domein sketchfab.com. Via Sketchfab is het mogelijk om 3d-modellen te publiceren, kopen en verkopen. In de voetnoot van de 3d-modellen op sketchfab.com was het mogelijk om cross-site scriptingcode toe te voegen waarmee Kinugawa zijn JavaScriptcode binnen de Discord-app zou kunnen uitvoeren.
De onderzoeker laat een demonstratie zien waarbij hij in de chat van Discord een link naar een Sketchfab-model plaatst. Discord ziet dat Sketchfab een goedgekeurd domein is en haalt de informatie van het 3d-model op, waaronder de code van de voetnoot. Deze informatie wordt vervolgens middels een iframe in de chat weergegeven. Wanneer het doelwit nu een aantal keren in het iframe klikt wordt de externe JavaScriptcode, mede door een "navigation restriction bypass" in het Electron-framework uitgevoerd en vindt er remote code execution plaats.
Kinugawa waarschuwde Discord, Sketchfab en Electron, waarna de problemen werden verholpen. De eerste twee bedrijven beloonden de onderzoeker via hun bug bounty-programma's met respectievelijk 5.000 en 300 dollar. In onderstaande video wordt de aanval gedemonstreerd.
Deze posting is gelocked. Reageren is niet meer mogelijk.