Upload
nemanja-ignjatovic
View
272
Download
28
Embed Size (px)
DESCRIPTION
Sigurnost Baza Podataka, DMB, DB, MySQL, Sql injection, database securtiy
Citation preview
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
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
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).
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.
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.
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]
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
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
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.
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:
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
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,
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
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(*.>?_!]_
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.
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.
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,