poboljšanje sigurnosti web aplikacije phpbb

7

Click here to load reader

Upload: igor-popov

Post on 18-Dec-2014

209 views

Category:

Technology


2 download

DESCRIPTION

U transportu od klijenta do servera šifra putuje u čistom obliku podložna pasivnim napadima, što je neprihvatljiva situacija. Možda sama pomenuta aplikacija nema toliko važnu ulogu da bi briga oko zaštite identiteta imala veliki prioritet, ali sama činjenica da korisnici Internet usluga često za šifre raznih sistema koriste iste/slične podatke, nameće obavezu svakom davaocu usluga da te podatke i zaštiti, kako u transportu, tako i pri čuvanju na serveru.

TRANSCRIPT

Page 1: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

Seminarski rad

student: Igor Popovpredmet: Sigurnost u računarskim mrežama

tema: Poboljšanje sigurnosti web aplikacije phpBB

ABSTRAKT

phpBB forum je u skoroj verziji 2.0.21 ispravio mnoge primećene sigurnosne propuste koje su bile često zloupotrebljavane, zahvaljujući rasprostranjenosti aplikacije. Aspekt koji nije u dovoljnoj meri pokriven do sada jeste prenos i čuvanje šifri registrovanih korisnika. Trenutno rešenje za smeštanje šifri u bazu, umesto originalnog sadržaja, primenjuje na njega hash algoritam md5, ali se na tome priča i završava.

U transportu od klijenta do servera šifra putuje u čistom obliku podložna pasivnim napadima, što je neprihvatljiva situacija. Možda sama pomenuta aplikacija nema toliko važnu ulogu da bi briga oko zaštite identiteta imala veliki prioritet, ali sama činjenica da korisnici Internet usluga često za šifre raznih sistema koriste iste/slične podatke, nameće obavezu svakom davaocu usluga da te podatke i zaštiti, kako u transportu, tako i pri čuvanju na serveru.

CILJ

Ovaj seminarski rad se bavi mogućim rešenjem sigurnosnih nedostataka phpBB aplikacije kroz kombinovanu primenu enkripcije, hmac i hash algoritama. Problem je razložen na nezavisne celine i svakoj je ponuđen prigodan metod zaštite u kontekstu ove aplikacije. Uočene celine su: registracija, logovanje, promena šifre, izgubljena šifra i automatsko logovanje.

ZADACI

Prilikom razmatranja pojedinih celina i njihovih predloženih sigurnosnih unapređenja, treba voditi računa o nekoliko činjenica vezanih za sam phpBB.

Organizacija koda aplikacije je takva da se pravljenje dodataka, odnosno MODova (od Modifications), svodi na pravljenje fajla koji opisuje izmene u kodu, odnosno search and add or replace informacije. Ovakva organizacija otežava kompleksnije izmene, tako da je poželjno promene koda pojednostaviti i sam njihov broj maksimalno smanjiti. Rezultat ovog seminarskog bi trebao da bude jedan takav MOD koji bi se mogao primeniti na bilo kojoj instalaciji phpBB foruma.

Kao što je već pomenuto, trenutno se šifra korisnika u bazi na serveru čuva kao md5 hash. Ovo je moguće unaprediti, ali za sada se ostaje na tome, jer bi promena podataka ovog tipa uticala na upotrebljivost MODa, kao i na kompatibilnost sa drugima. Moguće unapređenje bi bila upotreba hmac algoritma sa vrednošću ključa jedinstvenim za svakog korisnika, kao i za konkretnu instalaciju aplikacije takođe. Ovo bi onemogućilo portabilnost hash-a šifre između različitih sistema, što predstavlja moguće mesto zloupotrebe.

Aplikacija omogućuje vizuelnu konfirmaciju prilikom registracije što pruža kanal za siguran prenos podataka od servera ka klijentu.

Page 2: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

RegistracijaPrilikom registracije se šifra korisnika prvi put pominje i mora se preneti do servera radi uskladištavanja. Trenutno se ona prenosi u originalnom obliku, što je neprihvatljivo. Viši nivo sigurnosti bi bio slanje hash-a, ali i sam hash je potrebno sačuvati od pasivnog napada, jer se i on može zloupotrebiti, bez znanja o samoj šifri koju predstavlja.

Za siguran prenos podataka do servera je potrebno koristiti enkripciju, što omogućava pomenuta vizuelna konfirmacija, koja bi se mogla koristiti i kao metod razmene ključa.

Rešenje je da se postojeći kod za vizuelnu konfirmaciju iskoristi kao ključ za enkripciju šifre (korišćeni algoritam za enkripciju je Blowfish). Polja forme za šifru i potvrdu šifre se zamenjuju enkriptovanim vrednostima md5 hash-a samih šifri upotrebom JavaScript-a prethodno slanju. Pomeranjem primene hash funkcije sa servera na klijenta, šifra se u potpunosti sakriva i od servera, odnosno osoba sa pristupom istom.

Ovakva upotreba koda za konfirmaciju zahteva njegovu zaštitu prilikom slanja serveru na proveru. Koristi se hmac-sha1 algoritam sa ključem generisanim na serveru za potrebe svih hmac operacija kroz skriveno polje forme - challenge polje.

Sumirano ukratko, za potrebu registracije: server šalje kod za vizuelnu konfirmaciju i challenge podatak, a klijent vraća enkriptovan md5 šifre i potvrde šifre i hmac-sha1 koda. Na serveru se preneta enkriptovana šifra dekriptuje i, nakon provere koda, smešta u bazu kao md5 vrednost šifre.

Page 3: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

LogovanjePostupak prijave na forum je mnogo jednostavnija operacija od registracije, jer nema potrebe za enkripcijom i samim tim ni za prenosom ključa. Potrebno je samo primeniti odgovarajuću kombinaciju hmac, sha1 i md5 algoritama da bi se postigao zadovoljavajući stepen sigurnosti.

Pošto server ima informaciju jedino o md5 hash-u šifre, mora se isti generisati i na klijentu prethodno slanju. Koristeći JavaScript uneta šifra se zamenjuje vrednošću dobijenom primenom hmac-sha1 algoritma nad podatkom koji je pomenuti md5 hash unete šifre. Za ključ hmac-a se koristi challenge vrednost dobijena od servera što omogućava da se svaki put za istog korisnika sa nepromenjenom šifrom šalju različiti podaci. Na serveru se dobijena šifra proverava primenom identičnih algoritama nad podatkom za šifru u bazi.

Promena šifrePrilikom promene šifre imamo isti problem kao i prilikom registracije, odnosno, neophodno je preneti md5 šifre do servera sigurnim putem. Za ovu akciju u aplikaciji nije predviđena upotreba vizualne konfirmacije, tako da identično rešenje nije moguće, ali slično jeste. Umesto korišćenog koda kao ključa za enkripciju, koristiće se stara šifra koja se želi menjati.

Ovako imamo sledeće podatke. Server šalje challenge, a klijent istim postupkom kao pri logovanju štiti staru šifru, a novu šifru i njenu potvrdu šifruje kao i prilikom registracije, pri čemu za ključ koristi staru šifru.

Page 4: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

Izgubljena šifraU situaciji kada je korisnik izgubio šifru, omogućeno je automatsko generisanje nove i slanje obaveštenja na mail. U mailu se šifra navodi u originalnom obliku, što predstavlja potencijalno problem, ali ne vidim način da se ovo poboljša. Rizik dovoljno smanjuje činjenica da se ove šifre najčešće koriste samo za prvo sledeće logovanje, nakon čega korisnik menja šifru.

Administratorsko menjanje šifrePostoji mogućnost da administrator foruma korisniku promeni šifru. Za ovakvu situaciju ne postoji većraspoloživa tajna informacija kojom bi se vršila enkripcija. Iz ovog razloga, a i iz procene rizika sličnoj kao kod slučaja izgubljene šifre, se koristi obično hmac-sha1 heširanje pomoću challenge podatka sa servera.

Page 5: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

Automatsko logovanjePomoću cookie-a je omogućeno produženo trajanje sesije što otvara mogućnost preuzimanja identiteta na osnovu zabeležene identifikacije sesije. Ovu oblast još nisam dovoljno istražio da bih znao da li je potrebno poboljšanje i ako jeste - u kom stepenu i koje metode pri tome koristiti.

MANE REŠENJA

Prilikom šifrovanja podataka Blowfish algoritmom korišćen je kod za vizuelnu konfirmaciju. Dužina koda je poznata i sastoji se od šest karaktera koji mogu biti velika slova i brojevi. Primena brute force metode je uspešnija za kraće šifre, tako da je ovo potencijalna mana. Činjenica da se šifrovanje koristi retko, odnosno jedino prilikom registracije i prilikom promene šifre, i činjenica da bi se i u slučaju razbijanja šifre došlo do md5 hash-a, a ne same šifre, smanjuju potencijalnu štetu ovog nedostatka.

U bazi se šifre čuvaju u md5 obliku, što je dobro, ali ne i najbolje. Viši nivo sigurnosti bi pružilo čuvanje šifre propuštene kroz hmac-sha1 algoritam sa ključem jedinstvenim za svakog korisnika. Ovakva promena aplikacije je spomenuta, kao i argument protiv njene primene (primenljivost, kompatibilnost).

Naravno, pošto je ovde izložen sistem sigurnosti sa klijentske strane zasnovan na JavaScript funkcijama, podložan je aktivnim napadima koji bi ovakve skripte, ili i sam html, menjali i omogućili pristup korisnički unetim podacima. Zaštita od aktivnih napada i nije tema ovog seminarskog.

IMPLEMENTACIJA

phpBB forum pruža specijalan način update-a aplikacije pomoću EasyMOD modula. U suštini ovaj modul procesira MOD fajlove i na osnovu protumačenih instrukcija radi osnovni „search and replace“ kroz php fajlove. Ovakva organizacija proširivosti aplikacije je dosta nefleksibilna, tako da se mora detaljno testirati kompatibilnost novonapravljenog MODa, kako sa različitim verzijama samog foruma, tako i sa drugim popularnim MODovima, a sve u cilju izbegavanja konflikata pri promeni koda.

Page 6: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

Sa ovim u vidu odluka da se za potrebe ovog seminarskog isproba kompatibilnost samo sa najnovijom verzijom foruma (phpBB 2.0.21) zvuči realnije, dok bi se za eventualno „ozvaničenje“ koda moralo pristupiti što širem testiranju.

Razvoj test aplikacijePrvi korak u implementaciji je bio rad na test aplikaciji koja bi verifikovala validnost algoritama u upotrebi kroz klijentsko-serversku komunikaciju. Na klijentu su algoritmi urađeni pomoću JavaScript koda koji pri submit-u forme obrađuje unete podatke, štiti ih i šalje dalje serveru na obradu. PHP kod na serveru pokriva nešto uži skup algoritama, jer je deo problematike već ugrađeni u sam jezik.

Iako je kod za algoritme preuzet sa Interneta (pogledati reference), bilo je potrebna modifikacija usled nekompatiblinosti dva rešenja - JavaScript i PHP, iako su navedena rešenja navela da poštuju algoritme propisane standardima. Nekompatibilnost se ogledala, konkretno, u algoritmu za padding podataka kako bi se uklopio u blokove od 64 bita. Jedan pristup je dodavanje nula na kraj, što može dovesti do gubljenja podataka, ako se podatak pre paddinga završavao nulom. Drugo rešenje je da se ostatak popuni brojem koji predstavlja broj potrebnih bajtova do zatvaranja poslednjeg bloka. Algoritmi su prilagođeni da rade u skladu sa drugim rešenjem.

Prilagođavanje koda forumaS obzirom na pomenutu nefleksibilnost aplikacije na izmene, ovom koraku se moralo pažljivo prići, birajući najmanje osetljivo mesto za unos potrebnih izmena. Za svaki od navedenih zadataka je pregledom koda locirano takvo mesto i izmene, već istestirane u prvom koraku, unete.

Izrada MODa na osnovu izmenaSam MOD je tekstualni fajl u skladu sa javno dostupnom specifikacijom. U njemu se navode akcije koje mehanizam za update treba da preduzme, od kojih su osnovne Copy, Open i Find. Copy akcija nalaže da se fajlovi dostavljeni sa samim MODom prekopiraju u aktivne phpBB direktorijume. Open akcijom se aktivira postojeći aktivni fajl foruma i sprema se da se nad njim vrše izmene. Find akcija prati Open i locira željeni deo koda unutar aktivnog fajla. Nakon uspešnog lociranja su na raspolaganju razne akcije za dodavanje koda, izmenu, preciznije pretraživanje, itd.

Osim navedene mogućnosti da MOD bude običan tekstualni fajl, moguće je koristiti i XML format za reprezentaciju, koji osim veće preciznosti i olakšane verifikacije omogućava i vizualni pregled MODa u čitljivijem obliku pomoću raspoložive XSL transformacije i upotrebe browser-a.

Ograničena funkcionalnost u trenutnoj verzijiU drugom koraku implementacije, prilagođavanju koda forumu, je postavljena granicu prve verzije tako što nije podržana logika iza challenge vrednosti. Ova vrednost omogućava da jedna ista šifra putem hmac-sha1 algoritma dobija različite vrednosti svaki put kada se korisnik loguje, što dalje omogućava dinamičnost hash-a i dodatno odbranu od pasivnog napada. Iako ovaj aspekt sigurnosti nije podržan, on ne utiče na funkcionalnost ostale zaštite.

Page 7: Poboljšanje sigurnosti web aplikacije phpBB

Viša elektrotehnička škola u BeograduVojvode Stepe 283.www.vets.edu.yu

ZAKLJUČAK

Izneti predlog zaštite identiteta korisnika phpBB aplikacije je zasnovan na poznatim i kroz standarde prihvaćenim algoritmima. Zaštita zahteva manje promene postojećeg koda i dodavanje koda za podršku korišćenim algoritmima na klijentskoj strani kroz JavaScript funkcije i na serverskoj kroz PHP klase. Dobitak je veći stepen sigurnosti pri korišćenju aplikacije i primena ovakvog ili sličnog rešenja je izuzetno poželjna u svim sistemima koji nisu u mogućnosti da koriste neki od sigurnosnih protokola za komunikaciju Internet-om.

REFERENCE

1. Blowfish enkripcija, JavaScript, http://www.farfarfar.com/scripts/encrypt/encrypt.js,

2. MD5 hash, JavaScript, http://pajhome.org.uk/crypt/md5/md5.js,

3. SHA1 hash, JavaScript, http://pajhome.org.uk/crypt/md5/sha1.js,

4. HMAC algoritam, RFC 2104, http://www.ietf.org/rfc/rfc2104.txt,

5. Blowfish enkripcija, PHP, http://pear.php.net/package/Crypt_Blowfish,

6. HMAC algoritam, PHP, http://pear.php.net/package/Crypt_HMAC.

Igor Popov13. jun 2006

Viša elektrotehnička školaRačunarska tehnika 11/02