Främlingsfientliga avslöjas via hashningen hos Disqus

Uppdaterat 11 dec 2013: Disqus har via en hjälptext förklarat att de inte har blivit hackade, men har insett svagheten i att MD5-hasha användarnas e-postadresser och har plockat bort funktionen att hämta ut dem via API:et. Orginalinlägget för den ursprungliga metoden följer här nedanför.

Idag släppte Expressen en serie artiklar där de konfronterar anonyma kommentatorer på den främlingsfientliga sajten Avpixlat. Underlag för avslöjanden har de fått via Researchgruppen, som ännu inte har publicerat exakta detaljer hur de har kopplat ihop kommentatorerna med användarnas e-postadresser, men strax efter publiceringarna visade David Remahl (@chmod007) på Twitter hur Researchgruppen kan gått tillväga.

Med det här inlägget vill jag endast förtydliga tekniken lite bakom, då somliga verkar tro att det rör sig om ett avancerat hack (läs "crack") eller dataintrång. Det förstnämnda är det definitivt inte, ett dataintrång där emot – det antar jag att de lagkunniga diskutera vidare om, i mitt tycke är det dock fritt tillgänglig data som har används på ett smart sätt.

Disqus som plattform

Disqus är en plattform som man kan koppla ihop med sin webbsida för att tillåta besökarna att lämna kommentarer på ens artiklar. Det fina med Disqus är att det tillåter användarna att använda samma konto till alla webbplatser som använder sig av tjänsten.

Tjänsten är populär då den delvis är enkel att implementera, och används ofta på diverse nyhetssajter då man kan vara delvis (i alla fall till synes) anonym.

Disqus API

Disqus erbjuder ett API (Application Programming Interface) som möjliggör att webbutvecklare och programmerare kan bygga egna funktioner och applikationer med data från Disqus – enkelt förklarat.

Vem som helt kan registrera sig hos Disqus för att få ut en API-nyckel som krävs för att komma åt datan från deras plattform.

Hashing, MD5

Hashing (hashning eller vad man än väljer att kalla det för) en typ av envägkryptering, en textsträng kan "hashas" till en tillsynes unik sträng (inte alltid helt sant, men oviktigt här) – men den unika strängen kan inte konverteras tillbaka till den ursprungliga strängen. Det är på detta vis lösenord ska lagras i databaser (men som vi ofta ser i nyheterna att de inte är).

MD5 är en typ av hashningsalgoritm, som sedan länge (ända sedan 2008) anses trasig av många olika anledningar – det är dock också relativt oviktigt här, då samma svaghet skulle visa sig med flera andra algoritmer. Det är i alla fall med just MD5 som Disqus hashar användarnas e-postadresser.

För den som är mer intresserad av hashing och särskilt MD5 kan jag rekommendera Wikipedia-artiklarna om Hashing function samt om MD5.

Få ut en e-postadress ur Disqus-API:et

För att hämta ut en användares (hashade) e-postadress ifrån Disqus är enkelt, ett anrop kan se ut på följande vis:

https://disqus.com/api/3.0/users/details.json?user=username:username&api_secret=apiKey

Svaret man får är i JSON, och kan se ut så här:

{
    "code": 0,
    "response": {
        "name": "Marcus Olsson",
        "emailHash": "98709a12227745dcdf96d7b3b2034c32",
        "connections": {
            "twitter": {
                "url": "https://twitter.com/olssonm",
                "name": "Marcus Olsson"
            }
        },
        "reputation": 1.345504,
        "location": "Sweden",
        "numLikesReceived": 237,
        "isAnonymous": false,
    }
}

I det här svaret (som är något förkortat) finns det en rad parametrar som en utvecklare kan använda – den vi tittar särskilt intressant på är "emailHash" – detta är då användarens e-postadress, hashad med MD5-algoritmen.

Hur Researchgruppen kan ha jobbat

Då hashen i sig är ganska oanvändbar, så länge den inte ligger i någon MD5-databas över vanligt förekommande hashningar (ett exempel är den här: md5.gromweb.com som jag faktiskt hittade några av de avslöjades e-postadresser i) så behöver man bygga en egen databas.

Om Researchgruppens mål har varit att avslöja just SD-politiker och andra främlingfientliga så har de med största sannolikhet byggt upp sin egna databas med MD5-hasher via e-postadresser som de har skrapat och samlat in från nätet, där man publikt kan hitta e-postadresser till flera SD-politiker och SD-annhängare. Därefter skulle de väldigt snabbt kunna korrelera kommentatorers e-postadresser mot sin egna databas. Det hela är väldigt enkelt och skulle förmodligen inte ta mer än ett par timmar för en duktig programmerare att genomföra (dock längre tid för att faktiskt bygga upp sin databas med MD5-hasher).

Följderna

Disqus har i sig själva inte gjort något fel – många system är byggda på samma sätt, med samma potentiella svagheter. Förmodligen har de inte sett att en körning mot förhashade e-postadresser sågs trolig nog. Eller att de helt enkelt ansåg att kommentatorerna var "tillräckligt anonyma".

Jag har redan sett flera ropa "Säkerhetsläcka!" och "Dataintrång!" – men så är inte fallet. Jag har t.o.m. sett dem som har hävdat att Disqus själva har tillkännagivit dataintrång – vilket det inte finns någon tillgänglig information om i nuläget.

Researchgruppen kan mycket väl ha använt en helt annan metod (de faktiskt kanske har lyckats hacka t.ex. en moderators konto?) – men det här verkar mest trolig. De verkar vara duktiga på det de gör, och hoppas på att de är försiktiga med att dra förhastade slutsatser. Disqus kan potentiellt vara ett helt anonymt system om en webbplats tillåter sina användare att kommentera med gästkonton, där man kan ange vilken e-postadress som helst – vilket i sin tur kan innebära att fel personer "avslöjas".

Kommentarer eller rättelser? @olssonm är jag på Twitter.

Igen, stort eloge till @chmod007 som uppmärksammade en variant av den här metoden.