28. februar 2010

Om Twitter og sikkerhet

I dette innlegget vil jeg rette fokus mot Twitter-sikkerhet generelt og tilgang for 3.parts applikasjoner spesielt. Mange kan allerede dette, men jeg prøver å reflektere over sikkerhet med utgangspunkt i hvordan weben er programmert, hvordan tjenester kommuniserer seg i mellom, og hva dette kan innebære med tanke på strategier for sikker bruk.

Bakgrunn: Phishing er høyaktuelt

I etterkant av jordskjelvet i Chile februar 2010 var det flodbølgevarsel mange steder i Stillehavet/Asia, blant annet på Hawaii. Den 27.februar var det veldig mange som sendte Twitter-meldinger med informasjon, observasjoner fra folk på Hawaii, lenke til direktesendinger, bilder og analyser. Spammerne hev seg raskt på og sendte tilsynelatende flodbølge-relaterte meldinger med lenker til sitt innhold (for eksempel porno, spyware eller phishingforsøk). De utnyttet med andre ord en katastrofesituasjon til å prøve å lure andre. Det er fort å gå i fellen for brukere som er opprørte og desperate etter å få informasjon, eller bare ønsker å følge med "live". Forkortede lenker (bit.ly og tiny.url) er smarte for å spare tegnplass, men en flott metode for å lure folk.

I forrige blogginnlegg tok jeg utgangspunkt i et konkret phishing-forsøk på Twitter og så på hvorfor brukere lett kan gå fem på og hvordan hackeren tenker for å realisere phishingen i praksis. Phishing er en varig trussel, og det kommer stadig nye og troverdige phishing-forsøk og metoder. Målet med slike angrep er som regel å samle inn flest mulig brukernavn/passord. Mange brukere har samme passord på ulike tjenester, så verdien av en stor passordsamling er gull verdt for hackeren, men det kan også være andre motiver for å fiske til seg brukerdata.

Om du først blir utsatt for angrep eller har mistanke om at noe er galt, så er det mest åpenbare tiltaket å endre passordet så raskt som mulig. Da vil ikke lenger en eventuell hacker kunne misbruke kontoen din. Tilsynelatende.

But behold. There is more.

Connections-innstillingen i Twitter

Etter å ha dypdykket litt i Twitter+phishing og blant annet fått tips av @AtelierKari, er det ett tiltak som er minst like viktig som å regelmessig endre passord, og som alle bør gjøre fra tid til annen. Under Settings på twitter.com er det en arkfane som heter Connections. Her vises alle 3.parts applikasjoner som har tilgang til å gjøre bruk av Twitter-kontoen din. Du har selv godkjent (autorisert) slike, men du har trolig ikke lagt dem til via Twitter-innstillingene.

Bildet over (klikk for stor versjon) viser en applikasjon som jeg brukte for en tid tilbake. Jeg ønsket å generere et bilde av mine følgere på Twitter til bruk i en presentasjon om sosiale medier (på en konferanse). Jeg fant tjenesten Twilk, som kan lage et flott collage-bilde bestående av profilbildet til alle mine følgere (til høyre, klikk for stor versjon).

Twilk trenger derimot aksess til min brukerkonto for å kunne gjøre dette (fordi Twitter sitt API krever autentisering fra applikasjoner som for eksempel vil lese meldingshistorikken til en bruker). Jeg måtte derfor gi Twilk tilgang til Twitter før Twilk kunne sette i gang med jobben. Ser du et potensielt faremoment her?

OAuth, 3.partsapplikasjoner og API

La oss først se kort på hva et API er. Jeg har selv programmert et lite system som poster Twitter-meldinger automatisk i kraft av en annen bruker. Det brukte jeg til å spre 150 mac-tips automatisk utover sommeren 2009. For å få til det, måtte jeg gjøre bruk av Twitter-API-et. Det har Twitter-utviklerne programmert slik at andre utviklere (meg for eksempel) kan gjøre nytte av sentral funksjonalitet i Twitter, det være seg å poste meldinger, lese meldinger, telle opp antall følgere, hente ut brukernavnet til følgere og så videre. API-et gir tilgang til verdier Twitter har, slik at andre utviklere kan lage egne systemer som bruker disse verdiene.

Twilk (nevnt over) bruker noe som heter OAuth, en åpen protokoll for å autorisere tilgang til en tjeneste fra en annen via et API. Med OAuth kan utviklere lage programvare/tjenester som gir tilgang i kraft av en bruker på en annen tjeneste. Siden Twilk bruker OAuth mot Twitter vil Twilk ikke få brukernavnet og passordet mitt, men har likevel tilgang til å operere mot min konto. OAuth brukes som metode for å gi Twilk privilegier for min Twitter-bruker. Det er bra, for det er nettopp det som må til for å utføre jobben. Jeg vil at Twilk skal kunne hente alle profilbildene til mine følgere, og sette disse sammen til ett stort bilde sortert etter frekvens på hvor ofte vi har kommunisert på Twitter. Jeg vil derimot IKKE at Twilk skal få passordet mitt, for jeg vet ikke hvem som har laget Twilk og stoler ikke på at de har ærlige hensikter. Altså kun tilgang, intet passord. OAuth sikrer dette.

Når bildet jeg "bestilte" var ferdig laget av Twilk, så ønsket jeg ikke å lage flere. Dette var altså en engangsbruk for meg. Men - det jeg nå har oppdaget (en måned i etterkant) er at Twilk fortsatt ligger inne med aksess som autorisert 3.partsapplikasjon under Connections-innstillingen i Twitter! Dette er utrolig skummelt. Jeg kan bytte passord og føle meg trygg, men Twilk har likevel tilgang. Tenk over hvilke følger dette egentlig har. Det er jeg som først gav tilgang og den er vedvarende. Twilk har ikke passordet mitt, men kan likevel operere mot kontoen min slik de vil. De kan faktisk sende spam-meldinger i mitt sted, selv om de har lovet meg på websidene deres at de kun skal samle inn alle profilbilder til mine følgere. Jeg stoler på at de ikke gjør det, men kan jeg være sikker?

Tiltak for beskyttelse

Svaret er nei. Jeg kan ikke stole på Twilk, og jeg kan ikke stole på noen andre aktører. La oss ta noen tankeeksperimenter (med Twilk som tilfeldig hypotetisk eksempel :-) Twilk kan starte med ærlige hensikter, men bli kjøpt opp av uærlige mennesker. Twilk kan være designet til å være tilsynelatende nyttig mens hensikten egentlig er å lure folk til å gi tilgang til deres aller helligste på Twitter. Twilk eller en hvilken som helst annen Twitter-tjeneste kan lure meg. Jeg vet ikke, og derfor må jeg ta forhåndsregler.

Dersom du gir tilgang til en 3.parts tjeneste i Twitter-sammenheng, så foretrekk de som benytter Oauth. Vær skeptisk hvis tjenesten ikke bruker OAuth, men eksplisitt ber om ditt brukernavn og passord. Vil du virkelig leke med ilden, så kan det være lurt å endre Twitter-passordet først (for eksempel til "1234"). Logg så inn (lek med ilden), bruk tjenesten, gjør deg ferdig og endre deretter tilbake til ditt opprinnelige passord igjen. Da har en potensiell uærlig aktør fått et ubrukelig passord.

Slett 3.partstjenester fra Connections-innstillingen med en gang du er "ferdig" med å bruke dem.

Twitter anbefaler selv på sine websider å sjekke Connections-innstillingen jevnlig (takk til @AtelierKari for lenke. Dette gjelder selv om du ikke mener du har gitt tilgang til noen 3.partsapplikasjoner! Du kan nemlig være "hacket" uten at du vet om det, og hackeren kan ha gitt tilgang til applikasjoner i ditt sted. Hvis det skjer, så har hackeren kontroll selv om du bytter passord, fordi slike applikasjoner er autoriserte en gang for alle uavhengig av hvor ofte du bytter passord. Fjern de tjenester du får listet opp som du ikke har et aktivt forhold til. Da bør du være rimelig trygg. Dette kan virke paranoid, men du vet aldri hvordan mennesker bak slike tjenester har tenkt og programmert løsningen sin. Tjenester som kan synes profesjonelle og nyttige, kan i virkeligheten være et skalkeskjul for noe helt annet.

I tillegg til alle tiltakene nevnt i dette innlegget (med evt. kommentarer) bør du også se på forrige blogginnlegg med kommentarer, som lister en del viktige tiltak for å beskytte seg mot phishing. En viktig strategi er for eksempel å anse varsler som kommer per e-post kun som en varsling om at noe er nytt, ikke som en snarvei til dette nye (sier sikkerhetsguru Bruce Schneier). Altså må du logge eksplisitt inn på tjenesten i stedet for å klikke på lenken. Det tar litt mer tid, men er sikrere og er noe jeg som regel gjør selv, uansett hvor troverdig lenken ser ut.

Oppsummering og konklusjon

Det kan være flere kilder til misbruk av din Twitter-konto. Hvis en hacker får deg på fiskekroken og får vite passordet ditt, så kan hackeren poste meldinger i ditt sted (for eksempel gjennom et automatisert script eller ved manuell innlogging). Et umiddelbart tiltak er tilsynelatende å bytte passord. Dette kan løse problemet, men som vi har sett er det også mulig for hackeren å legge inn 3.partsapplikasjoner som for alltid vil være autoriserte, uavhengig av dine passordskifter. Det er derfor viktig å både endre passord jevnlig/ved mistanke og å sjekke Connections-innstillingene i Twitter hvor autoriserte 3.partsapplikasjoner kan administreres. Bruk gjerne 3.partsapplikasjoner, men vær alltid varsom og grunnleggende skeptisk. Da går det bra. Disse forhåndsreglene gjelder for øvrig ikke bare Twitter, men også Facebook og andre Web 2.0-tjenester.

Dersom du tror dette innlegget kan ha nytte for andre som kan ha nytte av å kjenne til problematikken, så spre gjerne. Hvis jeg får spam på Twitter så sender jeg en beskjed til spam-offeret som viser til dette og forrige blogginnlegg om problematikken, føl fri til å gjøre det samme om du vil:

Hei, du er trolig hacket og har sendt ut spam. Noen vet passordet ditt. Se analyse/tiltak på: http://bit.ly/bhCr4m og http://bit.ly/dwFauK

Har du andre sikkerhetshensyn som folk bør være klar over når det gjelder Twitter, eller synspunkter på dette innlegget?

4 kommentarer:

  1. Meget nyttig, takk! Martin

    SvarSlett
  2. Fint innlegg! Viktig å spre informasjon om risikoen ved bruk av Twitter, og hvordan hacking og spam skjer. Tusen Takk!

    SvarSlett
  3. Takk for gode sikkerhetstips (twitterhetstips?)! Var slett ikke klar over problematikken rundt «Connections», men har fått ryddet opp i dette nå.

    Når det gjelder problemet med forkortede lenker (bit.ly o.l.), har f.eks. den nettbaserte Twitter-klienten Brizzly en god løsning som gjør maskering av skumlislenker vanskelig. Her vises alle lenker automatisk fullt ut i oppdateringsstrømmen. Se ev. Brizzlys introduksjonsvideo (om forkortede lenker etter ca. 25 sek.).

    Bilder og videoer vises for øvrig også direkte i oppdateringsstrømmen i Brizzly. Og apropos, etter det jeg kan se, bruker Brizzly OAuth mot Twitter.

    SvarSlett
  4. Brizzly var nytt for meg, men du verden, dette ser veldig bra ut! Jeg bruker for det meste twitter.com men ser nå at jeg like godt kan bruke brizzly. Da får jeg mye funksjonalitet på kjøpet og dette med bilder, lenker o.l. virker mye sikrere. Takk for godt tips!

    SvarSlett