SJs app läcker resenärsinformation
Uppdatering 21:56: SJ har under kvällen täppt till informationsläckan. Det är inihelvete snabbt agerat, och möjligheten att kartlägga deras användare är därmed eliminerad. Nedanstående information är således att betrakta som inaktuell och hopplöst föråldrad.
Igår lanserade SJ till slut sin efterlängtade app. Många har påpekat dess likheter med Tågtavlan, vilket må vara hänt - Tågtavlan kom till för ett och ett halvt år sedan på grund av att SJ då saknade en dylik app, så att det finns likheter är egentligen inte särskilt konstigt.
SJs app kommunicerar, likt Tågtavlan, över ett öppet HTTP-baserat protokoll. Erik Petterson har kartlagt detta protokoll, och gjort en intressant upptäckt: Om du använder SJ:s app, så exponerar de öppet alla bevakningar du och alla andra har lagt upp på nätet, tillsammans med telefonernas unika ID (UUID) som i förlängningen kan användas för att identifiera användarna. Låter det illa? Det är det:
Vem som helst kan ladda ned denna information och använda den för att identifiera deras kunder och kartlägga deras resevanor.
Att få tag i informationen är så enkelt som att klicka på en länk. Att koppla telefonernas ID-nummer till deras ägare är lite trixigare, men det finns goda skäl till att både Google och Apple är tydliga med att telefonernas unika IDn inte ska strösslas med hur som helst.
En annan pikant detalj är att samma öppna gränssnitt till och med kan användas av illvilliga individer för att lägga till, ta bort och/eller ändra alla bevakningar.
Jag publicerar inte direktlänken till datat här, men utförlig teknisk information om kommunikationsprotokollet hittas på en länk som jag har raderat eftersom det inte finns någon poäng med att fortsätta banka på den här hästen.
Att använda sig av det tror jag dock är en dålig idé - detta är ett uppenbart privat gränssnitt mot ett företags data, även om de har lämnat ytterdörren på vid gavel. Ett skolexempel på security through obscurity, kan man säga.
Vid 15-tiden kom svar från SJ: "Det finns ingen personlig info i appen, inte ens UD ID. Det vi kallar device ID är endast kopplat till appen. Trots det ska vi göra om den så den blir krypterad så fort som möjligt."
Det finns inget fel, men det ska ändå åtgärdas. Glasklart?!
Min iPhones UUID (hämtat med Ad Hoc Helper):

Optisk illusion Min iPhones UUID i subscriptions.json:

Jag kallar slarvigt denna teckenserie för UUID (Universally Unique Identifier), en mer generell term än UDID (Unique Device Identifier). Båda uttrycken används av hävd i iOS-världen för att beskriva samma sak, nämligen telefonens unika ID-nummer. Se t.ex. http://www.ispeeddial.com/how-to-find-your-iphone-uuid/.
Strax efter att dessa bilder postades återkom SJ med följande besked på Twitter: "Vi var övertygade om att vi hade rätt. Nu undersöker vi vad detta beror på och ska åtgärda snarast. Vi hade fått försäkringar från vår dataleverantör att mobildevise-ID inte skulle synas. Nu går det bevisligen att spåra användartelefonen. Det är olyckligt och ska ändras snarast". Jättebra, och föredömligt snabbt agerat med tanke på att problemet upptäcktes vid lunchtid.
Jag har även pratat med SJ:s projektledare Tobias över en svajig mobillinje. Jag kunde inte urskilja några svordomar (vilket hedrar honom), och såvitt jag kunde förstå hade de alltså beställt en lösning där interna, slumpmässiga ID-sekvenser skulle användas istället för UUID och även fått detta bekräftat av leverantören idag. Därför var de helt säkra på att ovanstående beskrivning av problemet var fel, och därav deras tvärsäkra, men felaktiga, första svar. Sannolikt är det dessutom endast iPhone-appen som har detta fel.
Lösningen läcker UUID:s som ett såll i dagsläget, men det beror alltså på att leverantören har tabbat sig. Foliehatt av, således, och som utvecklare som också gjort sig skyldig till ett och annat misstag genom åren tänker jag inte börja kasta sten i det glashuset.
2011-09-29 12:03