220 likes | 332 Views
Design av sikre web-applikasjoner. Vidar Kongsli , Bekk Consulting AS. Tekna - Risiko og sikkerhet i IKT-systemer – 12. mars 2008. Vidar Kongsli. Manager i BEKK Før 1.1.2008: Fagleder for sikkerhet Etter 1.1.2008: Fagleder for kvalitet og testing http://www.kongsli.net/blog.cg i.
E N D
Design av sikre web-applikasjoner Vidar Kongsli, Bekk Consulting AS Tekna - Risiko og sikkerhet i IKT-systemer – 12. mars 2008
Vidar Kongsli • Manager i BEKK • Før 1.1.2008: Fagleder for sikkerhet • Etter 1.1.2008: Fagleder for kvalitet og testing • http://www.kongsli.net/blog.cgi Risiko og sikkerhet i IKT-systemer 2008
Design av sikre web-applikasjoner • Hva er en ’sikker’ web-applikasjon? • Fins det en ’sikker’ web-applikasjon? • ”Design av tilstrekkelig sikre web-applikasjoner” Risiko og sikkerhet i IKT-systemer 2008
OWASP – 10 mest kritiske sikkerhetsfeil • Cross Site Scripting (XSS) • Injection Flaws • Malicious Code Execution • Insecure Direct Object Reference • Cross Site Request Forgery • Information Leakage and Improper Error Handling • Broken Authentication and Session Management • Insecure Cryptographic Storage • Insecure Communications • Failure to Restrict URL Access • Cross Site Scripting (XSS) • Injection Flaws • Malicious Code Execution • Insecure Direct Object Reference • Cross Site Request Forgery • Information Leakage and Improper Error Handling • Broken Authentication and Session Management • Insecure Cryptographic Storage • Insecure Communications • Failure to Restrict URL Access Risiko og sikkerhet i IKT-systemer 2008
Tre kritiske spørsmål • Hva er gyldige data? • Hvor befinner dataene seg? • Hva er data og hva er eksekverbar kode? Risiko og sikkerhet i IKT-systemer 2008
En typisk web-arkitektur Sluttbruker Web-server Back end/Database Sluttbruker Web-server Sluttbruker Risiko og sikkerhet i IKT-systemer 2008
Sikkerhetsbarrieren • Data som sendes til klient • Åpent for lesing • Åpent for endring • Kan komme på avveie • Gjelder for eksempel cookies eller skjulte HTML felter • Unngå å måtte stole på data som kommer fra klienten Risiko og sikkerhet i IKT-systemer 2008
Hva er gyldige data? • Valider data som kommer fra utsiden av sikkerhetsbarriæren • White-listing istedenfor black-listing Web-applikasjon Input validating Risiko og sikkerhet i IKT-systemer 2008
Data påavveie - Feilhåndtering Risiko og sikkerhet i IKT-systemer 2008
Data på avveie – feilhåndtering – hvor i arkitekturen? • Vis en generisk feilside • Logg feil/stacktrace etc. Web-applikasjon Output filter Risiko og sikkerhet i IKT-systemer 2008
Data på avveie - handlevognen • Brukeren kan manipulere data: • Salgssummen i handlekurven sendes til nettleseren i en cookie eller som et skjult HTML-felt • Brukeren setter salgssummen til 1 kr og gjennomfører kjøpet • Ikke stol på data fra klienten • Salgssummen lagres på serveren (i brukerens sesjon) • Lag en saltet hash av salgssummen for å validere dataenes integritet Risiko og sikkerhet i IKT-systemer 2008
Data på avveie – interne referanser • Referanser til interne ressurser blir sendt til nettleseren • Filnavn, primærnøkler i databasen, brukernavn, kontonummer • Eksempel: http://www.foo.bar/readfile?file=store/log-2008-03-07-1.txt • Eksempel: http://www.foo.bar/transaction?toAccount=4444.11.55555 Risiko og sikkerhet i IKT-systemer 2008
Interne referanser – mottrekk – hvor i arkitekturen? Web-applikasjon Original Ref. Ref Original Risiko og sikkerhet i IKT-systemer 2008
Hva er eksekverbar kode? – Command/SQLinjection • Applikasjon klarer ikke å skille hva som er data og hva som er kode • Ondsinnet bruker injiserer eksekverbar kode der applikasjonen forventer data • Eksempler: • SELECT * FROM User WHERE Username=”test” AND Password=”123” • SELECT * FROM User WHERE Username=”Test” --” AND Password=”” • Mottrekk: • ”Metacharacterescaping” – data sendt til subsystem • Principleofleastprivilege – begrense rettigheter i subsystem [xkcd.com] Test” -- Risiko og sikkerhet i IKT-systemer 2008
SQL Injection – mottrekk – hvor i arkitekturen? • SQL tolker ’ og % som kontrolltegn • Output escaping • Preparedstatements, storedprocedures Web-applikasjon Output escaping Risiko og sikkerhet i IKT-systemer 2008
Hva er eksekverbar kode? – Cross site scripting • Applikasjonen klarer ikke å skille hva som er data og hva som er kode • Ondsinnet bruker injiserer eksekverbar kode der applikasjonen forventer data • Også kjent som XSS og HTML-injection • Utnytter metategn i HTML og/eller javascript Risiko og sikkerhet i IKT-systemer 2008
Hva er eksekverbar kode? – Cross site scripting (2) Sluttbruker Web-server Ekstern server Ondsinnet bruker Risiko og sikkerhet i IKT-systemer 2008
Cross site scripting - Eksempel Test” ”XSS”);</script><” Test • Søkefelt • Bruker søker på:test • HTML:...<input type="text" value="test">... • Bruker søker på:test” • HTML:...<input type="text" value="test"">... • Bruker søker på:test”><script>alert(”XSS”);</script><” • HTML:...<input type="text" value="test"><script>alert("XSS");</script><"">... Risiko og sikkerhet i IKT-systemer 2008
Cross site scripting – mottrekk – hvor i arkitekturen? • HTML-escaping av data før den sendes til nettleseren • Benytt rammeverk Web-applikasjon Output escaping Risiko og sikkerhet i IKT-systemer 2008
Hva er eksekverbar kode? - Cross siterequestforgery Sluttbruker Web-server Back end/Database Web-server Sluttbruker Risiko og sikkerhet i IKT-systemer 2008
Crosss siterequestforgery - mottrekk • Legg et unikt tall (nonce) i siden som sendes til klient • Sjekk at verdien er den samme når siden postes tilbake • ”De-luxe” versjonen: spør om sikkerhetskode for hver transaksjon • Nettbanker Risiko og sikkerhet i IKT-systemer 2008
Tre kritiske spørsmål – om igjen • Hva er gyldige data? • Input validation • Hvor befinner dataene seg? • Indirekte objektreferanser • Ikke send unødvendig data til nettleseren • Ikke send unødvendig feilinformasjon til nettleseren/brukeren • Hva er data og hva er eksekverbar kode? • JavaScript-eksekvering er kilde til XSS og XSRF • Metacharacterescaping • Håndter kontrolltegn for ulike subsystemer – databaser, nettlesere Risiko og sikkerhet i IKT-systemer 2008