Sigurnost web aplikacija
doc. dr. sc. Vedran Miletić, vmiletic@inf.uniri.hr, vedran.miletic.net
Fakultet informatike i digitalnih tehnologija Sveučilišta u Rijeci, akademska 2021./2022. godina
Uvod i motivacija
U svom inboxu pronađete e-mail prikazan na slici s desne strane. Vjerujete li mu i zašto?
TLS (SSL) i HTTPS
Naučili smo na Računalnim mrežama i Sigurnosti informacijskih i komunikacijskih sustava, odnosno Računalnim mrežama 2:
- Transport Layer Security (TLS), suvremena zamjena za Secure Sockets Layer (SSL)
- grupa šifrarnika, npr.
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
: ECDHE za razmjenu ključeva, RSA za autentifikaciju, 128-bitni AES (varijanta GCM) za šifriranje podataka prenesenih unutar sesije, SHA256 za hashiranje poruka - podržani TLS 1.3 i TLS 1.2, starije verzije se smatraju nesigurnima (RFC 8996, detaljna analiza)
- grupa šifrarnika, npr.
- Hypertext Transfer Protocol Secure (HTTPS)
- Simple Mail Transfer Protocol (SMTP) može koristiti TLS
Evolucija TLS-a
TODO
- Qualys SSL Labs SSL Server Test
- Mozillin SSL Configuration Generator
- Korištenje HTTPS-a može biti faktor u rangiranju u Google rezultatima
Napadači ciljaju na web aplikacije
Prema Impervi, tvrtci specijaliziranoj za kibernetičku sigurnost:
- Kompleksne aplikacije imaju velik izvorni kod i time velik potencijal za postojanje ranjivosti i zlonamjernih promjena izvornog koda.
- Potencijalne nagrade u slučaju uspješnog napada su visoke vrijednosti, uključujući osjetljive privatne podatke (npr. brojeve kreditnih kartica) prikupljene uspješnom manipulacijom izvornim kodom.
- Napadi se jednostavno izvršavaju jer se većina napada odjednom može lako automatizirati i pokrenuti neselektivno protiv tisuća, desetaka tisuća ili stotina tisuća ciljeva (web aplikacija).
Nedavni primjeri: Log4j, JWT biblioteke
Sigurnost
Izvor: Security (MonkeyUser, 17th January 2017)
Ubrizganje u SQL upit
Ubrizganje u SQL upit (engl. SQL injection) događa se kada počinitelj koristi zlonamjerni SQL kod za manipulaciju pozadinskom bazom podataka kako bi otkrio informacije. Posljedice uključuju neovlašteno pregledavanje popisa, brisanje tablica i neovlašteni administrativni pristup (Imperva).
Zaštita od ubrizganja u SQL upit
Cross-site Scripting (XSS)
Skriptiranje na više web sjedišta (engl. cross-site scripting, kraće XSS) je injekcijski napad koji cilja korisnike kako bi ostvario pristup računima, aktivirao trojanske programe ili izmijenio sadržaj stranice. Pohranjeni XSS događa se kada se zlonamjerni kôd ubrizga izravno u aplikaciju (Imperva). Reflektirani XSS se javlja kada se zlonamjerna skripta odrazi iz aplikacije u korisnikovu pregledniku (Imperva).
Zaštita od XSS-a
Cross-site Request Forgery (CSRF)
Krivotvorenje zahtjeva za više web sjedišta (engl. Cross-site Request Forgery, kraće CSRF) je napad koji može rezultirati neželjenim prijenosom sredstava, promijenjenim lozinkama ili krađom podataka. Uzrokuje se kada zlonamjerna web aplikacija tjera korisnikov preglednik da izvrši neželjenu radnju na web mjestu na koje je korisnik prijavljen (Imperva).
Zaštita od CSRF-a
Uključivanje udaljene datoteke
Uključivanje udaljene datoteke (engl. remote file inclusion) ubacuje datoteku na poslužitelj web aplikacija i uključuje je kod izvođenja. To može rezultirati izvršavanjem zlonamjernih skripti ili koda unutar aplikacije, kao i krađom podataka ili manipulacijom (Imperva).
Uključivanje udaljene datoteke sprječava se sanitizacijom korisničkog unosa, provjerom izlaza na poslužitelju i ograničavanjem vrsta datoteka s kojima aplikacija radi na poznat popis (npr. PDF, PNG, JPEG i GIF).
Cross-Origin Resource Sharing (CORS)
Prema Wikipediji:
Dijeljenje resursa s više podrijetla (engl. Cross-Origin Resource Sharing, kraće CORS) je mehanizam koji omogućuje da se resursi na web stranici kojima je u zadanim postavkama ograničen pristup zatraže s druge domene izvan domene u odnosu na onu s koje je prvi resurs poslužen.
Web application firewall
Prema Wikipediji:
Vatrozid web aplikacije (engl. web application firewall, kraće WAF) je vatrozid koji filtrira, nadgleda i blokira HTTP promet prema i od web servisa ili aplikacije. Pregledom HTTP prometa može spriječiti napade koji iskorištavaju poznate ranjivosti web aplikacija, poput ubrizganja u SQL upit, skriptiranja na više web sjedišta (XSS), uključivanja udaljene datoteka i nepravilne konfiguracija sustava (Cloudflareova ilustracija rada).
Implementacije u oblaku:
Implementacije otvorenog koda: Shadow Daemon, ModSecurity i druge.
Open Web Application Security Project (OWASP)
Open Web Application Security Project (OWASP) je neprofitna zaklada koja radi na poboljšanju sigurnosti programske podrške na webu kroz softverske projekte otvorenog koda, stotine lokalnih organizacija širom svijeta, desetke tisuća članova i obrazovne konferencije.
Najzanimljiviji među projektima koje provode:
- OWASP Top Ten (novi web u izradi)
- OWASP Mobile Security Testing Guide
- OWASP ModSecurity Core Rule Set
TODO Dodati
- API key, JWT token, OAuth
Author: Vedran Miletić