.Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des...

21
.Net Security

Transcript of .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des...

Page 1: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

.Net Security

Page 2: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Motivation

• „Rad nicht neu erfinden“ -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung, ...)

• Zusätzlich eigenes Sicherheitssystem: CAS• Ziele von Code Access Security:

– Rechte für Code (nicht User) vergeben– feinere Granularität (verschiedene Rechte für

Codestücke einer Anwendung)– sichere Ausführung von Code von verschiedenen

Quellen

Page 3: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Role-based Security

• In den meisten Betriebssystemen verwendet

• „Sag mir, wer du bist, und ich sag dir, was du darfst“

• Principal = Identity + Roles

• -> Beispiel1

• Oft problematisch -> Code-based Security!

Page 4: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Code-based Security

• Auch ‚Evidence-based Security‘

• „Sag mir, woher du kommst, und ich sag dir, was du darfst“

• Rechte werden für jedes Assembly einzeln vergeben -> feine Granularität

• Kann erweitert und modifiziert werden -> individuelle Anpassung

Page 5: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Permissions

• Permission: Objekt, das Rechte repräsentiert, auf eine geschützte Ressource zuzugreifen

• Permission Set: Menge von Permissionshöchstens ein Objekt pro Permissiontyp-> Vereinigung der Objekte

Page 6: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Zuweisung von Rechten (1)

Evidence + Security Policy = Permission Set

Page 7: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Evidence

• Beschreibt Herkunft des Assemblies

• 7 vordefinierte Evidence-Typen• Woher wurde Code geladen?

URL, Site, Zone, ApplicationDirectory

• Wer hat Code geschrieben?StrongName, Publisher

• Allgemein: Hash

Page 8: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Security Policy

• Regeln zur Rechtevergabe

• Security Manager bestimmt anhand von Security Policy und Evidence die Rechte eines Assemblies

• Wird auf jede Policy Ebene angewandt

Page 9: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Levels (1)

Enterprise Machine

UserApplicationDomain

GrantedPermissionSet

Page 10: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Levels (2)

• Jedes Policy Level besteht aus:– Hierarchie von Codegruppen (baumartig)– Liste mit Named Permission Sets– Liste mit Policy Assemblies

• Durchschnitt der Permission Sets aller Ebenen = granted Permission Set

Page 11: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Codegruppen (1)

• Jede Codegruppe besteht aus:– Membership Condition– Permission Set– Attribute (LevelFinal, Exclusive)

• Permission Set eines Policy Levels = Vereinigung der Permission Sets aller passender Codegruppen

Page 12: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Codegruppen (2)

Page 13: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Zuweisung von Rechten (2)

• mögliche Rechte != erhaltene Rechte• Ziel: nur minimale Menge von Permissions

anfordern– RequestMinimum– RequestOptional– RequestRefuse

• Zugewiesene Permissions: (MaxGrant (ReqMin ReqOpt)) - ReqRefuse

Page 14: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Zuweisen von Rechten (3)

Page 15: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Enforcement implizit

Stack Walk

Page 16: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Enforcement explizit (1)

• Demand, Link-Demand• Assert• Deny• PermitOnly• Immer nur eine Permission kann jeweiligen

Zustand annehmen, bei mehreren Permissions -> Permission Set

Page 17: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Enforcement explizit (2)

• Prioritäten: Deny – Assert – PermitOnly

• Code, der Assert aufruft, muss spezielle Permission haben

• RevertAssert, RevertDeny, ...

• Keine unnötigen Stack Walks!

• Beispiel2

Page 18: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Policy Enforcement explizit (3)

• Imperativ: dynamisch (Demand, Assert, ...)

• Deklarativ: statisch (benutzerdefinierte Attribute) -> Beispiel3

Page 19: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Bedeutung für Praxis (1)

• Meist keine explizite Verwendung der CAS nötig aber: SecurityExceptions abfangen!

• Beim Zugriff auf geschützte Ressourcen ohne Umweg über Bibliotheken

• Defaulteinstellungen modifizierbar

Page 20: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Bedeutung für Praxis (2)

• Selbst definierbar:– Evidence-Typen– Permissions– Permission Sets

• Tools für Konfigurationen:– mscorcfg.msc– caspol.exe

Page 21: .Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.

Danke für die Aufmerksamkeit!