Innocent Code Kapittel 1: The Basics Kapittel 2: Passing Data to Subsystems



Like dokumenter
User Input / Output Handling. Innocent Code kap 3-4 INF-329 Øystein Lervik Larsen oysteinl@ii.uib.no 7/11-05

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Pen- tes'ng av webservices. Asbjørn Reglund Thorsen Gruppe- og utviklingsleder UIO/FSAT

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Universitetet i Oslo Institutt for informatikk. avmystifisert i INF102. Kvile

Tilkobling og Triggere

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

6105 Windows Server og datanett

6105 Windows Server og datanett

Java Database Connectivity (JDBC) Norvald H. Ryeng

Intentor Helpdesk - Installasjon Step #3: Microsoft Reporting Services

Sikkerhet i Pindena Påmeldingssystem

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

Sikkerhet og tilgangskontroll i RDBMS-er

6105 Windows Server og datanett

Databaser kort intro. Tom Heine Nätt

Eksamen i Internetteknologi Fagkode: ITE1526

Kjøre Wordpress på OSX

Sikkerhet og internett. Kan vi være vi trygge? Kan vi beskytte oss? Bør vi slå av nettet

Kap 3: Anvendelser av Internett

Trådløskurs del 2, dag 2. Sesjon 6. Fredag kl. 09:00-10:30

6107 Operativsystemer og nettverk

Sikkerhet og Hacking. Forelesning 2 Hacking av nettsider. Tom Heine Nätt

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen

Sikkerhet i Pindena Påmeldingssystem

Innføring i bruk av CGI4VB

Sikkerhet og internett

BRUKERHÅNDBOK FOR NETTVERKET

Sikkerhet i Pindena Påmeldingssystem

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

Forord. Brukerveiledning

Forelesning 4: Kommunikasjonssikkerhet

INF329,HØST

Introduksjon til nettverksteknologi

6107 Operativsystem og nettverk

6107 Operativsystem og nettverk

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

Brukerveiledning for For å opprette en ny bruker vennligst send en epost til

Erlend Oftedal. Risiko og sikkerhet i IKT-systemer, Tekna

Problem med innlogging til Sauekontrollen Web?

Velkommen til Pressis.

ORDBMS og OODBMS i praksis

6107 Operativsystemer og nettverk

Http- og WebServices funksjoner

UKEOPPGAVER 13: KONFIGURASJONSSTYRING

1. Koble opp mot tjener 2. Send forespørsel. 3. Send respons 4. Lukk forbindelsen. Klient Tjener

Siteimprove analytics Tekniske spesifikasjoner

Innføring i bruk av CGI4VB

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

SMART hus via nettleseren

Innstallasjon og oppsett av Wordpress

HØGSKOLEN I SØR-TRØNDELAG

DATAUTFORSKNING I EG, EG 7.1 OG EGENDEFINERTE FUNKSJONER SAS FANS I STAVANGER 4. MARS 2014, MARIT FISKAAEN

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

Innledende Analyse Del 1: Prosjektbeskrivelse (versjon 2)

Installasjon InfoMediaPlayer:

Applikasjonsutvikling med databaser

1. Informasjonskapsler og pakkefangst. 2. Grunnleggende datakommunikasjon

Labquality/NKK ELEKTRONISK RESULTATSKJEMA VIA INTERNET. Åpning av skjemaet. Logg inn på Participant services. Velg resultatskjemaet

Forelesning 1. Introduksjon til (eller repetisjon av) TCP/IP Datasikkerhet

Din verktøykasse for anbud og prosjekt

HØGSKOLEN I SØR-TRØNDELAG

Lotus Traveler - Manual for installasjon

SQL Server guide til e-lector

9 Online Backup. Priser KR 100 / PC lisens KR 300 / Server lisens (inkluderer bl.a. SQL/Exchange) KR 0,50 / GB

Fjerninnlogging over Internett

Oppgave 1 (Opprett en database og en tabell)

Konfigurasjon av Eduroam i Windows Vista

1: Steng ned alle MAB på alle maskiner før dere starter oppdateringen. Dette gjelder også MAB Schedule som dere vil finne på serveren.

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

6105 Windows Server og datanett

Remote Desktop Services

KTN1 - Design av forbindelsesorientert protokoll

Hvordan installere Java og easyio på Windows

Oppsett av Aastra SIP Telefoner med Network Norway Mobil IP Klient

6107 Operativsystemer og nettverk

Installasjonen krever en Windows 2008 server innmeldt i domene.

OWASP Norway, 24.april Ståle Pettersen

PowerOffice Server Service

Installasjon enbruker

LAB-L SETTE OPP MICROSOFT SERVER 2003

Feilsøking i BO. Olav Syse, konsulent. Jan Terje Hansen, service manager. Be business intelligent

Tjenester i Internett. E-post, HTTP, FTP, Telnet

Bruker dokumentasjon Web sikkerhet. Universitet i Stavanger

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Applikasjonslaget. Applikasjoner og applikasjonslagsprotokoller. Mål: Flere mål Spesifike protokoller: Programmeringsgrensesnitt

SVARFORSLAG : Eksamen i IBE102 Webutvikling Våren 2017.

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

FS-API Status og veien videre. Kai Quale og Mario Ledinscak KDTO

For kunder som bruker Windows for nettverkstilkobling

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene. Gjør dine egne forutsetninger dersom du mener noe er uklart.

Large Scale Single Sign-on Scheme by Digital Certificates On-the-fly

Som en del av denne prosessen, når verten har startet og nøkkelfilene ikke er å finne, lages et nytt sett automatisk.

Brukermanual til Domenia Norges adminløsning

Transkript:

Innocent Code Kapittel 1: The Basics Kapittel 2: Passing Data to Subsystems INF329, høsten 2005 Utvikling av sikre applikasjoner Martin Lie martin@mq.no 2005-11-02

Kapittel 1: The Basics HTTP Sesjoner HTTPS

HTTP Kort om web- en (verdensveven? akk!) WWW oppfunnet i 1989-90 av Tim Berners-Lee og gjengen Tre sentrale spesifikasjoner: HTTP, HTML og URL-er Sikkerhetsaspekter ved alle tre HTTP minst kjent

HTTP Request- response- modell Koble til web-serveren Sende en forespørsel (Behandle forespørselen) Sende svar Avslutte forbindelsen

HTTP, request (GET) Eksempel: Forespørsel til URL-en http://example.com/ GET / HTTP/1.1 Host: example.com Accept: text/html, text/plain, image/* Accept-Language: en User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-us; rv:1.5a) Første linje kalles request line og inneholder: method token, request URI og HTTP version Så request header-linjer, fulgt av to linjeskift Til slutt request data

HTTP, response Eksempel: Svar på forrige sides forespørsel HTTP/1.1 200 OK Date: Wed, 02 Nov 2005 10:27:10 CET Server: Apache/2.0.55 (Unix) Content-Length: 84 Connection: close Content-Type: text/html <html> <head><title>test</title></head> <body><p>hello, world!</p></body> </html> Første linje kalles status line og inneholder: HTTP version, status code og reason phrase Så header-linjer, fulgt av to linjeskift Til slutt data

HTTP, request (POST) Eksempel: Forespørsel til URL-en http://example.com/ POST /login.jsp HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (X11; U; Linux i686;...) Referer: http://example.com/login.jsp Content-Type: application/x-www-form-urlencoded Content-Length: 43 username=jalla&password=mekk&login=logg+inn URL-encoding (eks: & = %26)

HTTP, idempotence Eks: header- filer, pause- knapp GET er ment å være idempotent (men ikke POST) Idempotence og caching

HTTP, sikkerhet Manipulering av request- informasjon Telnet (port 80) Proxy (Kapittel 3 har mye mer om dette) Referer- headeren Kan ikke brukes ifm. sikkerhet Link leakage (kap 6)

HTTP, cookies Liten informasjonskapsel (i klienten) Settes vha. en response- header Set-Cookie: Customer= 78 ; Version= 1 ; Path= / ; Max-Age=1800 Fjernes ved å sette Max-Age til 0 En cookie uten Max-Age fjernes når nettleseren lukkes (typisk for sesjon- cookies) Nettleser sender tilbake vha. en request- header Cookie: $Version= 1 ; Customer= 78 ; $Path= /

HTTP, sesjoner Cookies gir mulighet for statefulness, men Cookies er små Cookies lagres på klienten Løsning: Sesjoner Sesjonsid i en cookie Resten av tilstanden på serveren Sesjonsid = korttidspassord

HTTP, session hijacking Sesjonsiden er utsatt Gjetting, kalkulering, brute-forcing Cross-site scripting (XSS, kap 4) Referer-headeren Risikobegrensning Knytte id til IP (men angriper kan ha samme IP som målet) Knytte til User-Agent (men dette kan gjettes av angriper) Ugyldiggjøre sesjon ved mistenkeligheter Endre sesjonsid ved hver request

HTTPS Mål Hindre avlytting vha. kryptering Hindre man in the middle-angrep (MITM) vha. sertifikater (Autentisere klienter) Forbindelse etableres ved et handshake Blir enige om krypto- og hash-algoritmer Utveksler og validerer sertifikater (PKI) Utveksler symmetrisk krypteringsnøkkel Voila: Sikker kommunikasjon!

HTTPS, problemer Hva gjør du når du ser Sertifikat har utløpt for to måneder siden Sertifikatet er signer av en ukjent autoritet...og hva gjør onkelen din? skandiabanken.no vs. skandia-banken.no Kan man stole på Certification Authorities (CA)? Brukes Certificate Revocation Lists (CRL) eller Online Certificate Status Protocol (OCSP)? Standardene er sikre (nok), men hva med folk?

HTTPS, problemer HTTPS funker bra, med mindre Brukerne ignorerer advarsler fra nettleseren Nettleseren tillater dette Brukeren faller for billige domenenavn-triks CA-er gir ut feilaktige sertifikater Nettleseren stoler på CA-er som ikke brukeren ville gjort Nettleseren har bugs i SSL/TLS-implementasjonen Brukerens maskin kontrolleres av en angriper

Kapittel 2: Passing Data to Subsystems SQL injection Command injection Løsninger

Subsystemer Eksempler SQL-databaser Operativsystemer Biblioteker Kommandotolkere (shells) XPath-tolkere XML-dokumenter Gamle, utdaterte systemer Nettlesere

Subsystemer Metadata Tolkes som noe annet enn ren data Problem når utviklere tror de sender ren data, men det tolkes som metadata Utnyttelse avhenger av kontekst-bytte

SQL injection Eksempel 1 name = request.getparameter( name ); query = INSERT INTO User (name) VALUES ( + name + ) ; OK hvis navnet er Ola Nordmann Men hva med James O Connor?

SQL injection Eksempel 2 user = request.getparameter( user ); pass = request.getparameter( pass ); query = SELECT * From User WHERE user= + user + + AND pass= + pass + ; Noen problemer her? Hva skjer med følgende navn : jens --... WHERE user= jens -- AND pass= Løsning: Filtrere vekk --?

SQL injection Eksempel 3 Hva skjer med følgende navn : jens OR x = y... WHERE user= jens OR x = y AND pass=... WHERE user= jens OR FALSE Problem: Kontekst- bytte ved single- quote Løsning: Escape alle single- quotes?

SQL injection Eksempel 4 id = request.getparameter( id ); query = SELECT * From User WHERE id= + id; Hva skjer med følgende id : 1; DELETE FROM User... WHERE id=1; DELETE FROM User 2; UPDATE User SET address=(select pass FROM User WHERE user= jens ) WHERE id=123 http://example.com/index.php?id=3;shutdown Problem: Kontekst-bytte ved alle ikke-numeriske tegn

SQL injection, løsning Ikke gi ut informasjon i feilmeldinger Identifiser og nøytraliser alle mulige metakarakterer (avhenger av datatype) function SQLString($s) { $s = str_replace(,, $s); $s = str_replace( \\, \\\\, $s); return. $s. ; }

SQL injection, løsning Prepared statements PreparedStatement ps = conn.preparestatement( UPDATE User SET name=? WHERE id=? );...... ps.setstring(1, name); ps.setint(2, id); ResultSet rs = ps.executequery(); Slipper å huske alle metakarakterer Parses kun én gang, så de kjører (bittelitt) raskere

Command injection Eksempel (Perl) $user = $form{ user }; print `finger $user`; $form{ user } er et brukernavn som vi får inn fra et web-skjema Dumt med følgende brukernavn: test; rm rf / Metakarakterer for typiske shell: $ & ( ) * ; < >? [ \ ] ` { } ~ space tab I tillegg: Ord og bokstaver, avhengig av posisjonen Konklusjon: Unngå bruk av bruker-input for kommandolinje-argumenter

Kjøreregler Ta alltid hånd om metakarakterer når du sender data til subsystemer Hvis mulig, send data og kontrollinformasjon separat God arkitektur lagdeling, innkapsling, grensesnitt- bruk, black- boxing Defense in depth