Overview: Plattform-level Methods for Secure Systems

Slides:



Advertisements
Ähnliche Präsentationen
Cadastre for the 21st Century – The German Way
Advertisements

Service Oriented Architectures for Remote Instrumentation
E-Solutions mySchoeller.com for Felix Schoeller Imaging
Service Discovery in Home Environments
DNS-Resolver-Mechanismus
R. Zankl – Ch. Oelschlegel – M. Schüler – M. Karg – H. Obermayer R. Gottanka – F. Rösch – P. Keidler – A. Spangler th Expert Meeting Business.
Windows Vista für Entwickler
Dr. M. Schlottke Common Description of Web Services Source: P. Gerbert, 2002 Web Services allow to establish B2B e-commerce on the fly Web Services allow.
Multi electron atoms Atoms with Z>1 contain >1 electron. This changes the atomic structure considerably because in addition to the electron-nucleus interaction,
Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2009/01/17 Graphics:
Fakultät für informatik informatik 12 technische universität dortmund Mapping of Applications to Platforms Peter Marwedel TU Dortmund, Informatik 12 Germany.
Fakultät für informatik informatik 12 technische universität dortmund Universität Dortmund Middleware Peter Marwedel TU Dortmund, Informatik 12 Germany.
Fakultät für informatik informatik 12 technische universität dortmund Specifications Peter Marwedel TU Dortmund, Informatik 12 Graphics: © Alexandra Nolte,
Peter Marwedel TU Dortmund, Informatik 12
Fakultät für informatik informatik 12 technische universität dortmund Hardware/Software Partitioning Peter Marwedel Informatik 12 TU Dortmund Germany Chapter.
Regional Support in the context of LCG/EGEE
Projektübung Klimamodellierung André Paul. Vorbesprechung Projektübung Klimamodellierung ( ) – A. Paul.
Hier wird Wissen Wirklichkeit Computer Architecture – Part 10 – page 1 of 31 – Prof. Dr. Uwe Brinkschulte, Prof. Dr. Klaus Waldschmidt Part 10 Thread and.
Introduction to BOS Supplier Guidelines v6
Munz – IT/TG - Lörrach. Goals of this intensive lecture To learn: To learn: –What does it means programming in Java ? –What is JAVA good/bad for ? –Which.
Introduction to the topic. Goals: Improving the students essay style in general Finding special words and expressions that can be used in essay writing.
Deutsche Gesellschaft für Technische Zusammenarbeit GmbH Integrated Experts as interface between technical cooperation and the private sector – An Example.
INSTITUT FÜR DATENTECHNIK UND KOMMUNIKATIONS- NETZE 1 Steffen Stein, TU Braunschweig, 2009 A Timing-Aware Update Mechanism for Networked Real-Time Systems.
Zu + Infinitiv : eine Erklärung
Laurie Clarcq The purpose of language, used in communication, is to create a picture in the mind and/or the heart of another.
Seite 1 © Bundesbeauftragter für den Datenschutzhttp:// Towards New Ethics in Information Society 1. New Technological Trends 2. The States.
Institut AIFB, Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Towards Automatic Composition of Processes based on Semantic.
Sanjay Patil Standards Architect – SAP AG April 2008
| DC-IAP/SVC3 | © Bosch Rexroth Pneumatics GmbH This document, as well as the data, specifications and other information set forth in.
Das Perfekt (Present Perfect Tense). Think of 5 things you did in your holidays but think of sentences in the PRESENT TENSE. 1.Am Montag schlafe ich viel.
Centre for Public Administration Research E-Government for European Cities Thomas Prorok
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
3rd Review, Vienna, 16th of April 1999 SIT-MOON ESPRIT Project Nr Siemens AG Österreich Robotiker Technische Universität Wien Politecnico di Milano.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
The free XML Editor for Windows COOKTOP Semistrukturierte Daten 1 Vortrag Semistrukturierte Daten 1 COOKTOP The free XML-Editor for Windows
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
You need to use your mouse to see this presentation © Heidi Behrens.
Department of Computer Science Homepage HTML Preprocessor Perl Database Revision Control System © 1998, Leonhard Jaschke, Institut für Wissenschaftliches.
INTAKT- Interkulturelle Berufsfelderkundungen als ausbildungsbezogene Lerneinheiten in berufsqualifizierenden Auslandspraktika DE/10/LLP-LdV/TOI/
XML IV: Cocoon 2.
Algorithm Engineering Parallele Algorithmen Stefan Edelkamp.
Verben Wiederholung Deutsch III Notizen.
Cyber-Security und Datenschutz in der Cloud Wie passt das zusammen?
Kölner Karneval By Logan Mack
Berner Fachhochschule Hochschule für Agrar-, Forst- und Lebensmittelwissenschaften HAFL Recent activities on ammonia emissions: Emission inventory Rindvieh.
Ein Projekt des Technischen Jugendfreizeit- und Bildungsvereins (tjfbv) e.V. kommunizieren.de Blended Learning for people with disabilities.
“Weil” und “Denn”.
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
External Labels – The rules For all external labels the following rules apply (external labels are all labels which are not inside of a shape) - all labels.
FORSCHUNGSINSTITUT FÜR ÖFFENTLICHE VERWALTUNG BEI DER DEUTSCHEN HOCHSCHULE FÜR VERWALTUNGSWISSENSCHAFTEN SPEYER Dr. Sonja Bugdahn 1 Can New Regulators.
Die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) dCache T1 admins and experts Welcome to FZK.
Negation is when you dont have or dont do something.
Adjectiv Endungen Lite: Adjective following articles and pre-ceeding nouns. Colors and Clothes.
Ciiema CITEM - Dr. Siegl VU Dr. Manfred Siegl ENTWURF, ERRICHTUNG, BETRIEB VON DATENNETZEN VU Dr. Manfred Siegl
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Vorlesung Knowledge Discovery - Institut AIFB Tempus fugit Towards.
Ambient Intelligence WS 10/11
Separable Verbs Turn to page R22 in your German One Book R22 is in the back of the book There are examples at the top of the page.
1 Intern | ST-IN/PRM-EU | | © Robert Bosch GmbH Alle Rechte vorbehalten, auch bzgl. jeder Verfügung, Verwertung, Reproduktion, Bearbeitung,
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
THE PERFECT TENSE IN GERMAN
Adjective Endings Nominative & Accusative Cases describing auf deutsch The information contained in this document may not be duplicated or distributed.
Technische Universität München 1 CADUI' June FUNDP Namur G B I The FUSE-System: an Integrated User Interface Design Environment Frank Lonczewski.
TUM in CrossGrid Role and Contribution Fakultät für Informatik der Technischen Universität München Informatik X: Rechnertechnik und Rechnerorganisation.
By Martin L. Loeffler.  The basic sentence has a subject and a verb.  The subject and verb need to be together.  The subject and verb need to agree.
Institut für Nachrichtentechnik U. Reimers Technische Universität Braunschweig The MultiMedia Home Platform (MHP): Hype or Reality ?
Computer Services Business challenge
Azure Mobile Services Deep dive into node.js scripting
 Präsentation transkript:

Building Secure Systems GENERALLY ACCESSIBLE Building Secure Systems Plattform Security – Isolation, Privileges and Server Security Walter Kriha, Computer Science and Media Faculty August 2, 2006

Overview: Plattform-level Methods for Secure Systems Different privilege levels Isolation of components (virtual memory, micro kernels) Interception with Wrappers Virtual Machines Inversion of Control, Dependency Injection Architectures Capabilities Name Spaces, Services and Components Trusted Computing Bases Sandboxes Jails Funnels Code Verification

Current Problems and Approaches

Distributed, after-the-fact security for home computers Security Specialists SMS based code control security tools Directory PC with tracking SW update Analysis report MS-Data Center Admins PC with tracking SW office home

The Sandbox (Access Domain) All resources the user has a right to access (ACL) Program started by user object User A object Sandbox object Z CODE service Y service User rights: May do everything! Sandbox Policy: Program X is allowed to use service Y and Object Z Reference Monitor service A Sandbox restricts a users rights! It needs a description containing the rules for a specific domain (constrained program). A reference monitor reads those rules. Every access by the code is intercepted by the monitor and the rules are applied. If the rules do not match the intended access it is blocked. No matter how powerful the users rights are, the code cannot escape the sandbox as long as the reference monitor is not bypassed.

Main(string FileName = „foo“) Process Mapping string to resource Open(fileName) All Files File named „foo“ User has rights for all those files. Process needs the same rights as it does not know which one the user would like to process

Main(FileDescriptor) for open file „foo“ Process No mapping from string to resource! Read(FileDescriptor) „foo“ file User has rights for all those files. Process needs NO rights to open user files. Gets open stream as a capability

Server Rechte Benötigte Rechte für Aufgabe User F Rechte Ambient Authority Sandbox

System Architecture and Security Consequences

Immutable Laws of Security? 1. If the data hasn’t crossed a trust boundary, you don’t really care about it. 2. If the threat requires that the attacker is ALREADY running code on the client at your privilege level, you don’t really care about it. 3. If your code runs with any elevated privileges (even if your code runs in a restricted svchost instance) you need to be concerned. 4. If your code invalidates assumptions made by other entities, you need to be concerned. 5. If your code listens on the network, you need to be concerned. 6. If your code retrieves information from the internet, you need to be concerned. 7. If your code deals with data that came from a file, you need to be concerned (these last two are the inverses of rule #1). 8. If your code is marked as safe for scripting or safe for initialization, you need to be REALLY concerned.

OS-Architecture and Security Mechanisms

CPU Protection Levels 0/1 State of protected mode bit: 1 = protected/kernel mode 0 = application/user mode 0/1 Sensing operations (I/O) Control operations (halt, memory mgmt.) Regular compute operations (add, mul) Most CPUs offer a simple protetion scheme. Dangerous operations (sensing, control) are only allowed when the CPU has been put in kernel mode (protection bit is set). Applications can NOT change the state of the CPU arbitrarily. They MUST use certain controlled gates (software interrupts) to change the mode. From then on, operating system code runs!

Switching to Kernel Mode Application Application stack used User Mode, CPU doing harmless things C Language Library System Call Library Software Interrupt – Kernel Trap (CPU instruction) Kernel Mode, CPU doing critical things Operating System Kernel stack used Hardware (CPU, I/O) Only in kernel mode will the CPU allow critical instructions. The application will be terminated if it tries to execute critical instructions without changing through kernel traps into protected mode.

Security Properties of Privilege Modes Rights/Authority Trick code into extending callers privileges code code code code Attack code on same level code code code code code Turn off privileged mode code

Security Properties of Privilege Modes Rights organized as privilege levels typically lead to ambient authority for code pieces because no sectors are possible within the levels. Most code pieces would need a different segmentation of rights. On the same level each piece of code is a threat to all others (same privileges, no sep.) Every mode change needs to be undone later. Software needs to make sure that on the way back the privilege mode gets reversed to the old value. There cannot be a bypass of this piece of code The mode change needs to be authorized The privileged code needs to interpret arguments carefully to avoid extending the callers privileges in an unwanted way (confused deputy)

Address Isolation Same! Virtual Address Physical Address Process A CPU 000000000000000000000000000000 256 MB Random Access Memory (physical) Application 2: all addresses in same range as every other app. Memory Management Unit (MMU) Same! Virtual Address 32 bit address register Application 1: all addresses in same range as app 1. page table Process A page table Process B Physical Address Process A Physical Address Process B

Monolithic Kernels Data runtime loadable Application 1 device driver firewall module audio driver User Mode compiletime Kernel Functions memory managment Data Kernel Mode file management process management device drivers Fast access to functions and shared kernel data

Microkernels Fast access to functions and shared kernel data Application 1 process management server Device Driver file management server security management server memory managment server Device Driver User Mode Interprocess comm. basic memory management Kernel Mode Context switching Interrupt handling basic security Clock driver Fast access to functions and shared kernel data Interprocess Communication or system calls

From: G.Heiser, Virtualization of Embedded Systems

Armored Monolithic Kernels User Mode Wrapper gurantees transactional updates compiletime memory managment Data Kernel Mode audio driver file management Kernel functions device drivers process management Data Intercepted and controlled calls to and from kernel Temporary Copy of kernel data Modified page table to restrict driver to certain kernel addresses

VM Armored Micro Kernels Data memory managment device drivers file management User Mode Kernel functions process management Inter Kernel Communication Inter Kernel Communication VM VM Microkernel (e.g. L4) Kernel Mode

The Secure Extension Problem

Kernel Device Driver Driver Controller driverControl() Extern ProcTab tab; Extern int criticalFunc() Init() Read() Write() IOCtrl() HandleInt() Gobal: ProcTab criticalFunc() Resolved at runtime or linktime

Kernel Device Driver Dependency injection Driver Controller driverControl() private ProcTab tab; private int criticalFunc() Init(ProctTab, crit.Function) Read() Write() IOCtrl() HandleInt() Gobal: ProcTab criticalFunc() criticalFunc() criticalFunc()

Der Driver kann ausschließlich über die Argumente und deren Methoden auf Kernel-Daten oder Funktionen zugreifen. Es gibt keine andere Möglichkeit, auch nicht durch die Navigation von globalen Verzeichnissen oder durch sog. Composite Objects (Design Pattern), die über ihre Tree-Navigation Zugriffe auf viele andere Objekte gestatten. Der Treiber macht eigene Abhängigkeiten und Bedürfnisse im Interface der init-Methode sichtbar: Dort steht, was der Treiber vom Kernel benötigt, um zu funktionieren. Der Kernel ist in der Lage, Proxy Objekte oder speziell für den Treiber zugeschnittene Closures (das sind initialisierte higher-order Functions oder deren objektorientiertes Äquivalent bzw. deren Simulationen durch Command Patterns) herzustellen und an den Treiber zu übergeben. Damit kontrolliert der Kernel komplett die Ausführungsumgebung des Drivers.

Framework Plug-in Inject dependency (DI principle) Declare dependency Init(Node) Read() Write() Initiate Call (IOC principle) Use reference (object capability principle) Node Node Node Node does not allow traversal and so plug-in cannot access parent node. The plug-in declares ist dependencies in ist interface

Modes and Privileges

Same runtime environment for all applications Cycle stealing applications create a problem for near-realtime multimedia applications A common, navigable filesystem with ambient authority Server (privileged) Application Global Administrator Dangerous accounts, single audit and log features Tons of unsafe but privileged scripts and utilities (setUid) Common Filesystem Lots of unverified system libraries with memory leaks etc. Privileged Utilities >300 complex system calls Huge Libraries Incomplete quota administration System call Interface Countless dynamically loadable modules Module Legacy OS Module Attacks on random number generation Driver Driver Driver Unsafe kernel languages (memory) >100.000 drivers for windows Hardware (CPU etc.) Covered channels (cache, bios, CPU) Network scans (IP seq.) Huge TCB, 2 modes only

Driver.c: If (uid = 0) { // do something harmless } // run as root now!

Interprocess communication Para-virtualisierung Trusted Computing Base

Rules for Virtualization/Guest Operating Systems VMs (die gewöhnlich unter privilegierten Accounts arbeiten) sollen wie andere kompromittierbare Dienste behandelt werden, d.h. am Besten unter Verwendung von Isolationstechniken wie chroot, systrace, ACLs, sowie POLA Regeln. Die Virtuellen Maschinen wie die Gast-Betriebssysteme sollten so schmal wie möglich konfiguriert sein. Ungenutzte Hardware-Treiber oder Services sind auch beim Gast zu entfernen. Die Integrität der Gastsysteme ist genauso zu sichern wie die der Trägermaschinen durch regelmässige Updates, Privilegieneinschränkungen der Gast-Applikationen etc. Systeme die mehrere unterschiedliche Privilegienzonen ermöglichen sind vorteilhaft (XEN). Sicherheitslevel von Plattformen (z.B. Berkeley Security Levels) sind zu nutzen. [Orm] Ressources: Ormandy

Software-based Isolation: Singularity

Singularity Features Die Kapselung beruht auf leichtgewichtigen Prozessen Kernel, Applikationen, Treiber und System-Server sind allesamt Prozesse Ein Prozess ist ein geschlossener Object-Space, der keine Referenzen in andere Prozesse hinein besitzt IPC ist durch ein Kanalkonzept realisiert, das sich durch streng typisierte Kommunikation, definiert durch State-Machines, auszeichnet Objekte können an andere Prozesse übertragen werden, wechseln dann jedoch den Besitzer, so dass keine cross-process synchronization Probleme oder zentrale Garbage Collection nötig sind. Ein kleiner Teil Code ist unverified und trusted, der große Rest von Microkernel und Applikationen etc. ist verifiably trusted, d.h. er wurde vom sicheren Compiler erzeugt. Es sind keine dynamischen Erweiterungen von Prozessen (Code laden) erlaubt. Jede Erweiterung muss ein eigener Prozess sein. Jede Softwarekomponente ist durch Meta-Daten umfangreich beschrieben und wird ohne eigenen Installer installiert.

Small, light-weight processes No cross object space sharing p2 Safe interprocess communication (separation) p1 One virtual address space Individual runtimes (GC, libraries) Trusted, not verifiably safe

Typed channels with state-machines for IPC Eheap Extension Code Application Code CLR Lib. CLR Lib. Runtime Runtime No common, shared variables between both object spaces

public contract NamespaceContract : ServiceContract { in message Bind(char[] in path, ServiceContract.Exp:Start exp); out message AckBind(); out message NakBind(ServiceContract.Exp:Start exp); in message Notify(char[] in pathSpec, NotifyContract.Imp:Start imp); out message AckNotify(); out message NakNotify(NotifyContract.Imp:Start imp); in message Find(char[] in pathSpec); out message AckFind(FindResponse[] in results); out message NakFind(); out message Success(); override state Start: one { Success! -> Ready; } state Ready: one { Bind? -> ( AckBind! or NakBind! ) -> Ready; Find? -> ( AckFind! or NakFind! ) -> Ready; Notify? -> ( AckNotify! or NakNotify! ) -> Ready; }} Als eingebettete Klassen eines Kanals werden jeweils ein exporter bzw. importer definiert, die die entsprechenden Messages des Kontrakts zugeordnet bekommen. Will ein Prozess einen Kanal eröffnen, dann erzeugt er Instanzen von exporter und importer und schickt die exporter-Instanz über einen existierenden Kanal an den Empfänger. Danach können beide miteinander kommunizieren.

<manifest> <application identity="S3Trio64" /> <assemblies> <assembly filename="S3Trio64.exe" /> <assembly filename="Namespace.Contracts.dll" version="1.0.0.2299„ /> <assembly filename="Io.Contracts.dll" version="1.0.0.2299" /> ….. <assembly filename="ILHelpers.dll" version="1.0.0.2299" /> <assembly filename="Singularity.V1.ill" version="1.0.0.2299" /> </assemblies> <driverCategory> <device signature="/pci/03/00/5333/8811" /> <ioMemoryRange baseAddress="0xb8000" rangeLength="0x8000„ fixed="True" /> <ioPortRange baseAddress="0x4ae8" rangeLength="0x2" fixed="True" /> …. <extension startStateId="3" contractName="Microsoft.Singularity-.Extending.ExtensionContract" endpointEnd="Exp„ assembly="Namespace.Contracts" /> <serviceProvider startStateId="3" contractName="Microsoft-.Singularity.Io.VideoDeviceContract" endpointEnd="Exp„ assembly="Io.Contracts" /> </driverCategory> </manifest> A manifest file describes the physical structure of an application and its installation needs. Control is never passed to the application for installation purposes (no setup.exe)

/bin/sshd @ /users/ted (+ {/grp/pathrole})* + /bin/ms/office/word Compound Principal

Tracked data structures with ownership transfer When creating a TRef<T>, the constructor requires an object of type T as an argument. The caller must have ownership of the object at the construction site. After the construction, ownership has been passed to the newly allocated TRef. The Acquire method is used to obtain the contents of a TRef. If the TRef is full, it returns its contents and transfers ownership to the caller of Acquire. Afterwards, the TRef is said to be empty. Release transfers ownership of a T object from the caller to the TRef. Afterwards, the TRef is full. TRefs are thread-safe and Acquire operations block until the TRef is full.

Privilege Reduction vs. Capabilities

Privilege Restriction and Separation with Rights Reduction vs Capabilities Subtractive Model additive Model (default is deny) Root Directory capability Change runtime environment to jail Change owner User change identity to user User Hand directory capability to unprivileged user process. Without capabilities user process cannot access resources Jails strips off other rights

Classic *-properties Vista Integrity Levels L2 L2 Write-down Write-down Write-up Write-up Read-down Read-down Read-up Read-up L1 L1 L1 Vista: Lower level unprotected against upper level attacks. Upper level open to luring attacks and data exposure. Ambient authority through queries and messages

Systrace in OpenBSD wrapper (etc/systrace) Application System Call: open(/tmp/foo, mode); /etc/systrace (policies) Operating System Systrace Interceptor policy_for_application: native_read filename match „/tmp/*“ then permit Systrace intercepts system calls and evaluates them according to specified policies. By wrapping user shells, applications and daemons most code can be easily sandboxed.

Privilege Restriction and Separation with Identities or ACLs DecreaseMyRights MakeMeAdmin User User Admin Rights Rights Reduce Roles etc. start Extend Roles etc. start Program Privilege Starter Prog. Rights Admin Rights vector start Program Admin Rights vector

Polaris The file is edited in the context of a powerless dummy user and then copied back. The application gets the file via the so called „powerbox“ – a GUI component that distributes capabilities upon user request.

Windows Operating System „Sandbox“ Running mail program Polaris Secure Desktop Running Excel program open attachment Execute with macros enabled Copy over Excel file With macros Excel file With macros Copy back Dummy user session with restricted rights Real user session Windows Operating System

Secure Server Design and Reduction of Exposure by Software-Architecture

Sicherheitsprinzipien beim Server-Design Isolierung der Server-Prozesse durch chroot oder jails Server-Prozesse laufen als unprivilegierte User Der Zugriff auf die Datenbank sollte minimale Rechte besitzen Verschiedene Funktionalitäten sollten auf verschiedene Prozesse verteilt werden Nach: Maxwell Krohn, Building Secure High-Performance Web Services with OKWS

ServerSocket ss = new ServerSocket(port); for(;;) { Socket client = ss.accept(); BufferedReader in = new BufferedReader( new InputStreamReader(client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream()); while((line = in.readLine()) != null) { // read command (or filename) from network // execute command } out.print(result); David Flanagan, Java Examples in a Nutshell (shortened)

VO Realm Task oriented Company Realm App. Realm administrative Task1 DB Realm Task2 Cell Realm technical Appl. DB OS File Resource Network Resource OS Realm

Danger of Server Applications Server sind einfach zu erstellen, bieten aber immer potenzielle Einfallstore für Angreifer. Selbstgebaute Authentisierungen können gefährlich sein. Hohe Rechte für den Server sind gefährlich im Fehlerfall. In den Systemen ist meist viel Ambient Authority verfügbar. Server irren sich bei den Zugriffsrechten (Confused Deputy Problem). Server machen Fehler bei der Umsetzung von Eingabestrings in Ressourcen. Manche Server implementieren sehr verschiedene Funktionen, die es schwierig machen, das gesamte Gefahrenpotential abzuschätzen. Server müssen teilweise privilegierte Operationen ausführen und brauchen daher spezielle Rechte, zumindest für gewisse Zeit. Dies ergibt Angriffsmöglichkeiten. Falls der Aufrufer nicht gegen die Betriebssystem-Registry autorisiert wurde, haben die Betriebssysteme keine Möglichkeit die Aktionen des Servers intern zu kontrollieren. Die Rechte der Aufrufer können weit mehr umfassen, als die Server-Applikation eigentlich benötigen würde. Ohne Sandbox-artige Einschränkung der Server Applikationen existiert auch dadurch Ambient Authority.

„Server“ Process (execution Environment) Service Code Server components User State All User Data

„Server“ Process Process Service Y Service Y User C State User B State One Process per User- too expensive? (idle users?)

„Server“ Process Service Y User A State User F State Process is either single-threaded, event-driven or multithreaded. One Process per Service.

„Server“ Process Service X Service Y One Process Many Services Many User (States) User State User State User State User State User State User State User State User State

SAP „Server“ Process (execution Environment) Service X Code/Data User A Session Data Memory mapped into Process or Virtual Machine

SAP VM

Authority Restriction with Secure Software Entities

http requests root Config Server Loader Dispatcher Child P. Child P. jail jail request Child Process Child Process Child process Log Service Web Service A Web Service B Log request jail authentication machine DB Proxy DB Proxy Service A partition Service B partition

Data in Database Compromised Process which Serves Service C User A data User F data Service C partition

Data in Database Compromised Process which Serves Service C User A data User F data Service C partition

Data in Database Data relevant for User A + Service C User A data Data relevant for User F + Service C User F data Service C partition

Data in Database User A data Compromised Data User F/Serv. C User F data Service C partition

Database Views to reduce exposure and use backend access control Authorized: Service A View for Service A Table with users and Services Authorized: Service B View for Service B

Administration and Race Conditions Not atomic! Root Change runtime environment to jail Change owner change identity to user User Jails strips off other rights

Malicious Code All resources the user has a right to access (ACL) object what the user wanted object Program started by user object CODE service service what the code did User A service All the resources have an attached ACL which says that user A may access the object. This allows malicious code once started by a user to access and abuse all resources the user has access to.

Access Rights (Roles or Identity based Vs. Capability based) Principles and Patterns: POLA, Authority + Designation No side-effects Closures Forced Interceptors Usability Application/Server Architecture (Runtime Authority, Modularity) Security Libraries and Frameworks Computer Languages and VM‘s (Type Safety) Operating System and Kernel (Device Drivers, Rights Management) Hardware (e.g. Crypto Processors)

Threats: Buffer Overflow Attack on Server Application (external) Administrator rights abuse Kernel Network stack vulnerability Weak keys in application (e.g. SSO) Race condition attack on admin scripts shatter attack (windows) root-kit placement from CD or DVD resource hogging application (cycle stealer) Input validation problem in application Bad device drivers (stability, malicious code)

Teure Adressraum-Umschaltungen Grosse TCBs Effiziente IPC IO (speziell DMA) nicht virtualisierbar auf manchen Plattformen Cache Management (coloring) Wenig Privilegien-Schichten auf manchem Plattformen

OSGI Mission Critical Security Java Code Security (Protection domain = Codebase, Signature, Principal) Added permissions for administration and service management Service registry and service interfaces to control export/import and use of services and packages with the help of the class loader OSGI is a first step towards a reliable, type-safe platform for mission critical applications in homes, cars and industries. But it is not perfect: class loaders are a terrible way to achieve isolation. Service management is coarse grained and not expressive enough (e.g. if there are two similiar services available I‘d like number A). The difficulty is to allow the addition or removal of services ANY TIME. Interesting combinations of OSGI and Peer-to-Peer technologies (JXTA) are currently investigated.

Objcect Capabilities Fine-Grained Authority Reduction Each application or module gets only as much authority as it needs for the job. This allows safe plug-ins like the renderer for a mail type. From the DARPA browser study (www.combex.org)