c14. securitatea bazelor de date

19
C14. Securitatea bazelor de date Sisteme de gestiune a bazelor de date, 2014-2015

Upload: miles

Post on 20-Jan-2016

145 views

Category:

Documents


7 download

DESCRIPTION

C14. Securitatea bazelor de date. Sisteme de gestiune a bazelor de date, 2013-2014. C14. SGBD. Securitatea bazelor de date Obiective Controlul accesului discretionar Controlul accesului obligatoriu SQL Injection Si altele…. Securitatea bazelor de date. C14. SGBD. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: C14. Securitatea  bazelor de date

C14.Securitatea bazelor de date

Sisteme de gestiune a bazelor de date, 2014-2015

Page 2: C14. Securitatea  bazelor de date

• Securitatea bazelor de date▫Obiective▫Controlul accesului discretionar▫Controlul accesului obligatoriu▫SQL Injection▫Si altele…

C14. SGBD

Page 3: C14. Securitatea  bazelor de date

• datele dintr-o BD trebuie protejate impotriva accesului in citire neautorizat si a modificarilor sau distrugerilor nepermise (neautorizate) / rau-voitoare.

• datele trebuie sa fie protejate si impotriva actualizarilor accidentale care afecteaza consistenta datelor – pentru aceasta se folosesc, in general, constrangeri de integritate (chei primare, chei straine, constrangeri la nivel de tabel s.a.) sau trigger-e.

• => securitate + integritate

C14. SGBDSecuritatea bazelor de date

Page 4: C14. Securitatea  bazelor de date

• Obiective de securitate:

▫ Secretizare / confidentialitate: informatia nu ar trebui dezvaluita utilizatorilor neautorizati; de exemplu: un student nu at trebui sa vada notele altor studenti

▫ Integritate: doar utilizatorii autorizati ar trebui sa aiba drept sa modifice datele; de exemplu: doar profesorii pot modifica notele, studentii doar le consulta

▫ Disponibilitate: utilizatorii (care au dreptul) sa poata accesa oricand datele

▫ Non-repudiere: un utilizator nu poate nega ca el a efectuat o anumita operatie; in general, acest obiectiv este indeplinit cu ajutorul jurnalelor

C14. SGBDSecuritatea bazelor de date

Page 5: C14. Securitatea  bazelor de date

• … plus alte aspecte legate de securitate:

▫ Autentificare: confirmarea identitatii utilizatorului▫ Autorizare: specificarea drepturilor de acces asupra

resurselor; definirea politicii de acces

C14. SGBDSecuritatea bazelor de date

Page 6: C14. Securitatea  bazelor de date

• Pentru protectia datelor unei baze de date, trebuie luate masuri de securitate la diferite nivele:

▫ SGBD: restrictii de acces al datelor pentru utilizatorii bazei de date

▫ Sistem de operare: trebuie restrictionat accesul si la nivel de sistem de operare (de exemplu: protejarea fisierelor SGBD-ului)

▫ Retea: din moment ce majoritatea SGBD-urilor permit accesul de la distanta, trebuie luate masuri de securitate la nivel de retea (Internet sau LAN)

▫ Fizic: protectia locatiilor unde se gasesc server-e de date▫ Uman: utilizatorii autorizati sa acceseze BD trebuie sa fie

de incredere

C14. SGBDSecuritatea bazelor de date

Page 7: C14. Securitatea  bazelor de date

• In general, se remarca doua abordari de control al accesului la nivel de SGBD:

▫ control al accesului – discretionar: drepturi, privilegii

▫ control al accesului – obligatoriu: clase de securitate

C14. SGBDSecuritatea bazelor de date

Page 8: C14. Securitatea  bazelor de date

• bazat pe politici valabile la nivel de sistem si care nu pot fi modificate de utilizatori (simpli)

• fiecare obiect din BD este asociat unei clase de securitate• fiecare utilizator (sau aplicatie) primeste „autorizatie”

(clearance) pentru o clasa de securitate, si sunt impuse reguli de citire si scriere a obiectelor din BD de catre utilizatori

• SGBD-ul determina daca un utilizator are voie sa citeasca sau sa scrie un anumit obiect in functie de regulile care implica nivelul de securitate al obiectului si autorizatia utilizatorului

C14. SGBDControl al accesului obligatoriu

Page 9: C14. Securitatea  bazelor de date

• Notiuni:

▫obiecte (tabele, view-uri, inregistrari, coloane) (notatie: O)

▫subiecti / indivizi (subject) (utilizatori, aplicatii) (notatie: S)

▫clase de securitate▫autorizari

C14. SGBDControl al accesului obligatoriu

Page 10: C14. Securitatea  bazelor de date

• Modelul Bell-LaPadula

▫1. Proprietatea de securitate simpla: subiectul S poate sa citeasca obiectul O doar daca class(S) >= class(O) (no read-up)

▫2. Proprietatea * („Star Property”): subiectul S poate sa scrie obiectul O doar daca class(S) <= class(O) (no write-down)

C14. SGBDControl al accesului obligatoriu

Page 11: C14. Securitatea  bazelor de date

• Modelul Biba

▫1. Axioma de integritate simpla: un subiect care are permisiune pentru un anumit nivel de integritate nu poate sa citeasca obiecte de nivel de integritate inferior (no read-down)

▫2. Axioma de integritate *: un subiect care are permisiune pentru un anumit nivel de integritate nu poate sa scrie un obiect de nivel de integritate superior (no write-up)

C14. SGBDControl al accesului obligatoriu

Page 12: C14. Securitatea  bazelor de date

• Bazat pe notiunea de drept sau privilegiu de accesare a datelor, si pe mecanismele prin care se acorda sau se refuza acestea

• Un privilegiu (acordat unui utilizator) permite unui utilizator sa acceseze un obiect intr-o anumit mod – citire sau actualizare sau ambele

• Un utilizator care creeaza un obiect in BD (tabel, view, s.a.) primeste automat toate privilegiile posibile pentru acel obiect – dreptul de proprietar (owner)

• Observatie: Roluri

C14. SGBDControl al accesului discretionar

Page 13: C14. Securitatea  bazelor de date

• Instructiuni SQL:

GRANT { ALL [ PRIVILEGES ] } | privilegiu [ ( coloana [ ,...n ] ) ] [ ,...n ] [ ON [ clasa :: ] obiect ] TO utilizator [ ,...n ] [ WITH GRANT OPTION ]

REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] | privilegiu [ ( coloana [ ,...n ] ) ] [ ,...n ] } [ ON [clasa :: ] obiect ] { TO | FROM } utilizator [ ,...n ] [ CASCADE]

DENY { ALL [ PRIVILEGES ] } | privilegiu [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [clasa :: ] obiect ] TO utilizator [ ,...n ] [ CASCADE]

C14. SGBDControl al accesului discretionar

Page 14: C14. Securitatea  bazelor de date

• Alte observatii:

▫ Rolul altor obiecte in securitatea datelor:

View-uri, proceduri stocate, functii Trigger-e DDL, DML

▫ Ownership chain (unbroken, broken)

C14. SGBDControl al accesului discretionar

Page 15: C14. Securitatea  bazelor de date

• Injectarea sau manipularea codului SQL

C14. SGBDSQL Injection

Page 16: C14. Securitatea  bazelor de date

• Exemplu (functioneaza pe SQL Server):• Fie tabelul Utilizatori(login, parola, drepturi)

• Autentificare din aplicatie:

sqlString = " SELECT login, parola, drepturi " & _" FROM utilizatori " & _" WHERE login = '" & login & "' " & _" AND parola= '" & parola & "' "

com.CommandText = sqlStringdr = com.ExecuteReader

C14. SGBDSQL Injection

Page 17: C14. Securitatea  bazelor de date

• Exemplu: scenariu de atac

• login: admin (sau orice altceva) şi parola: p' or 1=1--• login: a şi parola: '; drop table test--

C14. SGBDSQL Injection

Page 18: C14. Securitatea  bazelor de date

• Exemplu: scenariu de atac (daca erorile sunt afisate pe pagina Web)

• login = ' having 1=1—• login = ' group by utilizatori.login having 1=1—• …• login = ' group by login, parola, drepturi having 1=1—• login = ' union select sum(login), 1, 1 from utilizatori—• login = ' union select 'a', 'a', min(login) from utilizatori where

login>'a'—• login = ' union select 'a', 'a', min(parola) from utilizatori

where login>='admin'--

C14. SGBDSQL Injection

Page 19: C14. Securitatea  bazelor de date

• Soluţii pentru problemele menţionate:

▫ Validarea datelor de intrare Exemple: respingerea datelor care se ştie că sunt “bad input”, anume

cele care conţin “select”, “update”, “insert”, “delete”, “drop”, “--“, “’”

acceptarea numai a datelor care constituie “good input”, anume pentru câmpul parolă se acceptă numai şiruri formate cu caractere alfanumerice.

▫ Folosirea corectă a procedurilor stocate

▫ Drepturile utilizatorului care e folosit pentru conectarea la baza de date să fie minimale; de exemplu, pentru construirea unui coş electronic e suficient accesul în consultare (SELECT) la tabelul cu produse şi inserare (INSERT) în tabelul cu comenzi (restricţionarea suprafeţei de atac!).

C14. SGBDSQL Injection