Sikkerhet i Web 2.0 Erlend Oftedal Risiko og sikkerhet i IKT-systemer, Tekna
Hva er spesielt med Web 2.0? Innhold fra flere kilder Sosiale nettsteder med brukergenerert innhold Mashups gjerne med innhold fra eksterne kilder Ofte mer bruk av javascript Endre deler av siden uten å laste inn på ny (AJAX) Tykkere klient mer logikk i browseren BEKK Side 2
Web 2.0 applikasjon med AJAX 1. Hent side 2. Side 3. Hent 4. Innhold innhold 1. Hent side 2. Side 3. Hent side 4. Side AJAX-basert applikasjon Vanlig webapplikasjon BEKK Side 3
Tykkere klient den usynlige sikkerhetsbarrieren Når informasjon passerer fra serveren til klienten, mister serveren kontroll over informasjonen Hvis serveren skal hente tilbake data som har vært hos klienten, må man anta at informasjonen kan ha blitt manipulert Klienten står fritt til å endre hva den vil i browseren - også javascript- koden Klient Ingen kontroll Kontroll Server BEKK Side 4
AJAX Innhold blir eksponert som tjenester Egne URLer Gjøres ofte automagisk av et AJAX-rammeverk Potensielle svakheter i disse tjenestene Hva er det egentlig vi tilbyr som tjenester? Autentisering/autorisering? Inputvalidering? BEKK Side 5
Mashups - Innhold fra flere kilder Innholdet kan lastes fra flere kilder Dette kan gjøres: På klientsiden På serversiden BEKK Side 6
Mashups lasting av eksternt innhold via server 1. Hent side 3. Side 2. Hent innhold BEKK Side 7
Mashups lasting av eksternt innhold via klient 1. Hent side 2. Side 3. Hent innhold BEKK Side 8
Mashups blandet 4. Hent innhold 1. Hent side 3. Side 2. Hent innhold BEKK Side 9
Same origin policy Sikkerhetsmodell i browsere Javascript i et vindu kan bare lese innhold i et annet vindu dersom begge vinduene har: Samme protokoll (http eller https) Samme portnummer Samme servernavn Eksempler: http://www.vg.no til http://www.vg.no = Ok https://www.vg.no til http://www.vg.no = ingen tilgang http://www.vg.no til http://sport.vg.no = ingen tilgang (kan tillates) Dette gjelder også ved bruk av AJAX Vi kan bare hente innhold fra samme sted som selve siden kom fra BEKK Side 10
Cross Site Scripting (XSS) Angriper forsøker å omgå Same Origin Policy Dersom webapplikasjonen er utformet feil, kan angriper kjøre script på siden gjennom spesielt utformede URLer Sikkerhetsselskapet Mnemonic rapporterer at de finner Cross Site Scripting feil i 80% av applikasjonene de evaluerer [Javazone 2008] BEKK Side 11
Cross Site Scripting BEKK Side 12
Hva kan man gjøre med Cross Site Scripting? Endre innhold på siden for å lure brukeren Endre hvor for eksempel brukernavn og passord sendes når man trykker på login-knappen Keylogging Levere andre typer angrep (flash-exploits, ActiveX expoits e.l.) BEKK Side 13
JSONp JSON er et dataformat tilpasset javascript Ved JSONp omgår man Same Origin Policy ved å dynamisk legge til <script>-tagger i siden Mye brukt for å hente innhold fra eksterne kilder <html> <script src= http://yr.no/weather > </script> <script> function showweatherdata(jsondata) { } </script> <body> </body> </html> showweatherdata( {locations:[{id:0, temperature:2 ); BEKK Side 14
JSONp hijacking 1. Hent side 2. Side 3. Hent innhold 4. Innhold 7. Hent innhold 5. Hent side 6. Side 9. Send stjålet innhold 8. Innhold AJAX-basert applikasjon Hackerens website BEKK Side 15
Men kan ikke scriptet som lastes inn gjøre hva det vil? Scriptet kan gjøre hva som helst Dersom leverandør ønsker, eller blir hacket, kan scriptet som leveres modifiseres til å endre sidens oppførsel Vi har tillatt Cross Site Scripting fra serveren scriptet kommer fra Hvem stoler du på? Facebook? Flickr? Yr.no? Google? BEKK Side 16
Mashups innhold fra flere steder via browser 1. Hent side 2. Side 3. Hent innhold BEKK Side 17
Mashups innhold fra flere steder via server 1. Hent side 3. Side 2. Hent innhold BEKK Side 18
Brukergenerert innhold Tilbyr gjerne rikt innhold ikke bare enkle felt Wiki Bilder Kommentarer Vanskeligere å utføre inputvalidering ettersom input fra brukerne er mer avansert Mange velger egne språk for å styre utseende fremfor å la brukerne skrive inn HTML direkte [link]http://www.eksempel.no[/link] BEKK Side 19
Eksempel: Sosial programvare Evaluering av sosial programvare Mange feil BEKK Side 20
Profilside http://10.0.100.111/app/action/friends/add?friend=16 BEKK Side 21
Kan vi misbruke dette? BEKK Side 22
Ser dette kjent ut? Samy Worm - Orm på MySpace Brukere ble automatisk lagt til som venn og fikk endret sin profil Etter 20 timer var over 1 million brukere smittet Oppkalt etter Samy Kamkar som er den som laget ormen Har blant annet inspirert OWASP prosjektet OWASP Anti Samy BEKK Side 23
Oppsummering Ved bruk av AJAX Sjekk hvilke tjenester du eksponerer Sjekk autentisering/autorisering/inputvalidering Velg hvem du stoler på med omhu Legger du til et script fra en annen server i siden, gir du dem kontroll over siden din Vurder å integrere på server fremfor klient Ved bruk av eksternt og/eller brukergenerert innhold Kontroller innholdet inputvalidering og output escaping Bruk rammeverk - f.eks. OWASP Anti Samy BEKK Side 24
Erlend Oftedal Seniorkonsulent +4798219335 erlend.oftedal@bekk.no BEKK CONSULTING AS SKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY. WWW.BEKK.NO