Sveuilite u Zagrebu Fakultet elektrotehnike i raunarstva Specijalistiki
Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Specijalistički studij informacijska sigurnost Sigurnost webaplikacija Modeliranje prijetnji Ak. g. 2017. /2018.
Sigurna arhitektura i prijetnje 2 moguće situacije Pokušavamo dodati sigurnost postojećem sustavu (teže) Radimo novi sustav (lakše) U oba slučaja moramo znati Koje su nam kritične točke u sustavu Tko nam prijeti Koliko je realna određena prijetnja Odgovore na ova pitanja nam daje modeliranje prijetnji 19. 3. 2018. koji se na kraju uvijek Dugotrajan i detaljan posao SIGWEB 2
Modeliranje prijetnji Pobrojati moguće prijetnje sustavu / aplikaciji i izgraditi arhitekturu tako da minimizira utjecaj prijetnji Očigledno, bolje napraviti prije i tijekom definiranja arhitekture Kasnije su troškovi veći a mogućnosti zaštite manje! Za svaku popisanu prijetnju navesti strategiju izbjegavanja! Mogući pristupi Modeliranje prijetnji prema programskoj podršci Software centric threat modeling Modeliranje prijetnji prema sigurnosti sustava (napadačima) SIGWEB 19. 3. 2018. 3
Modeliranje prijetnji prema programskoj podršci (1/2) Temeljeni na tradicionalnom prikazu programske podrške i interakciji komponenti i korisnika te toku podataka dijagrami slučajeva uporabe klasni dijagrami tokovi podataka (Data Flow Diagram)… Alati Microsoft’s Secure Development Lifecycle (SDL) Threat Analysis & Modeling (TAM) SIGWEB 19. 3. 2018. 4
Modeliranje prijetnji prema programskoj podršci (2/2) https: //docs. microsoft. com/en-us/azure/security/azure-security-threat-modeling-tool-getting-started SIGWEB 19. 3. 2018. 5
Modeliranje prijetnji prema sigurnosti sustava (1/2) Temeljeni na sposobnosti napadača na sustav i potencijalnim ciljevima napada Profil napadača, vještine, motivi Koji su najvjerojatniji? Što je najvrednije u sustavu? Kombinacija / presjek napadačevih motiva, vještina i ciljeva! Često se rade dijagrami (stabla) prijetnji (Attack tree) Krajnji čvorovi su iskorištavanje ranjivosti a koraci su postupci nužni kako bi došli do iskorištavanja Iskorištavanje ranjivosti 19. 3. 2018. je složen proces -> puno SIGWEB 6
Modeliranje prijetnji prema sigurnosti sustava (2/2) https: //www. schneier. com/academic/archives/1999/12/attack_trees. html SIGWEB 19. 3. 2018. 7
Modeliranje prijetnji prema entitetima i rizicima Temeljen na podacima i entitetima Identificirati osjetljive podatke i entitete koji njima raspolažu Rangiranje podataka i odgovarajućih entiteta prema vrijednosti za napadača Također se izrađuju stabla i grafovi napada, scenariji i slično Prednost ovog pristupa Identificira sve korake koje napadač mora poduzeti da bi se domogao nekog podatka/vrijednosti Gradi se potencijalan put napadača, procjenjuje se rizik I na temelju toga se evaluira što i koliko štititi Ipak SIGWEB 19. 3. 2018. 8
Postupak modeliranja prijetnji https: //www. owasp. org/index. php/Threat_Risk_Modeling#Identify_Security_Objective s SIGWEB 19. 3. 2018. 9
Postupak modeliranja prijetnji 0. - Identifikacija sigurnosnih ciljeva 1. - Profiliranje aplikacije 2. - Dekompozicija aplikacije 3. – Identifikacija prijetnji 4. – Identifikacija ranjivosti 5. – Rangiranje prijetnji SIGWEB 19. 3. 2018. 10
0. - Identifikacija sigurnosnih ciljeva Prije svega definiramo što želimo postići Što nam je cilj osigurati? Obavezno: CIA Dodatno: autentifikacija, autorizacija, audit, upravljanje i nadzor Primjeri “Moramo spriječiti krađu podataka” “Moramo osigurati sukladnost regulativi PCI” “Moramo osigurati visoku raspoloživost sustava” “Integritet baze podataka mora ostati očuvan” Pomoć u definiciji Funkcijski zahtjevi sustava – sigurnost od faze zahtjeva (!) SIGWEB 19. 3. 2018. 11
1. - Profiliranje aplikacije (1/2) Općenitiji pogled na arhitekturu aplikacije i sustav u cjelini “prvi korak” u dekompoziciji aplikacije Gdje će se aplikacija izvoditi? Fizička lokacija – DMZ, zaštićena mreža Možemo li komunikaciju osigurati s kraja na kraj? Tko su korisnici / koje su uloge u sustavu? Administratori, autori, gosti, konektori na bazu podataka… Koje ovlasti trebaju imati korisnici / uloge u sustavu? C, R, U D Koje podatke imamo u 19. 3. 2018. cijelom sustavu? SIGWEB 12
1. - Profiliranje aplikacije (2/2) Koju tehnologiju koristimo? Operacijski sustav na poslužiteljima, aplikacijski i web poslužitelji, baze podataka… Koje programske jezike koristimo? Možemo li primijeniti neke specifične sigurnosne mehanizme? Postoje li neke tipične ranjivosti? Pomoć u profiliranju (Postojeća) arhitektura web aplikacije Dijagrami slučajeva uporabe, klasni dijagrami… SIGWEB 19. 3. 2018. 13
1. - Profiliranje aplikacije - primjer https: //docs. microsoft. com/en-us/azure/architecture/reference-architectures/managed-web-app/scalable-web-app SIGWEB 19. 3. 2018. 14
2. - Dekompozicija aplikacije (1/2) Kreiranje scenarija i konteksta korištenja aplikacije Cilj: dobivanje dijagrama toka podatka (Data Flow Diagrams) Na dijagramima onda identificiramo najkritičnije puteve podataka Razdvajanje aplikacije na komponente koje komuniciraju Naglasak na granice na kojima se mijenja povjerenje Vatrozid – javna mreža Poslužitelj weba (DMZ) – poslužitelj baze podataka (zaštićena mreža) Interakcija s vanjskim 19. 3. 2018. servisima SIGWEB 15
2. - Dekompozicija aplikacije (2/2) Identifikacija ulaznih točaka u sustav Gdje napadači sve mogu pokrenuti napad? Komponente, programske knjižnice, stranice… Identifikacija izlaznih točaka sustava Stranice koje prikazuju podatke, servisi koji ih dohvaćaju… Tok podataka – kuda se podaci kreću kroz sustav? Pomoć pri dekompoziciji Prvenstveno DFD Ali i ostali dijagrami koji opisuju kako i što aplikacija radi SIGWEB 19. 3. 2018. 16
2. - Dekompozicija aplikacije – primjer DFD Dijagram toka podataka (DFD) za login na web aplikaciju (OWASP primjer) https: //www. owasp. org/index. php/File: Data_flow 2. jpg SIGWEB 19. 3. 2018. 17
3. – Identifikacija prijetnji Cilj: odrediti (specifične prijetnje koje su primjenjive na našu aplikaciju Na temelju profiliranja i dekompozicije Gledamo DFD i scenarije i procijenimo što bi sve napadači mogli pokušati Možemo krenuti iz osiguravanja CIA -> koristimo stabla napada Možemo se staviti u ulogu napadača -> koristimo metode STRIDE/DREAD, OCTAVE, TRIKE… Cilj: definirati tipove općenitih mogućih napada na sustav Npr. prisluškivanje, MITM… 19. 3. 2018. SIGWEB 18
3. – Identifikacija prijetnji – stablo napada (opet) http: //maureenogara. sys-con. com/node/43842/mobile SIGWEB 19. 3. 2018. 19
3. – Identifikacija prijetnji – STRIDE i DREAD STRIDE – modeliranje prijetnji Pobrojimo općenite prijetnje Primijenimo ih na naš sustav Smislimo kako ih izbjeći DREAD – rangiranje prijetnji (na kraju) Koliko su vjerojatne Koliko je skupo izbjeći ih Koliko ih se “isplati” izbjegavati SIGWEB 19. 3. 2018. 20
3. – Identifikacija prijetnji – STRIDE (1/3) S Spoofing – lažno predstavljanje (gubitak autentifikacije) T Tampering – neovlašteno mijenjanje (gubitak cjelovitosti) R Repudiation – porecivost radnji (gubitak neporecivosti) I Information Disclosure – gubitak povjerljivosti D Denial of Service – gubitak raspoloživosti E Elevation of Privileges – podizanje prava (autorizacija) SIGWEB 19. 3. 2018. 21
3. – Identifikacija prijetnji – STRIDE (2/3) Mijenjanje autentifikacijskih podataka Nedostupnost nekog servisa https: //www. owasp. org/images/a/a 6/Advanced. Threat. Modeling. pdf 1. postavimo model kao na primjeru – koje prijetnje pripadaju u koju kategoriju (ili više njih)? 2. promatramo sve elemente naše aplikacije i zapisujemo sve napade koji narušavaju S, T, R, I, D ili E SIGWEB 19. 3. 2018. 22
3. – Identifikacija prijetnji – STRIDE (3/3) https: //msdn. microsoft. com/en-us/library/ee 810587(v=cs. 20). aspx Primjeri identificiranih prijetnji: Zlonamjerni korisnik mijenja korisničke podatke u bazi (T, I) Napadač napravi uskraćivanje usluge na poslužitelj baze (Dos, D) SIGWEB 19. 3. 2018. 23
4. – Identifikacija ranjivosti Je li naša aplikacija stvarno ranjiva na prijentje koje smo identificirali u prethodnom koraku? Ako smo utvrdili da ranjivosti na prijetnje stvarno postoje Trebaju utjecati na dizajn i arhitekturu aplikacije Moramo ih obavezno obuhvatiti penetracijskim testiranjem tijekom i nakon implementacije Primjeri ranjivosti Loša pohrana lozinki u bazi podataka (npr. samo hash) Neulovljene iznimke (npr. blind SQL injection) Opcija “zapamti me” i refresh tokeni SIGWEB 19. 3. 2018. 24
5. – Rangiranje prijetnji Imamo popisane općenite prijetnje Imamo popisane konkretne ranjivosti naše aplikacije koje odgovaraju prijetnjama Trebamo li doista štititi sustav od svih prijetnji? Opcije… Prihvatiti rizik Npr. ako je rješavanje neisplativo a prijetnja malo vjerojatna Izbjeći rizik – riješiti ranjivost Prebaciti rizik na nekoga Outsourceati dio servisa, štititi se ugovorom. . . (GDPR? ) Ignorirati ga (loše, naravno) SIGWEB 19. 3. 2018. 25
5. – Rangiranje prijetnji – DREAD D Damage Potential Koliki može biti učinak iskorištavanja ranjivosti? R Reproducibility Koliko je lako reproducirati ranjivost? E Exploitability Koja je razina vještine potrebna da bi se iskoristila ranjivost? A Affected Users Na koliko će korisnika utjecati iskorištavanje ranjivosti? D Discoverability Koliko je lako napadaču otkriti ovu ranjivost? SIGWEB 19. 3. 2018. 26
5. – Rangiranje prijetnji – DREAD – računanje (1/2) D Damage Potential (Koliki je učinak iskorištavanja ranjivosti? ) 0 = nikakav 5 = podaci jednog korisnika 10= svi podaci iz sustava/aplikacije R Reproducibility (Koliko je lako reproducirati ranjivost? ) 0 = Jako teško ili nemoguće čak i za administratore 5 = Potrebno je biti autentificiran na aplikaciju 10 = Dovoljan je samo pristup aplikaciji preglednikom E Exploitability (Koja je razina vještine potrebna? ) 0 = Napredna znanja u mrežnom programiranju 5 = Postoje gotovi alati ili zloćudni kod za iskorištavanje 10 = Dovoljan je samo pristup aplikaciji preglednikom SIGWEB 19. 3. 2018. 27
5. – Rangiranje prijetnji – DREAD – računanje (2/2) A Affected Users (Na koliko će korisnika utjecati? ) 0 = Niti na jednog 5 = Nekoliko korisnika 10 = Sve korisnike D Discoverability (Koliko je lako otkriti ovu ranjivost izvana? ) 0 = Jako teško ili nemoguće – samo kroz izvorni kod ili admin prava 5 = Moguće je uočiti detektiranjem mrežnog prometa ili skeniranjem 10 = Vidi se u zaglavljima HTTP ili je skriveno u stranici Konačna formula: SIGWEB 19. 3. 2018. 28
5. – Rangiranje prijetnji – CVSS (1/3) Common Vulnerability Scoring System (CVSS) Američki National Vulnerability Database Tri kriterija Osnovni – ne ovisi o okolini i ne mijenja se vremenom Vremenski – mijenja se s vremenom Okolina – ovisan o okolini Nomenklatura ranjivosti Common Vulnerabilities and Exposures (CVE) Javni katalog otkrivenih (javnih) ranjivosti Npr. CVE-2016 -6813 SIGWEB 19. 3. 2018. 29
5. – Rangiranje prijetnji – CVSS (2/3) https: //cve. mitre. org SIGWEB 19. 3. 2018. 30
5. – Rangiranje prijetnji – CVSS (3/3) https: //nvd. nist. gov SIGWEB 19. 3. 2018. 31
Literatura Venkatesh Jagannathan: Advanced Threat Modelling, https: //www. owasp. org/images/a/a 6/Advanced. Threat. Modeling. pdf OWASP: Threat Risk Modelling, https: //www. owasp. org/index. php/Threat_Risk_Modeling OWASP: Application Threat Modelling, https: //www. owasp. org/index. php/Application_Threat_Modelin g E. Lebanidze: "Securing Enterprise Web Applications at the. Source: An Application Security Perspective", OWASP, https: //www. owasp. org/images/8/83/Securing_Enterprise_We b_Applications_at_the_Source. pdf Microsoft Threat Modeling Tool, https: //docs. microsoft. com/enus/azure/security/azure-security-threat-modeling-tool National Vulnerability Database, https: //nvd. nist. gov/ 32 SIGWEB Common Vulnerabilities and 19. 3. 2018. Exposures,
- Slides: 32