350 likes | 678 Views
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.
E N D
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 • 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.
Securitatea bazelor de date C14. SGBD • 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.
Securitatea bazelor de date C14. SGBD • … in plus: • Non-repudiere: un utilizator nu poate nega ca el a efectuat o anumita operatie; in general, acest obiectiv este indeplinit cu ajutorul jurnalelor; • Autentificare: confirmarea identitatii utilizatorului; • Autorizare: specificarea drepturilor de acces asupra resurselor; definirea politicii de acces.
Securitatea bazelor de date C14. SGBD • 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
Securitatea bazelor de date C14. SGBD • 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
Control al accesului discretionar C14. SGBD • 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)
Control al accesului discretionar C14. SGBD • 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]
Control al accesului obligatoriu C14. SGBD • 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
Control al accesului obligatoriu C14. SGBD • Notiuni: • obiecte (tabele, view-uri, inregistrari, coloane) (notatie: O) • subiecti / indivizi (subject) (utilizatori, aplicatii) (notatie: S) • clase de securitate • autorizari
Control al accesului obligatoriu C14. SGBD • 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)
Control al accesului obligatoriu C14. SGBD • 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)
SQL Injection C14. SGBD • injectarea sau manipularea codului SQL • Exemplu (functioneaza pe SQL Server): • Fie tabelul Utilizatori(login, parola, drepturi)
SQL Injection C14. SGBD • injectarea sau manipularea codului SQL • 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 = sqlString dr = com.ExecuteReader
SQL Injection C14. SGBD • Exemplu: scenariu de atac • login: admin (sau orice altceva) şi parola: p' or 1=1-- • login: a şi parola: '; drop table test--
SQL Injection C14. SGBD • 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'--
SQL Injection C14. SGBD • 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!).