Sicherheitsaspekte - cs.ubbcluj.rodianat/SGBD/curs/V6.pdf · Sicherheitsmodelle und Architekturen...

35
Sicherheitsaspekte

Transcript of Sicherheitsaspekte - cs.ubbcluj.rodianat/SGBD/curs/V6.pdf · Sicherheitsmodelle und Architekturen...

Sicherheitsaspekte

Ziele

• Vertraulichkeit/Datensicherheit:• Kein unauthorisierten Zugriff auf Systemressourcen und Daten zulassen

• Z.B. Ein Angestellte muss das Gehalt anderen Angestellten nicht sehen.

• Integrität:• Nur authorisierte Benutzer dürfen die Daten ändern

• Z.B. Nur Professoren dürfen Noten ändern.

• Verfügbarkeit:• Die Daten sollen für authorisierte Benutzer immer verfügbar sein

• Z.B. Der Student muss seine Noten sehen können.

Grundbegriffe

• Zugriffskontrolle (access control) regelt: wer darf in einem System auf welche Ressourcen wie zugreifen.• Technische Maßnahme zum Schutz der Daten vor Missbrauch

• Sicherheitsmodelle (Security Models) legen die Mechanismen zur Wahrung und Schutzes von Daten fest

• Subjekt: Initiator der Handlung, Benutzer

• Objekt: Ressource (Dateien, Tabellen, usw.)

• Subjekte können auch Objekte sein

• Berechtigung (permission), bzw. Zugriffsrecht (access right): • Was genau darf gemacht werden

Sicherheitsmodelle und Architekturen

• Zwei Klassen von Sicherheitsmodellen:• Zugriffskontrollstrategie

• Informationsfluss-Strategie

• In der Praxis findet man überwiegend Zugriffskontrollstrategien

• Zugriffskontrollstrategien lassen sich wiederum unterscheiden nach:• Benutzerbestimmbare (Diskrete Sicherheitsmodelle/ Discretionary access control)

• Systembestimmbare (Verbindliche Sicherheitsmodelle/ Mandatory Access Control)

• Rollenbasierte Sicherheitsmodelle

1. Diskrete Sicherheitsmodelle (Benutzerbestimmbare) / Discretionary access control (DAC)

• Regeln den Zugriff auf Objekte (Tabellen und Sichten) auf der Basis der Identität der Nutzer und Zugriffsrechten

• Zugriffsrechten legen für jeden Nutzer fest, auf welche Objekte er in welchem Modus zugreifen darf

• Die Anzahl der Zugriffsrechte eines Benutzers ist variabel:

• Es können zusätzliche Rechte hinzukommen

• Vorhandene Rechte können zurückgenommen werden

• Durch die individuelle Vergabe von Rechten ist dieses Modell sehr flexibel

1. Diskrete Sicherheitsmodelle / Discretionary access control (DAC)

• Der Benutzer, der eine Tabelle oder ein Sicht erstellt hat, kriegt automatisch alle Zugriffsrechte dafür

• DBMS verwaltet alle Zugriffsrechte und deren Änderungen (wenn neue dazukommen oder vorhandene zurückgenommen werden) und garantiert dass nur Benutzer, die entsprechende Rechte besitzen, Zugriff auf einen Objekt haben

GRANT Anweisung

• Mögliche Werte für privileges:• SELECT: darf alle Spalten lesen (inklusiv Spalten die später mit ALTER TABLE

eingefügt werden)

• INSERT(col-name): darf Tupeln mit Werten, die verschieden von NULLoder default sind, für die entsprechende Spalte einfügen• Ohne col-name→ für alle Spalten

• UPDATE(col-name): darf den Wert der entsprechenden Spalten für Tupeln ändern (mit einem Wert, der verschieden von NULL oder default ist)

• DELETE: darf Tupeln löschen

• REFERENCES(col-name): darf in anderen Tabellen Fremdschlüssel-Einschränkung erstellen, die auf die betreffende Tabelle verweist

GRANT privileges ON object TO users [WITH GRANT OPTION]

GRANT Anweisung (Forts.)

• GRANT OPTION gibt an, dass der Empfänger die angegebene Berechtigung auch anderen Benutzern erteilen kann

GRANT privileges ON object TO users [WITH GRANT OPTION]

GRANT Anweisung - Beispiel

GRANT INSERT,SELECT ON Studenten TO Emma

• Emma darf Studenten selektieren und einfügen

GRANT DELETE ON Studenten TO Viktor WITH GRANT OPTION

• Viktor darf Tupeln aus der Tabelle Studenten löschen und kann auch anderen Benutzer den Recht geben Tupeln zu löschen

GRANT UPDATE (Noten) ON Studenten TO Jan

• Jan darf (nur) die Spalte Noten in der Tabelle Studenten ändern

GRANT und REVOKE von Berechtigungen

GRANT SELECT ON AktiveStudenten TO Jan, Anna

• Jan und Anna können Tupeln aus dem Sicht AktiveStudentenselektieren, aber nicht direkt aus der Tabelle Studenten

• REVOKE: wenn eine Berechtigung von einem Benutzer X aufgehoben wird, dann wird diese auch von allen Benutzern aufgehoben, welche die Berechtigung nur von X bekommen haben (basierend auf einem Authorization Graph: Knoten sind Benutzer, Kanten zeigen wie die Berechtigungen erteilt wurden)

GRANT/REVOKE auf Sichten

• Wenn der Benutzer, der die Sicht erstellt hat, die SELECT Berechtigung auf die zugrunde liegende Tabelle verliert, dann wird die Sichtgelöscht (dropped)

• Wenn der Benutzer, der eine Sicht erstellt hat, eine Berechtigung mit GRANT OPTION auf die zugrunde liegende Tabelle verliert, dann verliert er die betreffende Berechtigung auch für die Sicht; (auch die Benutzer welche die Berechtigung von ihm bekommenhaben verlieren diese Berechtigung für die Sicht)

Sicherheit - Sichten

• Sichten können benutzt werden um (Teil der) Informationen vorzulegen, während die zugrunde liegende Tabelle Details versteckt• z.B. In der Sicht AktiveStudenten kann man Studenten finden, die in

einer Vorlesung angemeldet sind, aber die Id’s der Vorlesung sind nicht vorhanden

• Der Benutzer, der die Sicht erstellt, hat dieselbe Berechtigungen auf die Sicht wie auf die zugrunde liegende Tabelle

• Sichten zusammen mit GRANT/REVOKE Anweisungen bilden ein starkes Tool für Zugriffskontrolle

2. Verbindliche Sicherheitsmodelle /Mandatory Access Control (MAC)

• Wurde ursprünglich für den militärischen Bereich entwickelt (clearance)

• Basierend auf system-weite Regeln, die nicht individuell für einen Benutzer geändert werden können:• Objekte werden sogenannten Sicherheitsklassen zugeordnet

• Es wird bestimmten Nutzerklassen Zugriff zu bestimmten Sicherheitsklassen gewährt

• Ein Nutzer darf ein Objekt lesen/schreiben, wenn die Sicherheitsklasse des Nutzers gleich oder höher priorisiert ist als die des Objektes

• Meisten kommerziellen DBMSs unterstützen verbindliche Sicherheitsmodelle nicht → diese sind sehr starr und haben eineeingeschränkte Brauchbarkeit

Bell-LaPadula Model (BLP)

• Bekanntes Beispiel für Mandatory Access Control• Das Modell verwendet Subjekte (Benutzer, Anwendungen), Objekte (Tabellen,

Sichten, Tupeln), Zugriffsoperationen und Sicherheitsebenen• Sicherheitsklassen:

• öffentlich/unclassified (U), vertraulich/confidential (C), geheim/secret (S), streng geheim/top secret (TS)

U < C < S < TS

• Zwei Hauptregeln:• Einfache Regel (simple security rule): ein Subjekt kann keine Daten auf einer höheren

Sicherheitsebene lesen (no-read-up)• D.h. S liest O wenn Sicherheitsebene(S) ≥ Sicherheitsebene(O)

• Sternregel (security rule): Ein Subjekt kann keine Informationen auf eine niedrigere Sicherheitsebene schreiben (no-write-down)• D.h. S schreibt O wenn Sicherheitsebene(S) ≤ Sicherheitsebene(O)

→ Beschränkung des Informationsflusses

Motivation

• Warum den Informationsfluss beschränken?

• No-read-up Regel reicht nicht: Trojanische Pferde können höher klassifizierte Daten einfach nach unten schreiben

• Beispiel:• Mark erstellt eine Tabelle T und gibt Tom den INSERT Zugriffsrecht darauf

• Mark ändert eine Anwendung, die von Tom benutzt wird, sodass diese geheime Daten in die Tabelle T schreibt

• Jetzt hat Mark Zugriff zu den geheimen Daten

• No-write-down Regel vermeidet dieses Problem

3. Rollenmodell

• In SQL-92 werden Rechte an Ids weitergegeben, die ein Benutzer oder eine Gruppe von Benutzer bestimmt

• Seit SQL:1999 können Rollen definiert und Rechte an Rollen weitergegeben werden

• Erleichtert die Verwaltung von Rechten beim Wechsel von Personen, z.B. in einem Unternehmen

• Wenn eine Person mehreren Rollen hat, dann besitzt sie die Vereinigung der Rechten aller Rollen

Auditing

• Neben der Vergabe geeigneter Zugriffsberechtigungen, eine anderewichtige Maßnahme ist die Überwachung von Zugriffen bzw. Änderungen

• Die notwendigen Protokollieren von Zugriffen wird als Auditingbezeichnet

• Änderungen, die protokolliert werden müssen:• Anlegen von Nutzern

• Vergabe von Rechten

• Schemaänderungen

• Manipulation der Daten

Multilevel-Datenbanken

• Benutzer soll sich der Existenz unzugänglicher Daten nicht bewusst sein

• Beispiel:

• Benutzer mit den Sicherheitsebenen S und TS sehen beide Tupeln

• Benutzer mit der Sicherheitsebene C sehen nur den zweiten Tupel

• Benutzer mit der Sicherheitsebene U sehen keine Tupeln

• Wenn ein Benutzer der Klasse C den Tupel <101,Schrank,200,C> einfügen will:• Der Tupel kann wegen dem Primärschlüssel-Integritätsregel nicht eingefügt werden

• Wenn die Einfüge-Operation verweigert wird, dann weiß der Benutzer, dass es ein geheimer Tupel gibt mit dem Id 101

Id Produkt Preis Klasse

101 Gold 50000 S

102 Auto 2000 C

Multilevel-Datenbanken (Forts.)

• Lösung: durch Polyinstanziierung• man stellt sich vor, dass die Sicherheitsebene zu dem Primärschlüssel gehört

• Ein Id darf mehrfach mit unterschiedlichen Sicherheitseinstufungen vorkommen

• Eindeutigkeit des Schlüssels und Referentielle Integrität müssen hier erweitert werden

Statistische Datenbanken

• Sind Datenbanken, in denen Einzeleinträge dem Datenschutz unterliegen, aber statistische Informationen allen Benutzern zugänglich sind

• Statistische Informationen = aggregiert Werte, z.B. Durchschnitt

• Probleme der Zugriffsüberwachung: ein Benutzer kann indirekt Daten über Einzeleinträge gewinnen, indem er die Kriterien derart einschränkt, dass nur ein Einzeleintrag betrachtet wird

• Beispiel: Wenn ich weiß, dass Johann der älteste Angestellte ist, dann kann ich fragen „Wie viele Angestellten sind älter als X?“. • Der Wert für X kann dann inkrementiert werden bis der Antwort der Abfrage 1 ist → dann weiß ich wie alt Johann ist

Statistische Datenbanken (Forts.)

• Idee: es sollten keine statistische Anfrage erlaubt werden, wenn weniger als N Tupel im Ergebnis der Selektion liegen

• Genügt diese Einschränkung? → NEIN!

• Beispiel: • Man fragt: „Wie viele Personen sind älter als X?“ • Wenn das System die Abfrage ablehnt, dann kennt man eine Menge von N Personen

inklusiv Johann, die älter als eine X sind• Nächste Anfrage: „Welche ist die Summe der Alter der Personen, die älter als X

sind?“ Sei das Ergebnis S1.• Nächste Anfrage: „Welche ist die Summe der Alter der Personen außer Johann, die

älter als X sind? Sei das Ergebnis S2.• → das Alter von Johann ist S2-S1

SQL Injection

• Bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht

• Es ist eine Subklasse der Vulnerabilitäten, wo eine Programmiersprache oder Skriptsprache in einer anderen eingebettet (embedded) ist

SQL Injection - Beispiel

Statement = “SELECT * FROM users WHERE name = ‘” + username + “’;”;

• Wenn die Variable username, die von dem Benutzer angegeben wird, in eine bestimmte Weise abgeändert wird, kann die SQL-Anweisung Schaden anrichten:

username = ‘ OR ‘1’=‘1 ⇒

SELECT * FROM users WHERE name = ‘’ OR ‘1’=‘1’;

• Damit loggen wir uns als Admin ein, haben alle Rechte und können anstellen was wir wollen

• Oder:

username = ‘; DROP TABLE users; SELECT * FROM userinfo WHERE ‘t’=‘t

⇒ SELECT * FROM users WHERE name = ‘’; DROP TABLE users; SELECT *

FROM userinfo WHERE ‘t’=‘t’;

• Diese Eingabe hat die users Tabelle gelöscht und alle Daten der Tabelle userinfo ausgelesen (wenn eine API genutzt wird, die mehrere Statements erlaubt)

SQL Injection Klassifikation

• Inbound• Derselbe Kanal wo die SQL Injection stattfindet, wird dann benutzt um Daten

zu extrahieren

• Outbound• Daten werden auf einem unterscheidlichen Kanal extrahiert (z.B. ein Email

mit Anfrageergebnisse wird geschickt)

• Inferentiell (inferential)• Es findet kein Datentransfer statt

• Der Angreifer kann Informationen rekronstruieren indem er bestimmte Requests schickt und das Verhalten der Website/DB Server beobachtet

Typen von SQL Injection

• Error-basiertes• Man schickt Anfragen die ein Fehler verursachen und man beobachtet die

Fehlerangabe →man kann Informationen über den Server ableiten

• Union-basiertes• Man kann SQL UNION benutzen um die Ergebnisse mehreren SQL Anfragen zu

vereinigen (sehr hilfreich für SQL Injection)

• Blind:• Man stellt true/false Fragen an den DB Server und man beobachtet ob eine

gültige Website zurückgegeben wurde oder nicht, und wie lange es gedauert hat

Error-basiertes SQL Injection

http://[site]/page.asp?id=1 or 1=convert(int,(USER))—

• Syntax error converting the nvarcharvalue '[joe]' to a column of data type !

• Nützlich bei SQL Injection Anfragen:• USER – Datenbankbenutzer

• DB_NAME – Name der Datenbank

• @@servername – Name des Servers

• @@version – Version von Windows/OS

Union-basiertes SQL Injectionhttp://[site]/page.asp?id=1 UNION SELECT ALL 1--

• All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.

http://[site]/page.asp?id=1 UNION SELECT ALL 1,2--

• All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.

http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3--

• All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists

http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3,4--

• NO ERROR

http://[site]/page.asp?id=null UNION SELECT ALL 1,USER,3,4--

Blindes SQL Injection

http://[site]/page.asp?id=1; IF (LEN(USER)=1) WAITFOR DELAY '00:00:10'--

• Gültige Website wird sofort zurückgegeben

http://[site]/page.asp?id=1; IF (LEN(USER)=2) WAITFOR DELAY '00:00:10'--

• Gültige Website wird sofort zurückgegeben

http://[site]/page.asp?id=1; IF (LEN(USER)=3) WAITFOR DELAY '00:00:10'--

• Gültige Website wird nach einer 10 Sekunden Verzögerung zurückgegeben

Blindes SQL Injection - Erstes Charakter D

http://[site]/page.asp?id=1; IF (ASCII( lower( substring( (USER),1,1)))>97) WAITFOR DELAY '00:00:10‘--

• Gültige Website wird nach einer 10 Sekunden Verzögerung zurückgegeben

http://[site]/page.asp?id=1; IF (ASCII( lower( substring((USER),1,1)))=98) WAITFOR DELAY '00:00:10'--

• Gültige Website wird sofort zurückgegeben

http://[site]/page.asp?id=1; IF (ASCII( lower( substring((USER),1,1)))=99) WAITFOR DELAY '00:00:10'—

• Gültige Website wird sofort zurückgegeben

http://[site]/page.asp?id=1; IF (ASCII( lower( substring((USER),1,1)))=100) WAITFOR DELAY '00:00:10'-

• Gültige Website wird nach einer 10 Sekunden Verzögerung zurückgegeben

SQL Injection

• Hast du Hacking Skills? Versuche ein SQL Injection Attack:

• https://sqlzoo.net/hack/

SQL Injection - Gegenmaßnahmen

• Metazeichen in Benutzereingaben auszufiltern oder zu maskieren (Escapen)

• Am sichersten: Daten vom SQL-Interpreter fernzuhalten →gebundene Parameter in Prepared Statements verwenden• Hierbei werden die Daten als Paramter an einen bereits

kompilierten Befehl übergegeben• Die Daten werden somit nicht interpretiert und eine SQL-

Injection ist verhindert

Zusammenfassung

• Drei wichtige Ziele:• Vertraulichkeit/Datensicherheit• Integrität• Verfügbarkeit

• DB Admin ist für die allgemeine Sicherheit verantwortlich• Auditing: Überwachung von Zugriffen bzw. Änderungen

• Zugriffskontrollstrategien :• Diskrete Sicherheitsmodelle/ Discretionary access control• Verbindliche Sicherheitsmodelle/ Mandatory Access Control• Rollenbasierte Sicherheitsmodelle

• Statistische Datenbanken veruschen individuelle Daten zu schützen indem nurAggregatanfagen erlaubt sind, aber oft können individuelle Informationen überTupeln abgeleitet warden

• SQL Injection vermeiden!