Security.NET Was darf mein Code?

Slides:



Advertisements
Ähnliche Präsentationen
Was gibt´s neues im Bereich Sicherheit
Advertisements

Die Schulkonsole für Lehrerinnen und Lehrer
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Pflege der Internetdienste
Objektorientierte Programmierung
Lightweight Directory Access Protocol
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Colibi Bibliothekssystem der Computerlinguistik. Einführung Motivation Was braucht Colibi? Software Datenbankdesign.
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Introducing the .NET Framework
Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow.
Grundschutztools
Björn Schmidt, Hoang Truong Nguyen
Distributed Multimedia Control Steuerung und Überwachung von Präsentationen in Netzwerken.
YouTube5 .0 Projektpräsentation
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
20:00.
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
.Net Security. Motivation Rad nicht neu erfinden -> Nutzung der Sicherheitsfunktionen des Betriebssystems (zB Encryption, Authentifizierung,...) Zusätzlich.
Seminar aus Softwareentwicklung: Inside Java and .NET
SQL Server 2005 CLR-Integration
...ich seh´es kommen !.
Präsentation von Sonja Pathe
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Präsentation läuft auch vollautomatisch ab … wie du möchtest
HORIZONT 1 XINFO ® Das IT - Informationssystem HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
Meins & Vogel GmbH, Tel. (07153) , Sicher im Internet – Nur eine Illusion? Vortrag im Rahmen eines Info-Abends Meins und Vogel.
Präsentation von Lukas Sulzer
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Das IT - Informationssystem
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Microsoft Corporation
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
Der Erotik Kalender 2005.
Technik schädlicher Software
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Tutorial Schritt 1: Über den Link im VP gelangen Sie auf die Seite
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Exploiting Web Applications
Das IT - Informationssystem
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.
 Präsentation transkript:

Security.NET Was darf mein Code?

Security.NET Was darf mein Code? DEV-3 Michael Willers michael.willers@devcoach.de

In diesem Vortrag... Warum ein neues Modell? Wie funktioniert es? Wie setzt man es in der Praxis ein?

Warum ein neues Modell? Code kann dynamisch über das Internet geladen und ausgeführt werden mobiler Code Aber: Sicherheitssysteme basieren auf Benutzern! Manipulierter Code kann Systeme und Daten beschädigen

Was ist Code Access Security? Die Common Language Runtime bringt ein neues Sicherheitsmodell mit, das auf den Merkmalen (Evidence) des geladenen Codes basiert Es ergänzt die Sicherheitsmechanismen des Betriebssystems und wird mit Code Access Security bezeichnet

Mobiler Code 

Evidence (Codemerkmale) Informationen über ein Assembly (Code) Wer veröffentlichte das Assembly? Woher kommt das Assembly? Beispiele für Evidence Anwendungsverzeichnis Strong Name X.509-Zertifikat URL ...

Permissions Permissions sind Objekte, die den Zugang zu Systemressourcen kontrollieren Was wird kontrolliert? Dateisystem, Netzwerk, User Interface, Registry, Datenbank, Environment Variablen, …

Permissions Request Demand Grant Code kann Permissions anfordern Permissions können von der aufrufenden Funktion angefordert werden Grant Die CLR gewährt Permissions, wenn der Aufrufer vertrauenswürdig ist

In der Übersicht... Evidence Membership Condition Membership Condition Code Group Code Group Permission Set Permission Set P P P P P P P P

Auswerten von Code Groups 1. 1.1 1.2 1.1.1 1.1.2 1.2.1 1.2.2. 1.1.1.1 1.1.1.2 1.2.2.1 1.2.2.2

Sicherheitsrichtlinien (Policies) Enterprise Machine resultierende Rechte Appdomain (per Code) User

Mobiler Code 

Voraussetzungen deklarieren Assembly-Ebene SecurityAction.RequestMinimum SecurityAction.RequestOptional SecurityAction.RequestRefuse Klassen- und Methodenebene SecurityAction.Assert SecurityAction.Demand „Keep Admins happy“ Deklationen sind Metadaten!

Voraussetzungen deklarieren Problem: derzeit keine Variablen zur Laufzeit Permission State muss komplett zur Compile-Zeit angegeben werden Achtung: Änderung modifiziert das Assembly! Assembly muss neu signiert werden!!! Also vor der Auslieferung bedenken

Der Stackwalk Sämtliche Aufrufer auf dem Stack müssen diese Permission haben 3 P 1 Jeder Aufrufer hat eigene Rechte R1 R2 R3 R4 Methode 3 Methode 2 Methode 1 Methode 4 Methode 4 fordert Permission P an 2 P

Kontrolle über den Stackwalk Assert Stackwalk wird abgebrochen Deny Zugriff auf Ressource wird grundsätzlich verweigert Test von Permissions, die nicht „erlaubt“ sind PermitOnly Umkehrung von Deny Gezielter Test einer einzelnen Permission Stackwalk wird nur fortgesetzt, wenn diese Permission vorhanden ist

Vorsicht bei Assert Assert kann Löcher ins Sicherheitssystem bringen Assert nur nach genauer Überlegung in ein System einführen „lange Aufrufketten“ beim Stackwalk bei Aufrufen von Unmanaged Code Assert sobald wie möglich wieder per RevertAssert aufheben! Assert kann von Administratoren unterbunden werden Code läuft plötzlich nicht mehr

Demand und LinkDemand... A Fully Trusted A Fully Trusted B C Partially Trusted D Fully Trusted D Fully Trusted (Link-) Demand for FullTrust E Fully Trusted E Fully Trusted

Demand und LinkDemand...

LinkDemand Sicherheitscheck beim Übersetzen eines Assemblies Nur deklarativ (per Attribut) Nur direkter Aufrufer wird geprüft Kein vollständiger Stackwalk daher mögliche Sicherheitlücke !!! also nur nach genauer Überlegung benutzen Exception, wenn Link nicht möglich

AllowPartiallyTrustedCallers CLR führt für Strong Named Assemblies automatisch einen LinkDemand für FullTrust aus Verhindern von „Luring Attacks“ Problem: aufrufende Assemblies, die kein FullTrust haben können dieses Assembly nicht benutzen Exception mit der Meldung “Request Failed” deutet auf dieses Problem hin

AllowPartiallyTrustedCallers Lösung: LinkDemand abschalten Attribut AllowPartiallyTrustedCallers auf Assembly-Ebene hinzufügen Sinngemäß hat dies folgende Bedeutung: „Ich, der Entwickler, habe den Code in diesem Assembly nach bestem Wissen und Gewissen geprüft und bin mir absolut sicher, dass keine Luring Attacks möglich sind!“ Lassen Sie äußerste Vorsicht beim Einsatz dieses Attributs walten!!!

StrongNameIdentityPermission Bestimmte Assemblies sollen nicht von jedem aufgerufen werden können Problem: CLR prüft standardmäßig nicht, von welchem Assembly aus ein Stück Code aufgerufen wird

StrongNameIdentityPermission Einfache Lösung: Explizite Definition per LinkDemand Attribut StrongNameIdentityPermission hinzufügen Mögliche Sicherheitslücke, da Sicherheitscheck nur beim Übersetzen erfolgt Bessere Lösung: Eigene Ressourcen werden durch eigene Permissions geschützt (!!!)

Tipps Vermeiden Sie LinkDemands grundsätzlich! Vermeiden Sie Assert wann immer es irgendwie geht! Wenn Sie den Zugriff auf eigene Ressourcen kontrollieren wollen, sollten Sie eine eigene Permission implementieren

Richtliniensystem erweitern

Richtliniensystem erweitern Custom Permissions Zugriff auf Systemressourcen, die standardmäßig nicht geschützt sind Custom Code Groups und Membership Conditions Implementieren eigener Logik für Code Groups Custom Evidence Eingebettet im Assembly vom CLR-Host definiert (à Yukon)

Full Trust Assemblies Assemblies, die für die Funktionalität der Zugriffssicherheit sorgen Permission-Klassen Alle Parametertypen der Permission-Klassen MembershipConditions Alle Klassen, die das Richtliniensystem zur Evaluierung der Rechte eines Assemblies benötigt

Tipps Setzen Sie bei allen Assemblies, die Sie ausliefern Strong Names ein (à Sicherheit)! Definieren Sie eine eigene Sandbox für Ihren Code und nutzen Sie dabei den Strong Name oder ein Zertifikat als Merkmal (à Evidence)! Achten Sie auf mögliche Sicherheitslücken (à Assert und LinkDemand)!!!

Security.NET - Was darf mein Code? Zusammenfassung Code Access Security bietet ein Sicherheitsmodell für mobilen Code, das auf dem Betriebssystem aufsetzt Code wird in einer Sandbox ausgeführt, die selektiven Zugriff auf Systemressourcen erlaubt Der Administrator definiert über Sicherheitsrichtlinen, welche Zugriffe erlaubt sind

Danke für Ihre Aufmerksamkeit  www.devcoach.de

Fragen!? Uff...

Mehr Informationen MOC 2350: Securing and Deploying Microsoft .NET Assemblies www.microsoft.com/traincert/syllabi/2350AFinal.asp Don Box, Security in .NET msdn.microsoft.com/msdnmag/issues/02/09/SecurityinNET/default.aspx M. Howard, D. LeBlanc, Writing Secure Code, Microsoft Press www.amazon.de/exec/obidos/ASIN/0735615888/qid%3D1029869643/302-2327711-1832856#pd

Über den Referenten Michael Willers ist Software-Architekt und Trainer. Er berät Projektverantwortliche und Softwareentwickler bei Design und Implementierung von Lösungen für die Microsoft .NET Plattform. Darüber hinaus ist Michael Willers Mitglied in verschiedenen Fachbeiräten und Lehrbeauftragter für den Themenbereich Softwareentwicklung an mehreren Fachhochschulen und Universitäten in Deutschland. Er ist Initiator und Gründer des msdn TechTalk von Microsoft und war zuvor lange Jahre als Entwickler und Projektleiter für namhafte Unternehmen, u.a. Microsoft Deutschland, tätig. Sie erreichen Ihn per eMail an michael.willers@devcoach.de oder über seine Website www.devcoach.de.

Publikationen des Referenten Security.NET - Was darf mein Code? Publikationen des Referenten Willers, Michael: Microsoft‘s Weg zu .NET c‘t Magazin für Computertechnik, Nr. 6/2001, S. 252-259, Februar 2001 Willers, Michael: ".NET Remoting“ - Lego-Baukasten für verteilte Anwendungen OBJEKTspektrum, Nr. 3/2002, S. 83, Mai/Juni 2002 Willers, Michael: Wird alles anders? - Asynchrone Methodenaufrufe in .NET OBJEKTspektrum, Nr. 2/2002, S. 68, März/April 2002 Willers, Michael: Die ".NET Common Language Runtime": Überblick und Einsteig OBJEKTspektrum, Nr. 4/2001, S. 90-95, Juli/August 2001 Willers, Michael: "Microsoft .NET" - das programmierbare Web OBJEKTspektrum, Nr. 6/2000, S. 19-24, November/Dezember 2000 Willers, Michael: "OLE DB" - ein Generalschlüssel für Datenzugriffe? OBJEKTspektrum, Nr. 2/2000, S. 83-87, März/April 2000 Willers, Michael: So richten Sie IIS Anwendungen automatisch ein System Journal, Nr. 5/2000, S. 100-103, September/Oktober 2000 Willers, Michael: Marshaling auf der Basis von Typbibliotheken System Journal, Nr. 6/1999, S. 85-87, November/Dezember 1999 Mehr Informationen unter www.devcoach.de in der Rubrik Publikationen.

Glossar CLR - Common Language Runtime: Laufzeitumgebung des .NET Frameworks. Sie muss installiert sein, damit ein .NET-Programm ausgeführt werden kann. Sie ist die einheitliche Laufzeitumgebung aller .NET-Programmiersprachen. Assembly: Softwarekomponente im .NET Framework. Jede .NET-Anwendung besteht aus einem Assembly und jede Assembly ist eine Komponente im Sinne objektorientierter Softwarekomponenten. Wiederverwendung, Sicherheit, Versionierung und Deployment finden im .NET Framework auf der Basis von Assemblies statt. Strong Name: garantiert einen eindeutigen Namen und die Integrität (Unversehrtheit) einer Assembly. Er basiert auf einem Public Key-Verfahren, bei dem der endgültige Assembly-Name aus dem öffentlichen Schlüssel und dem einfachen Namen (z.B. MyTestAssembly) gebildet wird. Zusätzlich wird die Assembly mit dem privaten Schlüssel signiert. Durch die Umkehrung der Signatur mit Hilfe des öffentlichen Schlüssels kann der Empfänger einer Assembly sicher feststellen, ob die Datei auf ihrem Weg vom Autor zu ihm verändert wurde. Luring Attack: der Versuch, eine Aktion auszuführen zu der man nicht die notwendigen Rechte besitzt. Zu diesem Zweck versucht man jemanden, die diese Rechte hat, zur Ausführung zu bewegen. Sandbox: abgeschottete Umgebung mit einem exakt definierten Sicherheitskontext, in der Code ausgeführt wird

Glossar Evidence: Codemerkmale, die von den Sicherheitsrichtlinien zur Gewährung bestimmter Permissions herangezogen werden Bedingung (membership condition): Objekt, welches über das Vorhandensein spezifischer Evidence Auskunft gibt Code Group: Objekt, welches eine Bedingung mit einem Satz von Permissions verknüpft Permission Set: Zusammenfassung von einzelnen Permissions zu einer Gruppe, vergleichbar mir Benutzern und Benutzergruppen Permission: Objekt, welches Zugriffsrechte für eine Ressource oder Identität repräsentiert deklarative Sicherheitsprüfung: Prüfung anhand von in Metadaten enthaltenen Sicherheitsinformationen imperative Sicherheitsprüfung: Prüfung nach Aufruf einer Sicherheitsmethode in geschütztem Code Rechteanforderung (permission demand): fordert Überprüfung auf ausreichende Rechte durch den aufrufenden Code Sicherheitsrichtlinien (policy): hierarchischer Satz von Vorschriften zur Einschränkung der Rechte, die verwaltetem Code gewährt werden Stackwalk: systematische Überprüfung der Rechte aufrufender Funktionen auf dem call stack im Falle einer Rechteanforderung

Security.NET - Was darf mein Code? Microsoft‘s Vision Empower people software through great any time, any place, and on any device. Final Slide #4 / Schlußfolie 4 = Mission Statement Please include the Microsoft Mission Statement as last and final slide in all presentations