image

Spotify-accounts gekaapt via unicode-karakters

woensdag 19 juni 2013, 13:59 door Redactie, 3 reacties

De populaire muziekdienst Spotify is trots dat het gebruikersnamen met unicode karakters ondersteunt, iets wat niet veel online diensten doen, maar het zorgde er ook voor dat kwaadwillenden accounts van anderen konden overnemen. Unicode is een internationale standaard voor de codering van binaire codes naar grafische tekens en symbolen, vergelijkbaar met de ASCII-standaard.

De standaard voorziet alle tekens en symbolen ("karakters") van alle geschreven talen van een nummer. Enige tijd geleden werd er op het Spotify-forum melding gemaakt van een lek waardoor het mogelijk was accounts van gebruikers over te nemen. Een forummanager daagde de gebruiker uit die het probleem had ontdekt en werd inderdaad gehackt.

Registratie
Het probleem werd veroorzaakt door de manier waarop Spotify met geregistreerde gebruikersnamen omging. Gebruikers konden gebruikersnamen registreren die al door andere gebruikers waren geregistreerd. Vervolgens gingen ze naar de wachtwoord-vergeten optie en kregen ze een resetlink voor het gelijknamige account van de andere gebruiker.

In het geval van Spotify was het bijvoorbeeld mogelijk om het account 'bigbird' over te nemen door een account 'BIGBIRD' te registreren. De muziekdienst had wel een functie die dit moest voorkomen, maar die bleek niet goed te functioneren als er unicode karakters werden gebruikt.

Spotify legt in een blogposting uit hoe het probleem precies ontstond en het uiteindelijk werd verholpen. De twee gebruikers die het probleem rapporteerden kregen een aantal maanden Spotify premium als cadeau.

Reacties (3)
19-06-2013, 14:26 door Anoniem
En dan moet je je voorstellen dat unicode niet alleen alle karakters ooit wil codificeren, maar ook alle varianten, en dat ze daar per karakter(variant) minstens twee, vaak nog meer, manieren voor hebben. Je hebt bijvoorbeeld niet alleen de e-met-trema, maar ook de (e)+(trema). En dan hebben we het nog niet over varianten die vrijwel (of zelfs exact) eruitzien maar semantisch net een tikkeltje anders zijn, of truuks als beedteloze spaties ertussenzetten, en ga zo maar door. En dat is nadat je je netjes hebt ingedekt tegen rotten met encodering als invalide utf-8 reeksen in je input, wat nog niet eens heel makkelijk is om correct te doen.

Zelfs met het toch behoorlijk ingeperkte IDN (unicode voor domeinnamen) kan je al behoorlijk rotten. Je wil niet weten wat er met het volledige unicode allemaal kan. Wat dat betreft is unicode gewoon niet zo vreselijk geschikt voor algemeen gebruik. Het kan teveel, wil teveel, en eet van veelteveel walletjes tegelijk.
20-06-2013, 14:07 door Anoniem
Door Anoniem: En dan moet je je voorstellen dat unicode niet alleen alle karakters ooit wil codificeren, maar ook alle varianten, en dat ze daar per karakter(variant) minstens twee, vaak nog meer, manieren voor hebben. Je hebt bijvoorbeeld niet alleen de e-met-trema, maar ook de (e)+(trema). En dan hebben we het nog niet over varianten die vrijwel (of zelfs exact) eruitzien maar semantisch net een tikkeltje anders zijn, of truuks als beedteloze spaties ertussenzetten, en ga zo maar door. En dat is nadat je je netjes hebt ingedekt tegen rotten met encodering als invalide utf-8 reeksen in je input, wat nog niet eens heel makkelijk is om correct te doen.

Zelfs met het toch behoorlijk ingeperkte IDN (unicode voor domeinnamen) kan je al behoorlijk rotten. Je wil niet weten wat er met het volledige unicode allemaal kan. Wat dat betreft is unicode gewoon niet zo vreselijk geschikt voor algemeen gebruik. Het kan teveel, wil teveel, en eet van veelteveel walletjes tegelijk.


Maar unicode is leuk, dat dan weer wel.
21-06-2013, 08:29 door Anoniem
Door Anoniem: Maar unicode is leuk, dat dan weer wel.
In welke zin? In de zin dat de code om het onder handen te nemen ondertussen meer dan de helft van libc inneemt en dat is nog niet voldoende want, bijvoorbeeld, een "canonical" concept zit daar niet in, die moet je ergens anders halen? Dat conversie- of manipulatiecode vaak eruitziet als iets wat een leuk tdwtf-artikel zou opleveren? Dat je dus veel meer van de materie moet weten om er veilig mee om te gaan, zoals we gezien hebben, dan de meeste programmeurs zelfs maar willen weten?

Of bedoel je meer voor de eindgebruiker, die het vast handig vindt om zowel een griekse Omega als een identiek eruitziend Ohmsymbool tot de beschikking te hebben? Wat zeg maar ook reuze handig is als zulke tekens in wachtwoorden terechtkomen, ik noem maar iets.

Waar zit trouwens die sneeuwman op het toetsenbord? Hoe kom ik anders bij (sneeuwman).net? Ik wil ook bij de leuke kant van het internet, potmetdriedubbeltjes!
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.