17
V I S O K A T E H N I Č K A Š K O L A N I Š Seminarski rad Sigurnost Baza podataka Predmet: Sigurnost u računarskim mrežama Mentor: Student: dr Mirko Kosanović Nemanja Ignjatović Rts 05/13

Sigurnost Baza Podataka

Embed Size (px)

DESCRIPTION

Sigurnost Baza Podataka, DMB, DB, MySQL, Sql injection, database securtiy

Citation preview

Page 1: Sigurnost Baza Podataka

V I S O K A T E H N I Č K A Š K O L A

N I Š

Seminarski rad

Sigurnost Baza podataka

Predmet: Sigurnost u računarskim mrežama

Mentor: Student:

dr Mirko Kosanović Nemanja Ignjatović

Rts 05/13

Page 2: Sigurnost Baza Podataka

2

Sadržaj

1. Uvod 3

2. Elementi zaštite na nivou baze podataka 5

2.1 Kontrola pristupa 5

2.2 Ispitivanje 6

2.3 Autentifikacija i lozinke 7

2.4 Kriptovanje 8

2.5 Kontrola integriteta 9

2.6 Sistem oporavka i sinhronizacije podataka 10

3. Dodatni elementi zaštite 10

3.1 Fizička bezbednost 10

3.2 Baze podataka kao mrežni server 10

3.2.1. Firewall – zaštitni zid 10

3.2.2 Sistem za detekciju provale 11

3.2.3 Sistem za prevenciju provale 11

3.3 Aplikacijska sigurnost 12

4. Poznati napadi i propusti 12

4.1 Zlonamerno korišćenje privilegija 12

4.2 Povišene privilegije 13

4.3 SQL umetanje 13

4.4 DoS napadi 14

5. Komercijalne i baze otvorenog koda 15

6. Zaključak 16

7. Literatura 17

Page 3: Sigurnost Baza Podataka

3

1. Uvod

Baza podataka je organizovana zbirka informacija, tipično u digitalnom obliku, koje se pomoću

specijalizovanih programskih alata mogu uređivati, snimati, brisati i dodavati. Baze podataka su

informacije koje opisuju stanje nekog sistema u realnom svetu, bilo da je to broj slobodnih hotelskih

soba, rezultati medicinskih istraživanja, video zapisi i sl. Baze podataka mogu se podeliti prema

sadržaju na: bibliografske, tekstualne, numeričke i multimedijalne. U računarskim sistemima baze

podataka se dele na nekoliko vrsta:

relacijske - strukture koje su definisane tako da se informacijama može pomoću logičkih izraza

jednostavno pristupiti i izdvojiti tražene informacije,

objektno orijentisane - koriste se u programiranju, odnosno skladište informacije koje

pripadaju objektim

distribuirane - baze podataka koje se mogu rasporediti na više tačaka u računarskoj mreži ili

na Internetu.

Alati za uređivanje, stvaranje i upravljanje bazama podataka objedinjeni su pod jednim nazivom SUBP

- sitem za upravljanje bazom podataka (eng. DBMS- Database Management System). Neki od

najpoznatijih SUBP-a su: Oracle, MySQL, PostgreSQL i MS SQL server. Česta pojava od kad postoje

baze podataka su napadi zlonamernih korisnika koji žele da se domognu informacija pohranjenih

unutar SUBP-a. Posledice takvog napada mogu rezultirati krađom identiteta, brojeva kreditnih kartica,

financijskim gubicima, gubicima privatnosti, narušavanjem nacionalne sigurnosti i drugim brojnim

opasnim posledicama koje su rezultat krađe osetljivih podataka iz SUBP sistema.

Kako su se razvijali SUBP-ovi, tako je postajalo sve više obratiti pažnju i na njihovu bezbednost. Zbog

toga su svakom novom verzijom (kod svih proizvođača) dodavane brojne sigurnosne opcije, kao i

sigurnosne nadogradnje koje bi uklanjale prethodno otkirvene ranjivosti. Sve većom upotrebom

Interneta, privatno i na radnom mestu, javlja se i veća potreba za osiguravanje baza podataka od

pristupa iz spoljnog sveta. Ne samo zaštitom mrežnih resursa na kojima se SUBP nalazi, kao što su

postavljanje zaštitnog zida (firewall) i ažuriranjem programskih paketa na serverima, nego i zaštitom

samog SUBP-a postavljanjem dozvola pristupa i sigurnosnih profila.

Zaštita baza podataka je od ključne važnosti za sigurnost bilo kojeg informacionog sistema iz razloga

što je sama količina osetljivih podataka pohranjena u tim bazama velika i što često od njih zavisi jako

velik broj ljudi. Prema izveštajima objavljenim na web stranici www.datalossdb.org, broj provala u

prve tri dekade 2015. godine samo kod velikih sistema iznosi 1472, a preko 35% su „hakerski“ upadi

u sisteme (slika 1).

Page 4: Sigurnost Baza Podataka

4

Najveće baze za koje je javno poznato da su provaljene u 2015. su: Sony Pictures Entertement (24

miliona zapisa), Netflix (2 miliona zapisa), South Carolina Health and Human Services (228 435

zapisa), Linked In (6.5 miliona zapisa).

Slika 1. Broj napada na SUBP u 2015.

Page 5: Sigurnost Baza Podataka

5

2. Elementi zaštite na nivou baze podataka

Kod zaštite vitalnih informacija na niou baze podataka, postoje tri ključna elementa, tzv. trijada

sigurnosti:

poverljivost - zaštita podataka od neovlašćeno pregledavanja,

integritet - zaštita od nedozvoljenog pristupa podacima i

dostupnost - mogućnost oporavka od programskog ili sistemskog otkazivanja koji rezultiraju

DoS (eng. Denial of Service) stanjem SUBP-a ili celokupnog sistema.

U vidu tih ključnih elemenata analizirace se osnovni principi ostvarenja bezbednosti baza podataka i

pripadajucih SUBP – a.

2.1. Kontrola pristupa

Najosnovnija metoda zaštite osetljivih podataka koji se čuvaju u bazi podataka je ograničenje pristupa

podacima samo određenoj grupi korisnika. Na ovaj način obezbeđuje se poverljivost podataka.

Kontrola pristupa može se ostvariti na dva načina:

1. Autentifikacijom odnosno proverom korisničkog imena i lozinke.

2. Davanjem posebnih privilegija i prava specifičnim objektima i skupovima podataka. Unutar

baze podataka to su obično tablice, pregledi, redovi i veze, a prava koja im se dodjeljuju su čitanje,

pisanje ili oboje.

Uopšteno kontrola pristupa definisana je na tri načina:

1. obavezna kontrola pristupa (eng. Mandatori Access Contro, MACl),

2. diskretna kontrola pristupa (eng. Discretionary Access Control,DAC) i

3. kontrola pristupa zasnovana na ulogama (eng. Role Based Access Control, RBAC).

MAC i DAC daju privilegije određenim korisnicima ili grupama koje sadrže korisnike kojima se želi

dati pristup. MAC pravila se primenjuju na nivou sistema i smatraju se sigurnijim. DAC pravila se

primenjuju na nivou korisnika, smatraju se dinamičkim, a usmerena su na sadržaj. Na primer, ako se

jednom korisniku dodeli samo delimično čitanje zavisno o nekom svojstvu (npr. Čitanje samo broja

hotelske sobe u registru hotela) radi se o MAC pravilima. MAC i DAC su vrlo mocni alati no RBAC

je posebno efikasan u zaštiti SUBP-a. RBAC je analogan funkcijama na poslu.

Page 6: Sigurnost Baza Podataka

6

Kontrola pristupa poseduje i nadogradnju pod nazivom "odobri / povuci odobrenje" (eng. Grant /

revoke) koja omogucava dinamično davanje dozvole pristupa određenom korisniku. Problem koji

nastaje pri ovakvom pristupu bezbednosti je mogucnost davanja privilegija korisniku koji zapravo

nema dobre namere te može načiniti štetu na sistemu, a korišcenje se dodatno komplikuje ako korisnici

često moraju da menjaju uloge.

Odobrenje prava pristupa administratori obavljaju preko logičkog jezika koji je implementiran na

SUBP. Najčešci logički jezik je SQL (eng. Structured Querry Language), razvijen tokom sedamdesetih

godina prošlog veka u IBM - ovim laboratorijama. Naredbe na koje se mogu primeniti prava pristupa

su CREATE , INSERT , SELECT , DELETE i UPDATE . Izgled naredbe za odobravanje i oduzimanje

prava pristupa je sledeci :

U navedenoj relaciji prvo se nalazi osnovna naredba GRANT koja daje prava pristupa , a zatim

"privileges" vrsta privilegije koja se daje relaciji (ON relation) koja sadrži neku ili sve pomenute

naredbe ( CREATE , INSERT , DELETE , ... ). Na kraju naredbe navodi se ime korisnika ("TO users")

kojem se daju prava pristupa te dodatne opcije.

2.2. Ispitivanje (eng. Auditing)

Ispitivanje se koristi za pracenje pristupa bazi podataka i aktivnosti korisnika. Takođe, ispitivanje se

može koristiti za identifikaciju korisnika koji pristupa objektima u bazi podataka i koje akcije se

obavljaju i koji podaci su promenjeni. Nažalost, ispitivanje ne donosi odbranu od napada ali doprinosi

računarskoj forenzici nakon napada kako bi se lakše identifikovao propust i način iskorištavanja

spomenutog propusta koji se koristio za upad u bazu podataka. Uobičajene kategorije ispitivanja baza

podataka uključuju nadgledanje pokušaja ulaza u bazu podataka, aktivnosti upravljačkog jezika za

podatke (eng. Data control language, DCL), aktivnosti definicijskog jezika za podatke (eng. Data

definition language DDL) i aktivnost jezika za manipulaciju podacima (eng. data manipulation

language, DML). Nadgledanje pokušaja ulaza u bazu podataka obuhvata sve informacije o uspešnim i

neuspešnim pokušajima autorizacije na bazu podataka. DCL ispitivanja beleži promene uloga i

privilegija korisnika kao i brisanja i dodavanja korisnika. DDL ispitivanja, s druge strane beleži

promene na šemi baze podataka kao što su izmena strukture tabele ili atributa tipova podataka. Provera

se implementira preko dnevničkih podataka i ispitnih tablica.

GRANT privileges [ON relation] TO users [WITH GRANTOPTION]

Page 7: Sigurnost Baza Podataka

7

Ispitivanje ima vrlo veliku važnost u celokupnom planu za povecanje bezbednosti baze podataka.

Primarna slabost procesa ispitivanja je vremenski razmak od izvedene akcije do pregledanja i analize

zapisa o izvedenoj radnji. Posledično, upadi u baze i druge ne autorizirane aktivnosti se prekasno

uočavaju pa je gotovo nemoguce na njih odmah reagovati. U novije vreme se pokušavaju

implementirati rešenja za nadgledanje baze u realnom vremenu tako da se prepoznaju uzorci

nelegitimnog manipulisanja bazom podataka pa se o tome odmah obaveštavaju administratori baze

podataka.

2.3. Autentifikacija i lozinke

Svaka baza podataka ima autentifikacionu proceduru. Proceduru kroz koju je korisnik primoran upisati

svoje korisničko ime i lozinku i druge slične identifikacione i autorizacijske elemente. Jednom kad je

korisnik autentificran, baza podataka "zna" ko je korisnik i dodeljuje mu odgovarajuće privilegije.

Prema SANS rečniku autentifikacija je "proces potvrđivanja ispravnosti predloženog identiteta

korisnika". Metode koje se mogu koristiti pri autentifikaciji korisnika su:

elementi koje korisnik zna - korisničko ime i lozinka (najčešce se koristi)

element koje korisnik poseduje - pametna kartica (eng. Smart card) ili sertifikat

element koji je atribut samog korisnika - npr. Biometrijska autentifikacija pomocu otiska prsta

ili uzorka rožnjače.

Vecina baza podataka dozvoljava kontrolu administratora nad mogucnostima kako se obavlja

autentifikacija. Ukoliko je administrator nepažljiv, vrlo lako bi mogao dovesti bazu podataka u

opasnost. Autentifikacija se može sprovoditi na nivou operativnog sistema ili u okviru samog SUBP.

Kao primer uzimamo SUBP DB2 koji ima nekoliko autentifikacionih mogucnosti.

Prva autentifikacijski mogucnost naziva se CLIENT, a korisnicima omogucava pristup bazi bez

provere identiteta na serveru. Sistem pretpostavlja da je autentifikacija vec obavljena na strani klijenta

te propušta korisnika u bazu sa dodeljenim rolama. Ova autentifikacijska mogucnost prelazi u

sigurnosni propust ukoliko je klijent kompromitovan. U primeru sa DB2 potrebno je koristiti opciju

KRB_ENCRIPT_SERVER u kojoj se autentifikacija obavlja na serveru te se dodatno koristi

"kerberos" mrežni sigurni protokol.

Kod korišcenja lozinki bitno je odabrati lozinku prave dužine koju je teško pogoditi, a poželjno je

koristiti i specijalne znakove. Administratori bi trebalo pri davanju korisničkih naloga dati uputstva za

odabir lozinki i unutar SUBP-a zabraniti korišcenje jednostavnih lozinki. Postoji niz alata za

administratore SUBP-a za validaciju (dužine i kompleksnosti) i nadzora lozinki kao na primer "SKL

server auditing tool" ili "Oracle password cracker". Ovi alati za administratore rade isključivo ako se

Page 8: Sigurnost Baza Podataka

8

autentifikacija ne obavlja na operativnom sistemu nego unutar same baze podataka. Najbolja praksa

za čuvanje lozinki za pristup bazi podataka prema, je odvajanje lozinki od izvornog koda programa

SUBP-a u odvojeni konfiguracioni fajl. Konfiguracioni fajl potrebno je kriptovati pomocu nekog od

poznatih algoritama (Data Encription Standard, DES ili Advanced Encription Standard, AES), tj.

nikako ne treba ostaviti osetljive podatke u tekstualnom formatu čitljivom svim korisnicima.

Direktorijumu u kojem se nalaze lozinke takođe bi trebalo ograničiti pristup preko operativnog

sistema. Operativni sistem bi se trebalo konstantno nadograđivati i održavati sigurnim.

Isto tako, zbog zaštite baze podataka od DoS napada bitno je postavljanje broja pokušaja pristupa

sistemu putem korisničkog imena i lozinke (npr. Dozvoliti 3 unosa lozinke). U tom slučaju, ukoliko

se pokuša probiti lozinka sa „Brute force“ napadom, sistem ce obavestiti administratora, a takođe

onemoguciti prijavu sa navedenim korisničkim imenom.

2.4 . Kriptovanje

Element poverljivosti podataka najbolje se osigurava preko metoda kriptovanja koje se implementiraju

na SUBP. Metode su posebno korisne kada se podaci pohranjuju na sekundarne servere podataka kao

na primer pomocni server za kopije (eng . Backup server) ili pri transferu podataka kroz mrežu.

Kriptovanje bi se trebalo shvatati kao poslednja linija odbrane kad sve ostale bezbednosne mere

zakažu.

Dve najčešce tehnike koje se koriste pri kriptovanju u bazama podataka su kriptovanje podataka u

tranzitu i kriptovanje podataka u mirovanju.

Kriptovanje podataka u tranzitu postala je apsolutnom nužnost od kad su serveri baza podataka

priključeni na Internet. „Krađa“ podataka u tranzitu preko mreže je vrlo jednostavno jer se podaci

prenose skupom protokola TCP/IP, preko predefinisanih portova (1433 za Microsoft SQL Server, 1521

za Oracle, 3306 za MySQL), a većina informacija se prenosi u tekstualnom obliku čitljivom svima ili

uz jednostavniju obradu.

Kriptovanje podataka u mirovanju, može biti izvedeno na tri nivoa:

Na nivou skladištenja podataka (eng. Storage level encription),

Na nivou baze podataka (eng. Database-level encription)

Na nivou aplikacija (eng. Application level encription).

Prvi nivo, nivo skladištenja podataka kriptovane podatke u podsistemu skladišta podataka i štiti

čitave datoteke i direktorijume. Postoji veliki nivo transparentnosti te se izbegavaju promene na

postojecoj aplikaciji. S’ druge strane, podsistem skladišta podataka nema nikakvog znanja o objektima

Page 9: Sigurnost Baza Podataka

9

baze podataka niti o njenoj strukturi pa se ne može primeniti kriptovanje isključivo jednog dela baze

niti se može kriptovati deo baze koji pripada korisniku sa određenim privilegijama.

Kriptovanje na nivou baze podataka omogucava obezbeđivanje podataka tokom čitanja ili

upisivanja podataka iz baze. Moguce je selektivno kriptovati redove, kolone, tabele. Prema nekim

logičkim uslovima, u zavisnosti od nivoa integracije, kriptovanje može uticati na neke od aplikacija.

Obe prethodne strategije dekriptira podatke u toku izvođenja programa te se ključevi kojima se kriptira

moraju držati ili na Serverske strani ili slati sa klijentskog računara. To omogucava zlonamerno

iskorišcavanje od strane administratora ili napadača koji ima administratorska ovlašcenja.

Kriptovanje na nivou aplikacije sprovodi se u okviru same aplikacije koja rukuje podacima u SUBP-

u, te se pohranjuje i preuzima vec kriptovana. Tako se odvaja čuvanje ključa za kriptovanje od baze

podataka. Aplikacije bi se trebale modifikovati da podržavaju ovo rešenje. Isto tako, potrebno je vratiti

vecu količinu podataka nego što je potrebno što predstavlja određeni bezbednosni rizik.

Različite baze podataka omogucavaju različite opcije pri odabiru algoritama i načina kriptovanja

podataka. U tabeli 1. date su sve mogucnosti kriptovanja i osiguravanja poverljivosti i integriteta

prenosa podataka za poznatije SUBP-ove.

Oracle MS SQL Server MySQL

Kriptovanje podataka u

tranzitu

SSL SSL SSL

Kriptovanje

pohranjenih podataka

EFS na Win OS-u EFS na Win OS-u EFS na Win OS-u

Tabela 1.

2.5 . Kontrola integriteta

Kontrola integriteta obezbeđuje se preko semantičkih ograničenja integriteta. Kad god korisnik

pokušava da izmeni podatke, nakon što mehanizmi kontrole pristupa omoguce korisniku rad,

semantički podsistem započinje proveru da li izmenjeni podaci semantički tačni. Semantička tačnost

podataka se proverava preko grupe uslova ili predikata koji se moraju uskladiti sa trenutnim stanjem

baze. Kako bi se omogucilo otkrivanje zlonamernog rukovanja podacima, podaci se dodatno digitalno

potpisuju.

Page 10: Sigurnost Baza Podataka

10

2.6 . Sistem oporavka i sinhronizacije podataka

Ovaj mehanizam zaštite podataka unutar baze osigurava tačnost i dostupnost podataka uprkos

programskim i mrežnim greškama. Dostupnost podataka, posebno za podatke dostupne na Internetu,

može se poboljšati posebno korišcenjem tehnika koje sprečavaju napade uskracivanjem usluga (DoS

napadi). Takvi se mehanizmi temelje na mašinskom učenju i predviđanju količine upita na bazu

podataka.

3. Dodatni elementi zaštite

3.1. Fizička bezbednost

Ukoliko je baza podataka udaljena ili se pruža kao tzv. SaaS (eng. Softvare as a service), potrebno je

proveriti da li davalac takvih usluga (eng. Application service provider, ASP) ima dovoljne tehničke

uslove, kao što su:

dovoljno rashlađivanje prostorija u kojima se drže serveri,

video nadzor servera,

protiv provalne i požarne sisteme,

dozvola pristupa samo ključnim radnicima ASP-a i postojanje redundantnih sistema.

3.2. Baza podataka kao mrežni server

Kod bezbednosti baza podataka kao mrežnog servera vrede osnovna pravila zaštite kao i kod bilo kojeg

aplikativnog mrežnog servera, kao što su frekventna nadogradnja programskih paketa, korišcenje

antivirusnih alata, alata za detekciju i prevenciju upada na server i drugi.

Dominantni pristup u mrežnoj bezbednosti je baziran na tome da se mreža pokuša segmentirati na više

manjih delova, postavljajuci na krajevima podsegmenata zaštitne zidove(firewall) koji primenjuju

sigurnosna pravila i politike kako bi onemogucili upadanje iz spoljnih mreža.

3.2.1. Firewall – zaštitni zid

Zaštitni zidovi su evoliuriali zajedno sa razvojem Interneta i dele mrežu na delove kojima možemo i

ne možemo verovati (eng. Trusted, untrusted netvwork). Kod zaštita baza podataka uglavnom se

koriste sledeci zaštitni zidovi:

Page 11: Sigurnost Baza Podataka

11

Paketno filtrirani zaštitni zidovi - nadgledaju izvorne i odredišne IP adresa bilo koje veze i

proveravaju ih prema ugrađenom setu pravila kako bi odlučili da li bi se veza trebala dozvoliti

ili ne. Mana je što ne proveravaju sadržaj pa ih je lako zaobici.

Aplikacioni usmerivači (eng. Application proxy) - zamenjuju klijenta na Serverskoj strani

odnosno servera na klijentu. Dozvoljavaju i prekidaju te dve veze po potrebi, a sav promet

prolazi kroz njih.

Inspecijski zaštitni zidovi - procesori paketa koji proveravaju celokupan sadržaj. Proveravaju

da li postoje protokoli i da li postoje zlonamerno oblikovani paketi. Proveravaju konzistentnost

tablica stanja saobracaja i proveravaju stanje TCP veze, adresne translacije i druge. Ovi zaštitni

zidovi podržavaju korišcenje VPN (eng. Virtual private netvork) veza. Jedan od najpoznatijih

zaštitnih zidova za baze podataka je SecuSphere DBF, kompanije Imperva.

3.2.2. Sistem za detekciju provale

Sistem detekcije provale IDS (eng. Intrusion detection sistem) sakuplja informacije sa brojnih tačaka

unutar računara i računarskih mreža, i analizira te informacije kako bi našao indikacije zlonamernih

aktivnosti u računarskoj mreži. Osim detekcije upada, ovakvi alati pružaju širok spektar funkcija kao

što su analiza korisničke aktivnosti, statistika analiza abnormalnih aktivnosti, pregled dnevnika

operativnih sistema i brojne druge.

Analiza bazirana na signaturama se izvodi upoređivanjem stanja mreže sa dosadašnjim poznatim

načinima napada na sistem (signaturama). Statistička analiza pokušava da otkrije devijaciju od

normalnog ponašanja korisnika, a analiza integriteta proverava konzistentnost svih datoteka.

Nedostatak ovakvog sistema je prilično često lažno alarmiranje korisnika.

3.2.3. Sistem prevencije provale

Sistem prevencije provale IPS (eng. Intrusion prevention sistem) izvodi jednake zadatke kao i IDS, ali

sa dodatnom mogucnošcu blokiranja prepoznatog pokušaja provale. Detekcija je malo ublažena

naprema IDS sistemima kako bi se izbegla učestalost lažne detekcije. Postoje dve vrste sistema za

detekciju provale:

IPS na glavnom računaru (eng. Host based) - implementira se koristeci aplikacione slojeve

API (eng. application programming interface) koji se koriste za komunikaciju operativnog

sistema i aplikacija. Proverava se svaki sistemski poziv prema pravilima pristupa koji se

automatski generišu. Svrha ovih IPS-a je blokiranje napada prepisivanjem bafera (eng. Buffer

Page 12: Sigurnost Baza Podataka

12

overflow), sprečavanje izmene registarskih vrednosti i prepisivanja deljenih dinamičkih

biblioteka (DLL, eng. Dinamic link librari).

Mrežni IPS - koristi se na mreži i služi za dubinsku inspekciju paketa. Tačnije, mrežni IPS-

ovi proveravaju pakete na slojevima ispod TCP / IP složaja, koji čini tek 2% paketa. Zbog toga

dubinska analiza proverava i ostalih 98% paketa, a mogu se proveravati XML paketi, SQL

paketi i HTTP paketi.

3.3. Aplikacijska sigurnost

Upadi u baze podataka prema dosadašnjim saznanjima su do 70% internog karaktera, ali još veću

zabrinutost izazivaju preostalih 30% koji dolaze sa Interneta. Sa velikim razvojem elektronskog

poslovanja i elektronske trgovine, potreba za visokom nivoom sigurnosti baza podataka je sve više

rasla kao i broj otkrivenih sigurnosnih propusta web aplikacija. Rešenje ovog problema javlja se u vidu

obrazovanja razvojnih inženjera bezbednosti aplikacija, korišcenja sigurnih razvojnih sistema.

korišcenjem alata za sigurnosno testiranje i sl. Sa strane puštanja aplikacije u pogon, potrebno je

paralelno instalirati aplikacioni zaštitni zid koji sprovodi URL filtriranje i zaštitu protiv napada

uskracivanjem usluge (DoS napadi).

4. Poznati napadi i propusti

4.1. Zlonamjerno korišcenje privilegija

Kada se korisnicima ili aplikacijama dodeli veci nivo bezbednosti nego što im je potrebna čest je slučaj

zloupotrebe datih privilegija. Ovaj propust uglavnom je uzrokovan administratorskim nedostatkom

vremena da fino analizira zadatke koje pojedini korisnik mora i može obavljati te se vrlo često događa

da korisnik dobije velike privilegije nad bazom podataka nad kojom mu je potrebno pregledati svega

par redova. Rešenje ovog propusta bio bi mehanizam ograničavanja pristupa na nivou upita. Tako bi

se neke osnovne radnje na negranuliranim podacima mogle obavljati, dok bi se ostale nedozvoljene

radnje blokirale i dojavljivale administratoirma. Implementacija ovakvog rešenja trebala bi biti

potpuno automatizovana i trebao bi se koristiti programski paket van SUBP-a koji nema takvih

mogucnosti (u protivnom je posao za administratora vrlo težak ako ne i nemoguc).

Drugi slučaj zlonamernog korišcenja privilegija je korišcenje legitimnih privilegija. Na primer, ako

korisnik poseduje privilegiju čitanja i čuvanja podataka na računaru i u slučaju da je taj računar

ukraden, ili korisnik podeli svoje podatke za autentifikaciju sa dugima, tad postoji opasnost od

otkrivanja osetljivih informacija. Rešenje ovakvog problema bilo bi kontekstualna kontrola pristupa,

Page 13: Sigurnost Baza Podataka

13

odnosno pod kojim okolnostima se vrši pristup bazi podataka. Primeri kontekstualne provere su: vreme

pristupa, izvorna IP adresa, volumen podataka koji se koristio, aplikacioni klijent i slično.

4.2. Povišene privilegije

Napadači bi mogli iskoristiti ranjivost platforme kako bi prepravili prava pristupa bazi podataka sa

nivoa običnog korisnika na nivo administratora baze podataka. Ovakve ranjivosti mogu se naci u

sačuvanim procedurama, ugrađenim funkcijama, implementacijama protokola pa čak i u SQL upitima.

Sprečavanje ovakvog tipa propusta moguce je pomocu pomenutog ograničenja kontrole pristupa na

nivou upita te pomocu IPS-a. IPS bi trebao tačno odvajati legitimne funkcije od onih koje uključuju

napad.

4.3. SQL umetanje (eng. SQL injection)

Kod napada umetanjem SQL koda, zlonamerni korisnik umece neautorizirane izraze baze podataka u

ranjivi SQL data kanal. Ciljani kanali podataka uključuju sačuvane procedure, ali najčešce i ulazne

parametre veb aplikacije. Napadači iskorišcavaju činjenicu da programeri često ulančavaju SQL

naredbe sa unetim parametrima pa tako mogu jednostavno umetnuti SQL izraze. Umetnuti izrazi se

šalju na bazu podataka gde se potom izvršavaju. Kao primer uzeta je veb aplikacija koja upravlja

proizvodima. U jednoj od dinamičkih stranica veb aplikacije korisnici mogu uneti identifikator

proizvoda te pregledati ime i opis proizvoda. Zahtev se šalje u obliku sledeceg izraza:

Tipično veb aplikacije koriste upite u obliku niza znakova u kojem je sadržan sam upit i njegovi

parametri . Aplikativni ASP ( eng , Active server pages ) kod izgleda ovako :

Vidimo da je SQL kod samo " umotan " u ASP kod koji prosleđuje bazi podataka na obradu. Napadač

bi mogao iskoristiti navedeni kod tako da na URL postavi dodatni izraz " OR 1 = 1 " čiji ce uslov biti

uvek zadovoljen (jer je 1 = 1 tačna izjava pa ce ceo izraz, zbog OR operacije, takođe uvek biti istinit)

primer :

SELECT ProductName, ProductDescription

FROM Products

WHERE ProductNumber = ProductNumber

sql_query= "SELECT ProductName, ProductDescription

FROM Products

WHERE ProductNumber = " & Request.QueryString("ProductID")

http://www.domen.com/products/products.asp?productid=123 or 1=1

Page 14: Sigurnost Baza Podataka

14

A potom bi mogao dodati i naredbu „drop table“ za brisanje cele tablee podataka iz baze:

Veliki broj modela veb aplikacija pretpostavlja SQL upit kao valjanu naredbu, što omogucava

napadačima iskorišcavanje SQL upita za zaobilaženje kontrole pristupa. U nekim slučajevima SQL

upiti mogu omoguciti pristup naredbama operativnog sistema preko sačuvanih procedura . Za navedeni

primer napadač bi mogao dodati sledeci kod na URL :

To bi napadaču dalo uvid u kompletan sadržaj direktorijuma u kojem se izvršava proces SQL servera.

Napadi umetanjem SQL koda mogu se sprečiti pregledavanjem SQL signatura u dolaznom HTTP

protokolu. Stoga se savetuje korišcenje alata koji omogucava analizu SQL naredbi sa predviđanjem

ispravnosti upotrebe.

4.4 . DOS

DoS napad je posledica propusta koja uzrokuje nemogucnost pristupa resursu. U ovom slučaju radi se

o bazi podataka odnosno o veb aplikaciji. DoS stanje može se kreirati preko različitih tehnika kao što

su korupcija podataka, mrežno preplavljivanje (preopterecenje) i preopterecenje računarskih resursa i

iskorišcavanjem ranjivosti platforme i / ili okoline na kojoj se baza podataka nalazi. Primer DoS napada

je slične izvedbe kao i umetanje SQL koda, korišcenje dugih posebno oblikovanih regularnih izraza

(RegEx) . Na primer :

Prevencija DDoS napada zahteva zaštite na višestrukim nivoima kao što su mrežna, aplikacijska i nivo

baze podataka. Efikasna odbrana protiv DoS napada na nivou mreže ostvaruje se korišcenjem

dinamičkog servera, koji pruža višestruke kanale za rukovanje vezama i postavlja ograničenja na

vreme izvođenja pojedinih naredbi. IPS i validacija protokola sprečava zlonamerne korisnike u

iskorišcavanju programskih ranjivosti kako bi izazvali DoS stanje. Dinamičko profilisanje automatski

pruža kontrolu pristupa na nivou upita kako bi detektovao neautorizirane upite, koji bi pak mogli voditi

do DoS napada. DoS napadi koji ciljaju ranjivosti na nivou platforme mogu izazvati alarmiranje

sistema za dinamičko profilisanje.

http://www.domen.com/products/products.asp?productid=123; DROP TABLE Products

http://www.domen.com/products/products.asp?productid=123; EXEC

master..xp_cmdshell dir---

http://www.domen.com/products/products.asp?productid=_[^|?$%"*[(Z*m1_=]-

%RT$)|[{34}\?_]||%TY-3(*.>?_!]_

Page 15: Sigurnost Baza Podataka

15

5. Komercijalne i baze otvorenog koda

Baze otvorenog koda su one čiji je izvorni kod dostupan svakom korisniku. Dozvoljene su modifikacije

i nadogradnje, ali se ne smeju licencirati (naplacivati). Komercijalne baze podataka nemaju dostupan

programski kod, naplacuje se njihovo korišcenje pa je uglavnom zabranjena njihova modifikacija od

strane krajnjeg korisnika (eng. End user licence agreement, EULA).

Svaka od opcija ima svoje prednosti i nedostatke. Na primer, komercijalne baze podataka obično

uključuju i dodatne programske pakete i korisničku podršku, a baze otvorenog koda generalno su

fleksibilnije i jeftinije pri korišcenju i održavanju. Druga prednost baza otvorenog koda je

kompatibilnost sa drugim tehnologijama i postojecim sistemima. Sa strane bezbednosti koda, nakon

brojnih istraživanja u računarskoj industriji, pokazalo se da su baze otvorenog koda obično bolje od

komercijalnih zbog velike podrške zajednice. Nažalost, to se odnosi samo na neke od SUBP-a, dok na

primer jedan od vecih predstavnika baza podataka otvorenog koda, MySQL nema implementirane

bezbednosne mogucnosti, spoljnu autentifikaciju, bezbednost na nivou redova i sl. Uprkos tim

problemima, razvojni timovi sve više se oslanjaju na baze podataka otvorenog koda jer im se

bezbednost kontinuirano poboljšava u korak sa komercijalnim bazama podataka uprkos ceni.

Page 16: Sigurnost Baza Podataka

16

6. Zaključak

Baze podataka sa gledišta bezbednosti su neiscrpna i uvek aktuelna tema. Svaki veci posao, kao na

primer zdravstvena zaštita ili državne ustanove oslanjaju se na baze podataka u kojima pohranjuju

osetljive podatke. Upravo zbog toga vrlo je važno baze podataka zaštiti i njima upravljati na pravi

način. Kao glavne preporuke za čuvanje sigurnosti baze podataka su stalna nadogradnja programskih

paketa, odvajanje baze na sigurne segmente mreže, korišcenje enkripcije pri transferu i skladištenju

osetljivih podataka, korišcenje autorizacije autentifikacije i rola. Postoje različiti načini napada na baze

podataka, koji su vec dobro poznati, ali zbog nedostataka u drugim sistemima mogu pogoditi i SUBP

i bazu podataka kojom se upravlja. Takvi napadi su izazivanje DoS i / ili SQL umetanje. No, osim

nedostataka drugih sistema, postoje ranjivosti koje uključuju ljudske faktore kao što su dodeljivanje

akreditacije zlonamernim korisnicima, nemarnost administratora pri nadgledanju baza podataka i sl.

Provale u baze podataka sve su češce, a sanacija štete sve je skuplja. U 2015. godini procena štete

nastale u vecim korporacijama iznosila je oko 35 miliona dolara po provali.

Iako su baze podataka ranjive na navedene spoljne i unutrašnje pretnje, moguce je smanjiti broj

ranjivosti na prihvatljiv nivo rizika. To se postiže tako da se koriste napredni bezbednosni mehanizmi

opisani u prethodnim poglavljima, konstantno nadograđuju programski paketi vezani uz operativnih

sistem i SUBP, koriste sigurni mrežni resursi te sigurnosni proizvodi kao što su zaštitni zidovi i

antivirusni alati.

Page 17: Sigurnost Baza Podataka

17

7. Literatura

1. Pleskonić Dragan, Maček Nemanja, Đorđević Boislav, Carić Marko: Sigurnost u računarskim

mrežama, Mikro knjiga, 2007.

2. http://en.wikipedia.org/wiki/Database, Novembar 2015

3. https://www.mediawiki.org/wiki/Manual:Securing_database_passwords, Novembar 2015

4. www.datalossdb.org, Novembar 2015,