1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

22
1 oftwareentwicklung mit .NE eil 7 NET Security r. Ralph Zeller

Transcript of 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

Page 1: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

1

Softwareentwicklung mit .NETTeil 7

.NET Security

Dr. Ralph Zeller

Page 2: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

2

Motivation

Verteilte Applikationen können Code dynamisch über das Internet laden und ausführen (mobiler Code)

Manipulierter Code kann Systeme und Daten beschädigen

Bisherige Security Mechanismen:• Security bezieht sich auf User und Ihre Rollen• Code wird mit Rechten des Users ausgeführt • Beschränkter Zugriff auf Ressourcen

(Verzeichnisse, Files, Konfiguration)

Page 3: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

3

CLR Security Rollen basierte Security

• Benutzer gehört zu einer Gruppe• Benutzer muss sich authentifizieren• Prinzipal Konzept (Gruppenrechte)

Code access security• Zusätzlich zur Rollen basierten Security• Bietet Schutz vor manipulierten Code

Security Modell basiert auf Permissions• Code benötigt Rechte um Operationen

auszuführen

Page 4: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

4

OS Security basiert auf Benutzerrechten

CLR Security erteilt Code Ausführungsrechte

vertrauenswürdiger Code

Trusted userTrusted userTrusted codeTrusted code

Untrusted userUntrusted userUntrusted codeUntrusted code

Trusted userTrusted userUntrusted codeUntrusted code

Untrusted userUntrusted userTrusted codeTrusted code

!!!!

Page 5: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

5

partiell trusted CodeBeispiel 1: File lesen

Page 6: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

6

EvidenceUrsprungsnachweis

Information über ein Assembly (Code)• Wer veröffentlichte das Assembly?• Woher kommt das Assembly?

Beispiele für Evidence• Zone (MyComputer, Intranet, Internet, Trusted,

Untrusted)• Site, URL oder Herkunftsverzeichnis• Hash value• Strong Name• Applikation Verzeichnis• Herausgeber Zertifikat

Page 7: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

7

Permissions sind Objekte, die den Zugang zu bestimmten Ressource kontrollieren

Was wird kontrolliert?• Dateisystem, Netzwerk, User Interface, Registry,

Datenbank, Environment Variablen, …

Code kann Permissions anfordern (request)

Die CLR gewährt Permissions auf Anforderung, wenn der Aufrufer vertrauenswürdig ist (grant)

Permissions können von der aufrufenden Funktion angefordert werden (demand)

Permissions (Rechte)

Page 8: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

8

Per. schützen Ressourcen FileIO

FileDialog

IsolatedStorage

Environment

Registry

UI

Printing

Reflection

Security

Socket Web DNS OleDb SQLClient MessageQueue EventLog DirectoryServices … erweiterbar

Page 9: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

9

Deklarative Permissions … über Attribute

Spezielle Permissions für Assembly, Klasse oder Methode• Lower Lever Security überschreibt Higher

Level Security!

Zur Ladezeit wird entschieden ob Permission gewährt wird

using System.Security.Permissions;

[FileIOPermissionAttribute(SecurityAction.Demand)] public static string ReadData() { // lese File ein }

Page 10: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

10

Imperative Permissions … über expliziten Code

Erzeuge ein Permission Objekt und rufe seine Methoden auf

Schutz bezieht sich auf Methode

Zur Laufzeit wird entschieden ob Permission gewährt wird

using System.Security.Permissions;

String fullPath = Directory.GetFullPathInternal(fileName);FileIOPermission p = new FileIOPermission( FileIOPermissionAccess.Read, fullPath);p.Demand();

Page 11: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

11

Applikationen umfassen mehrere Assemblies• .exe Assembly• Assemblies aus der Framework Class Library• Fremde Library, Mobile Code, etc.

Wenn ein Assembly ein anderes aufruft wird Security Grenze überschritten

Vor Ausführung einer sensiblen Operation checkt die CLR den Call-Stack• Kontrolle ob jedes Assembly am Call-Stack die

nötigen Permissions hat• Dieser Stack-walk heißt Demand

Security Checks

Page 12: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

12

Stack walking

Methode M3Methode M3

Methode M2Methode M2

Methode M1Methode M1

Methode M4Methode M4

Call StackCall Stackwächstwächstnach untennach unten

B2B2

B1B1

B3B3

B4B4

Jede Methode hat be-Jede Methode hat be-stimmte Berechtigungenstimmte Berechtigungen

Methode M4Methode M4fordertfordertPermission PPermission P

PP

P wird mit den P wird mit den BerechtigungenBerechtigungenaller Aufrufer aller Aufrufer am Stack über am Stack über M4 verglichenM4 verglichen

PP

PP

PP

Page 13: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

13

Modifikatoren überschreiben das Ergebnis des Stack-Walks

Assert• Ich verbürge mich für meine Aufrufer.

Permission nicht weiter prüfen• Security Loch

Deny• Permission wird explizit verweigert

PermitOnly• Erlaubt Zugriff auf eine spezielle Ressource

Stack Walk Modifikatoren

Page 14: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

14

Security checkBeispiel 2: Stackwalk

Page 15: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

15

Policies Policy bezeichnet Regeln, nach denen die CLR

Permissions zuweist

Abhängig von der Evidence des Codes und dem Policy Level• Enterprise, Machine, User, Application domain

Page 16: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

16

Policy Levels Policies sind auf verschiedenen Ebenen

administrierbar

enterprise

user

machine

appdomain

resultierendesPermission Set

Page 17: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

17

Code Gruppen Jeder Policy Level ist ein Baum von Code

Gruppen

Code Gruppen bestehen aus einer Bedingung und einem Permission Set

Bedingung? PCode Gruppe

Erfüllt ein Assembly die Bedingung, wird die Permission erteilt

Page 18: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

18

Machine Level Policy

intranet?intranet? Restricted?Restricted?

ExecuteExecute

Local?Local?

FullFull

AllAll

Microsoft?Microsoft?

FullFull

Internet?Internet?

InternetInternet

NetworkNetwork NetworkNetwork

enthält Permissions um auf Datenquellen im Netz

zuzugreifen

intranetintranet

Page 19: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

19

Policies administrieren Command line Utility

• Caspol.exe

Konfiguration von Maschinen und User Policies• zufügen, ändern und löschen von

• Code Gruppen• Permissions und Permission Sets

Beispielcaspol –listgroupsCaspol –resolvegroup assembly.dllCaspol –resolveperm assembly.dllcaspol –machine –addfulltrust assembly.dllcaspol –machine –ag 1.1 –zone Internet execution

Page 20: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

20

Caspol.exeBeispiel 3: caspol Stackwalk

Page 21: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

21

Mscorcfg.msc

Gaphisches Benutzer Interface• Microsoft Management Konsole Snap-In

Administriert Security Policies• Änderungen an Code Gruppen und Permission Sets• Auf Enterprise, Machine und User Level

Page 22: 1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.

22

Fragen?

Uff...