-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich auf Richtlinien zur Zugriffskontrolle und Integrität von Informationsflüssen in Computersystemen.
-
HINTERGRUND DER ERFINDUNG
-
Moderne Laufzeitumgebungen für die Programmierung, wie beispielsweise Java und Microsoft. NET Common Language Runtime (CLR), bieten eine Architektur für das Festlegen und Durchsetzen von Richtlinien zur Zugriffskontrolle. Die Laufzeitumgebungen verfügen über eine Liste mit festgelegten geschützten Ressourcen. Eine solche Liste kann von einzelnen Systemadministratoren erweitert werden. Jede geschützte Ressource wird während der Laufzeit durch eine Berechtigung geschützt. Unmittelbar vor dem Zugriff auf eine geschützte Ressource wird eine spezielle Komponente in der Laufzeitumgebung aufgerufen, im Fall von Java handelt es sich um AcessController.checkPermission und im Fall von CLR um Demand. Diese Komponente ist der ”Zugriffskontrolldurchsetzer” (access-control enforcer). Wenn der Zugriffskontrolldurchsetzer für eine bestimmte Ressource aufgerufen wird, durchläuft er den Ausführungsstapel (stack of execution) und prüft, ob allen Aufrufern (caller) im Stapel eine ausreichende Berechtigung gewährt wurde, um auf die geschützte Ressource zuzugreifen.
-
Es gibt ein großes Problem bei diesem Ansatz. Die Richtlinie zur Zugriffskontrolle wird nicht richtig durchgesetzt, da der Zugriffskontrolldurchsetzer den aktuellen Ausführungsstapel nur durchläuft und die Prinzipale, d. h. Benutzer oder Programmkomponenten, im Stapel fragt, ob sie die erforderliche Berechtigung haben. Beim Durchlaufen des Stapels werden jedoch keine Codes oder Subjekte erfasst, die die sicherheitsrelevante Operation beeinflusst haben, zum Beispiel die Änderung eines Dateinamens, außer diese Codes oder Subjekte sind noch in dem Stapel aktiv. Dies ist unter Umständen nicht der Fall, da ein Code vielleicht aus seinem Stapel herausgegangen ist, wobei seine Beeinflussung im dynamischen Speicher aufgezeichnet oder als ein Rückgabewert von einem Verfahren weitergegeben worden sein kann, das nicht mehr im aktuellen Ausführungsstapel ist, und für sicherheitsrelevante Operationen verwendet wird.
-
Andererseits gibt es viele Systeme, bei denen Richtlinien zur Integrität des Informationsflusses festgelegt und durchgesetzt werden müssen. Das Ziel der Richtlinien zum Informationsfluss besteht darin, nicht vertrauenswürdige Prinzipale daran zu hindern, vertrauenswürdige Operationen zu beeinflussen. Ein typisches Beispiel für ein System, bei dem die Durchsetzung der Integrität wesentlich ist, ist ein Web-Anwendungsserver. Für Web-Anwendungen, die ständig nicht vertrauenswürdige Eingaben von potenziell nicht vertrauenswürdigen Benutzern erhalten, ist es sehr wichtig, diese Eingaben zu überprüfen, bevor sie in sicherheitsrelevanten Operationen verwendet werden. Es gibt zwei Probleme bei diesen Integritätsrichtlinien. Das erste Problem besteht darin, dass die Richtlinien schwer festzulegen sind, da ein Systemadministrator oft nicht weiß, woher die nicht vertrauenswürdigen Eingaben kommen und wohin sie gehen. Zweitens sind die Richtlinien schwer durchzusetzen, da für eine richtige Durchsetzung alle Einflussquellen ermittelt und diese Einflussquellen mitverfolgt werden müssen, bis ein Wert verwendet wird.
-
Eine weitere Schwierigkeit besteht darin, implizite Informationsflüsse zu ermitteln. Bei einem impliziten Fluss ändert oder definiert ein Angreifer die Daten nicht direkt, die in einer sicherheitsrelevanten Operation verwendet werden. Der Angreifer nimmt vielmehr Einfluss darauf, welche Daten verwendet werden.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Beispielhafte Ausführungsformen der vorliegenden Erfindung kombinieren eine Festlegung und Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität von Informationsflüssen. Gemäß einer beispielhaften Ausführungsform bezieht sich die vorliegende Erfindung auf ein Verfahren für die Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität in einem Computersystem. Nach diesem Verfahren werden sicherheitsrelevante Senken (security-sensitive sinks) im Software-Code für eine Anwendung ermittelt, die auf dem Computersystem ausgeführt wird. In einer Ausführungsform umfasst das Ermitteln von sicherheitsrelevanten Senken das Ausführen einer Programmanalyse bei dem Software-Code, die das Ausführen einer statischen Programmanalyse bei dem Code und den zugrunde liegenden Bibliotheken beinhaltet. In einer Ausführungsform umfasst das Ermitteln von sicherheitsrelevanten Senken das Analysieren des Software-Codes und das Identifizieren von Aufrufen im Software-Code an einen Zugriffskontrolldurchsetzer in dem Computersystem. In einer Ausführungsform setzt der Zugriffskontrolldurchsetzer die Richtlinie zur Zugriffskontrolle durch.
-
Das Verfahren umfasst ferner das Abrufen einer Richtlinie zur Zugriffskontrolle aus einer Datenbank, auf die das Computersystem zugreifen kann. Die Richtlinie zur Zugriffskontrolle bildet einen Satz von Zugriffsberechtigungen in dem Computersystem auf jeden einer Vielzahl von Prinzipalen ab. In einer Ausführungsform ist die Richtlinie zur Zugriffskontrolle getrennt vom Software-Code erklärend festgelegt. Für jede ermittelte sicherheitsrelevante Senke werden alle Prinzipale festgestellt, die diese sicherheitsrelevante Senke beeinflussen, und jeder sicherheitsrelevanten Senke wird eine umfassende Zugriffsberechtigung zugeordnet, indem die Schnittmenge der Zugriffsberechtigungssätze für alle Einfluss nehmenden Prinzipale dieser sicherheitsrelevanten Senke gebildet wird. Eine Verletzung der Integrität wird gemeldet, wenn eine umfassende Zugriffsberechtigung für eine gegebene sicherheitsrelevante Senke nicht ausreicht, um eine von einer Ressource im Computersystem geforderte Berechtigung zu erfüllen. In einer Ausführungsform enthält jede Zugriffsberechtigung einen Satz von sicherheitsrelevanten Operationen im Computersystem, die einem Prinzipal gewährt werden. Jeder Prinzipal ist eine mit dem Computersystem interagierende Entität, deren Identität durch Authentifizierung geprüft werden kann und dem durch Autorisierung Privilegien gewährt werden. In einer Ausführungsform umfasst die Vielzahl von Prinzipalen Benutzerprinzipale, Maschinenprinzipale oder Dienstprinzipale.
-
In einer Ausführungsform umfasst das Verfahren der vorliegenden Erfindung auch das Identifizieren von Variablen, die in den sicherheitsrelevanten Senken verwendet werden, wobei jede Variable einen Wert hat, der von einem oder mehreren Prinzipalen beeinflusst werden kann, sowie das Zuordnen eines Berechtigungslabels (permission label, Kennsatz für die Berechtigung) zu jedem Wert einer jeden Variablen. Jedes Berechtigungslabel beinhaltet einen Berechtigungssatz, der diesem Wert gewährt wird. In einer Ausführungsform erfolgt die Zuordnung des Berechtigungslabels während der Laufzeit des Software-Codes für die auf dem Computersystem ausgeführte Anwendung. In einer Ausführungsform wird der Berechtigungssatz jedes Berechtigungslabels von den Berechtigungssätzen abgeleitet, die auf die Prinzipale abgebildet sind, welche den Wert beeinflussen, der diesem Berechtigungslabel zugeordnet ist.
-
In einer Ausführungsform umfasst das Verfahren der vorliegenden Erfindung ferner das Ermitteln eines neuen Werts, der von zwei oder mehreren bestehenden Werten erzeugt wird, und das Berechnen eines Berechtigungslabels für den neuen Wert unter Verwendung der Schnittmenge der Berechtigungssätze, die jedem Wert zugeordnet sind, der für das Erzeugen des neuen Werts verwendet wird, und des Prinzipals, der den neuen Wert festlegt. In einer Ausführungsform umfasst das Zuordnen des Berechtigungslabels ferner das Verwenden des Berechtigungslabels für jeden Wert, der eine bedingte Anweisung steuert, um Berechtigungslabel für jeden Wert einzuschränken, der in dem von der bedingten Anweisung dominierten Software-Code festgelegt ist.
-
Beispielhafte Ausführungsformen der vorliegenden Erfindung beziehen sich ferner auf ein Verfahren für die Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität in einem Computersystem durch Ermitteln von sicherheitsrelevanten Senken im Software-Code für eine auf dem Computersystem ausgeführte Anwendung, Abrufen einer Richtlinie zur Zugriffskontrolle aus einer Datenbank, auf die das Computersystem zugreifen kann, Identifizieren von Variablen, die in den sicherheitsrelevanten Senken verwendet werden, wobei jede Variable einen Wert hat, der von einem oder mehreren Prinzipalen beeinflusst werden kann; Zuordnen eines Berechtigungslabels zu jedem Wert einer jeden Variablen und Verwenden der zugeordneten Berechtigungslabel, um Entscheidungen über die Zugriffskontrolle für die sicherheitsrelevanten Senken in dem Computersystem zu treffen. Die Richtlinie zur Zugriffskontrolle bildet einen Zugriffsberechtigungssatz in dem Computersystem auf jeden einer Vielzahl von Prinzipalen ab, und jedes Berechtigungslabel umfasst einen Berechtigungssatz, der diesem Wert gewährt wird.
-
In einer Ausführungsform erfolgt das Zuordnen des Berechtigungslabels während der Laufzeit des Software-Codes für die auf dem Computersystem ausgeführte Anwendung. In einer Ausführungsform wird der Berechtigungssatz jedes Berechtigungslabels von den Berechtigungssätzen abgeleitet, die auf die Prinzipale abgebildet sind, welche den Wert beeinflussen, der diesem Berechtigungslabel zugeordnet ist. Das Verfahren umfasst ferner das Ermitteln eines neuen Werts, der von zwei oder mehreren bestehenden Werten erzeugt wird, und das Berechnen eines Berechtigungslabels für den neuen Wert unter Verwendung der Schnittmenge der Berechtigungssätze, die jedem Wert zugeordnet sind, der für das Erzeugen des neuen Werts verwendet wird, und des Prinzipals, der den neuen Wert festlegt.
-
In einer Ausführungsform umfasst der Schritt des Zuordnens des Berechtigungslabels ferner das Verwenden des Berechtigungslabels für jeden Wert, der eine bedingte Anweisung steuert, um Berechtigungslabels für jeden Wert einzuschränken, der in dem von der bedingten Anweisung dominierten Software-Code festgelegt ist.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist eine schematische Darstellung einer stapelbasierten Zugriffskontrolle;
-
2 ist eine schematische Darstellung, die Probleme im Zusammenhang mit einer stapelbasierten Zugriffskontrolle veranschaulicht;
-
3 ist eine schematische Darstellung, die ein Problem im Zusammenhang mit einer historienbasierten (history based) Zugriffskontrolle veranschaulicht;
-
4 ist eine schematische Darstellung, die ein anderes Problem im Zusammenhang mit einer historienbasierten Zugriffskontrolle veranschaulicht; und
-
5 ist eine schematische Darstellung einer Ausführungsform zur Durchsetzung der Zugriffskontrolle und Integrität gemäß der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Beispielhafte Ausführungsformen von Systemen und Verfahren gemäß der vorliegenden Erfindung stellen die automatische Festlegung von Richtlinien für den Informationsfluss in einem Computersystem wie beispielsweise einem verteilten Computersystem oder einem web-basierten Computersystem bereit.
-
Richtlinien zur Zugriffskontrolle gibt es für viele Computersysteme. Diese Richtlinien zur Zugriffskontrolle sind Dateien, Verzeichnissen oder Ressourcen angehängt und regeln den Zugriff auf diese Dateien, Verzeichnisse und Hardware-Komponenten, gemeinsame Ressourcen, durch die Prinzipale des Computersystems, d. h. durch Personen, die das Computersystem und die auf dem Computersystem ausgeführten Anwendungen verwenden. Die Zugriffskontrolle umfasst die Authentifizierung und Autorisierung, und eines der Ziele der Zugriffskontrolle ist der Schutz der Integrität der Ressourcen, z. B. von Daten, auf die zugegriffen wird.
-
Ein Zugriffskontrollsystem verwendet Berechtigungen, um den Zugriff von Benutzern auf Ressourcen zu kontrollieren. Berechtigungen werden Benutzern zugeordnet. Die Ressourcen stellen Berechtigungsforderungen an die Benutzer. Wenn die Berechtigung von einem gegebenen Benutzer die geforderte Berechtigung erfüllt, erhält dieser Benutzer Zugriff auf diese Ressource. Das Zugriffskontrollsystem verwendet jedoch keine Richtlinien für den Informationsfluss und berücksichtigt nicht, wie die Informationen durch ein Computersystem fließen. Das Zugriffskontrollsystem kann vor allem nicht mehrere Handelnde oder mehrere Prinzipale in einem gegebenen Informationsfluss und für mehrere Informationsflüsse erfassen.
-
In einem komponentenbasierten System besteht das Problem nicht nur darin, wer den Code ausführt, sondern auch wer im Besitz des auszuführenden Codes ist, da die Bereitsteller von Codes auch am Informationsfluss beteiligte Prinzipale sind. Wenn ein Zugriff auf eine beschränkte Ressource versucht wird, können verschiedene Komponenten mit unterschiedlichen Vertrauensstufen beteiligt sein. Die Herausforderung besteht darin, zu prüfen, ob alle für diesen sicherheitsrelevanten Zugriff verantwortlichen Komponenten ausreichende Zugriffsrechte für diese Ressource haben.
-
Ein Lösungsversuch ist eine stapelbasierte Zugriffskontrolle (stack-based access control, SBAC). Mit Bezug auf 1 werden statische und dynamische Berechtigungen im Rahmen einer SBAC veranschaulicht. In einem Methodenaufrufstapel 110 wird jedem besitzenden Prinzipal in dem Stapel ein separater Satz von statischen Berechtigungen 120 gewährt. Diese statischen Berechtigungssätze können sich überlagern, und für jeden Prinzipal in dem Stapel wird eine dynamische Berechtigung 140 auf der Grundlage der Schnittmenge der statischen Berechtigungssätze für diesen Prinzipal und jeden anderen Prinzipal, der an höherer Stelle im Stapel ist, bestimmt. Der letzte Prinzipal im Stapel stellt daher die Schnittmenge aller statischen Berechtigungen 120 dar, und dies stellt die Gesamtberechtigung 160 für den Stapel dar.
-
Von der vertrauenswürdigen Anwendungsprogrammschnittstelle (application program interface, API), die für die Vermittlung des sicherheitsrelevanten Zugriffs in dem Computersystem zuständig ist, wird eine spezielle Testfunktion aufgerufen. Alle Aufrufer, d. h. Prinzipale, im aktuellen Ausführungsstapel werden auf ihre Berechtigung hin überprüft, und ein zusammengesetzter Prinzipal, dessen Zugriffsrechte die Schnittmenge des Satzes von Zugriffsrechten oder Berechtigungen aller Prinzipale in dem Stapel bilden, wird berechnet. Wie in 2 dargestellt beruht die Autorisierungsentscheidung im Rahmen der SBAC nur auf der aktuellen Folge 220 von verschachtelten Aufrufen. Andere Prinzipale, zum Beispiel Prinzipale in anderen Folgen 240 von verschachtelten Aufrufen, werden von der SBAC nicht berücksichtigt. Es werden keine anderen Interaktionen zwischen Software-Komponenten, einschließlich der Verwendung von Ergebnissen, die von einem nicht vertrauenswürdigen Code zurückgesendet werden, veränderlichem Zustand, Nebeneffekten und Gleichzeitigkeit, berücksichtigt. Ein gegebener Prinzipal 260 in einem anderen Stapel 240 kann zum Beispiel einem Prinzipal 280 im Stapel 220, der geprüft wird, den Namen der Datei 270 bereitstellen.
-
Die Berechtigungen, die diesem anderen Prinzipal 260 zugeordnet sind, sollten geprüft werden. Wie dargestellt weist dieser andere Prinzipal 260 einen leeren Berechtigungssatz auf, und dies bietet eine Möglichkeit für einen Angriff, der über den gerade geprüften Stapel 220 erfolgen kann. Die SBAC prüft jedoch die Berechtigungssätze, die Prinzipalen außerhalb des aktuellen Stapels zugeordnet sind, nicht und ist daher potenziell zu großzügig.
-
Die historienbasierte Zugriffskontrolle (history-based access control, HBAC) stellt einen restriktiveren Zugriffskontrollmechanismus bereit, der die Berechtigungen prüft, die jedem Prinzipal und jedem jemals ausgeführten Code zugeordnet sind. Die HBAC ist daher restriktiver als die SBAC und würde in dem in 2 veranschaulichten Beispiel den Zugriff auf der Grundlage der Beteiligung des anderen Prinzipals, der keinen zugeordneten Berechtigungssatz aufweist, verweigern. Bei der HBAC wird ein zusammengesetzter Prinzipal berechnet, der Zugriffsrechte hat, die die Schnittmenge der Zugriffsrechte aller Prinzipale darstellen, die im Besitz eines jemals ausgeführten Codes sind, unabhängig davon, ob dieser Code Einfluss auf die sicherheitsrelevante Operation hat, die unmittelbar durchgeführt wird.
-
Die HBAC mag zwar eine sichere Alternative zur SBAC sein, kann allerdings zu restriktiv sein. Wie in 3 dargestellt, für einen gegebenen Prinzipal 320 mit allen möglichen Berechtigungen bewirkt ein Prinzipal 340 außerhalb des Stapels von Interesse 360, der diesen Stapel noch nicht einmal beeinflusst, dass die HBAC einen gegebenen Aufruf von diesem Stapel ablehnt, wenn der Prinzipal 340 außerhalb des Stapels keinen Berechtigungssatz erhalten hat. Wie in 4 veranschaulicht kann sich die HBAC jedoch angesichts der Zeitvorgabe für die gegebene Anordnung der Prinzipale, die im Besitz des ausgeführten Codes sind, widersprüchlich verhalten. Für eine ähnliche Anordnung eines Prinzipals mit allen möglichen Berechtigungen 420, eines Aufrufstapels 460 und eines separaten Prinzipals mit einem leeren Satz an Berechtigungen 440 erlaubt die HBAC wie dargestellt den gewünschten Ressourcenzugriff von dem Aufrufstapel. Dies ist auf die Tatsache zurückzuführen, dass der von dem Prinzipal mit dem leeren Satz an Berechtigungen 440 ausgeführte Code nach dem Aufrufstapel ausgeführt wird. Dieses Verhalten führt zu widersprüchlichen Ergebnissen, da die gleiche sicherheitsrelevante Maßnahme in bestimmten Situationen erlaubt und in anderen Situationen ohne ersichtlichen Grund verboten zu sein scheint.
-
Mit Bezug auf 5 berücksichtigen beispielhafte Ausführungsformen von Systemen und Verfahren gemäß der vorliegenden Erfindung die Berechtigungen, die allen Prinzipalen zugeordnet sind, welche eine sicherheitsrelevante Operation beeinflussen. Dynamische Labels sind Werten und dem Programmschrittzähler beigefügt. Die Werte werden von Code-Komponenten erzeugt und stellen das Label oder den Berechtigungssatz dar, der diesem Wert zugeordnet ist. Ein gegebenes Label wird von den Berechtigungen abgeleitet, die der Code-Komponente, d. h. dem Prinzipal, zugeordnet sind, die diesen Wert sowie die Labels erzeugt hat, die allen Werten zugeordnet sind, die von der Code-Komponente zur Erzeugung dieses Werts verwendet wurde. In einer Ausführungsform sind die Berechtigungen oder ist das Label, die/das einem gegebenen Wert zugeordnet sind/ist, die Schnittmenge der Berechtigungen von den Eingabewerten und der Code-Komponente.
-
Die dynamische Stapelprüfung nimmt daher mit der Mitverfolgung des Informationsflusses zu, und Berechtigungen werden verwendet, um die Integrität im gesamten Informationsfluss darzustellen. Für einen gegebenen Aufrufstapel 510 wird ein Aufruf an das Testgrundelement 520 (test primitive) für eine gegebene sicherheitsrelevante Operation 530 bereitgestellt. Alle Berechtigungssätze, die allen Aufrufern oder Prinzipalen in dem Aufrufstapel 510 bis zum ersten zugeordnet sind, gewähren den Aufruf 540. Das Testgrundelement prüft darüber hinaus alle Labels, d. h. Berechtigungssätze, der Werte, die von den Prinzipalen sowohl innerhalb als auch außerhalb des Aufrufstapels 540, 550, 560 erhalten wurden, die in die sicherheitsrelevante Operation 530 gelesen werden, welche durch den Test 520 geschützt oder bewacht wird. Der Gesamtberechtigungssatz R ist als die Schnittmenge der Berechtigungssätze aller Prüfberechtigungssätze oder R ⊆ R1 ∩ R2 ∩...∩ Rk dargestellt.
-
Da Integritätsverwendungen bereits durch Aufrufe an den Zugriffskontrolldurchsetzer geschützt sind, verwenden die Systeme und Verfahren gemäß den beispielhaften Ausführungsformen der vorliegenden Erfindung eine bestehende Richtlinie zur Zugriffskontrolle und stellen die sicherheitsrelevanten Verwendungen fest, indem die Aufrufe an den Zugriffskontrolldurchsetzer ermittelt werden. Eine sicherheitsrelevante Maßnahme oder die Verwendung von sicherheitsrelevanten Informationen wird als eine Senke bezeichnet, und eine Quelle ist der Ort, an dem Informationen erzeugt werden oder in das Programm kommen. Nach der Feststellung der Senken wird die bestehende Richtlinie zur Zugriffskontrolle verwendet, um die angestrebte Informationsflussrichtlinie abzuleiten. In einer Ausführungsform wird eine sicherheitsrelevante Operation von einer Berechtigung p geschützt. Dabei handelt es sich um die Berechtigung, die die Ressource, auf die zugegriffen wird, von den Benutzern fordert. Ein Informationsfluss darf nur von Prinzipalen beeinflusst werden, denen mindestens die Berechtigung p gewährt wurde. Dies umfasst Prinzipale im aktuellen Aufrufstapel (wie bei der Stapelprüfung) und Prinzipale außerhalb des aktuellen Aufrufstapels.
-
Da der Zugriffskontrolldurchsetzer nur den aktuellen Ausführungsstapel berücksichtigt, erweitern beispielhafte Ausführungsformen von Systemen und Verfahren gemäß der vorliegenden Erfindung die Funktion des Zugriffskontrolldurchsetzers, indem alle datenabhängigen und kontrollabhängigen Einflüsse auf sicherheitsrelevante Operationen während der gesamten Ausführung des Codes und nicht nur im aktuellen Aufrufstapel ermittelt werden. Eine Verletzung wird immer dann gemeldet, wenn ein nicht ausreichend autorisierter Prinzipal eine sicherheitsrelevante Operation beeinflusst, da dies dazu führt, dass dem Schnittmengen-Berechtigungssatz die geforderte Berechtigung fehlt. In einer Ausführungsform können Kontrollabhängigkeiten optional ignoriert werden, da Angriffe über Kontrollabhängigkeiten gewöhnlich nicht einfach ausgenutzt werden können, und die Berücksichtigung von Kontrollabhängigkeiten kann zu einer großen Zahl an falschen positiven Zeichen führen, wenn die Durchsetzung statisch durchgeführt wird. Integritätsverletzungen werden gemeldet, wenn das Fehlen einer Berechtigung in dem Schnittmengen-Berechtigungssatz erkannt wird, der einem Subjekt gewährt wird, das die sicherheitsrelevante Operation beeinflusst.
-
In einer Ausführungsform werden sicherheitsrelevante Senken ermittelt, indem eine Programmanalyse durchgeführt und Aufrufe an den Zugriffskontrolldurchsetzer identifiziert werden. Die Richtlinie zur Zugriffskontrolle des Programms, die erklärend festgelegt ist und Prinzipale auf die sicherheitsrelevanten Operationen abbildet, die ihnen gewährt werden, wird abgerufen. Wenn während der Laufzeit ein Wert von einer Code-Komponente erzeugt wird, bilden die Berechtigungen, die dieser Code-Komponente gewährt werden, ein Label, das diesem Wert beigefügt wird. Wenn zwei oder mehr Werte zur Festlegung eines neuen Werts verwendet werden, wird von den Labels aller festlegenden Werte und dem Label der Komponente, die den neuen Wert festlegt, eine Schnittmenge gebildet, die möglich ist, da jedes Label ein Berechtigungssatz ist, und die Schnittmenge wird dem neuen Wert als Label beigefügt. Ähnliche Regeln gelten für die Erfassungskontrollabhängigkeit, bei der das Label des Werts, der eine bedingte Anweisung steuert, verwendet wird, um über die Schnittmenge das Label jedes Werts, der in dem von der bedingten Anweisung dominierten Code festgelegt ist, einzuschränken. Als Alternative ist eine statische Durchsetzung möglich, bei der Wertflüsse mit Hilfe von Program-Slicing mitverfolgt werden.
-
In einer beispielhaften Ausführungsform bezieht sich die vorliegende Erfindung auf ein Verfahren für die Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität in einem Computersystem. Die Schritte dieses Verfahrens können von einem Benutzer, Administrator, Programmierer oder Programmanalysten durchgeführt werden oder können von einem von mehreren Computern bzw. einer von mehreren Komponenten innerhalb oder außerhalb des Computersystems durchgeführt werden, auf dem die Anwendung ausgeführt wird. Zu geeigneten Computersystemen gehören verteilte und lokale Computersysteme, die eine Vielzahl von Komponenten enthalten, die über eines oder mehrere lokale Netzwerke und Weitverkehrsnetzwerke miteinander in Verbindung stehen. Anwendungen werden auf oder über einen oder mehrere Knoten, d. h. Computer oder Server, in dem Computersystem ausgeführt, und diese Anwendungen sind als Software-Code ausgedrückt. Da diese Anwendungen sicherheitsrelevante Aufrufe an Ressourcen in dem Computersystem oder durch das Computersystem gesteuert machen können, werden die Integrität der Anwendung und die Fähigkeit der Anwendung, eine Richtlinie zur Zugriffskontrolle in dem Computersystem zu erfüllen, bewertet.
-
Der Software-Code für eine Anwendung, die in dem Computersystem ausgeführt wird, wird analysiert, und sicherheitsrelevante Senken im Software-Code für die auf dem Computersystem ausgeführte Anwendung werden ermittelt. Die Ermittlung von sicherheitsrelevanten Senken erfolgt durch eine Programmanalyse des Software-Codes, vorzugsweise des gesamten Software-Codes. Diese Programmanalyse ist vorzugsweise eine statische Programmanalyse, die bei dem Software-Code und den zugrunde liegenden Bibliotheken durchgeführt wird, bevor das Programm ausgeführt wird. Der Software-Code wird analysiert, um festzustellen, wo Aufrufe an den Zugriffskontrolldurchsetzer im Computersystem eingefügt wurden. Der Zugriffskontrolldurchsetzer setzt Richtlinien zur Zugriffskontrolle in dem Computersystem durch und kann sich im Computersystem oder außerhalb des Computersystems befinden. Die Orte der Aufrufe an den Zugriffskontrolldurchsetzer werden als Senken bezeichnet.
-
Eine Richtlinie zur Zugriffskontrolle wird aus einer Datenbank abgerufen, auf die das Computersystem zugreifen kann. Diese Datenbank kann sich im Computersystem oder außerhalb des Computersystems befinden und eine Vielzahl von Richtlinien zur Zugriffskontrolle enthalten. Eine gegebene Richtlinie zur Zugriffskontrolle bildet einen Satz von Zugriffsberechtigungen in dem Computersystem auf jeden einer Vielzahl von Prinzipalen ab. Die Richtlinien zur Zugriffskontrolle sind getrennt vom Software-Code erklärend festgelegt, und jede Zugriffsberechtigung beinhaltet einen Satz von sicherheitsrelevanten Operationen in dem Computersystem, die keinem, einem oder mehreren Prinzipalen gewährt werden können. Ein Prinzipal ist eine Entität innerhalb oder außerhalb des Computersystems, die mit dem Computersystem interagiert. Die Identität der Prinzipale kann durch Authentifizierung geprüft werden, und dem Prinzipal werden durch den Autorisierungsprozess Privilegien gewährt. Zu diesen Prinzipalen gehören Benutzerprinzipale, z. B. eine Person, Maschinenprinzipale, z. B. eine Maschine mit einem Uniform Resource Locator (einheitlicher Quellenanzeiger), und Dienstprinzipale, z. B. ein ausführbares Programm.
-
Für jede ermittelte sicherheitsrelevante Senke werden alle Prinzipale, die diese sicherheitsrelevante Senke beeinflussen, identifiziert. Diese Prinzipale werden lokalisiert, unabhängig davon, ob sich die Prinzipale in einem gegebenen Stapel befinden. Jeder dieser Prinzipale verfügt über einen ihm zugeordneten Satz von Zugriffsberechtigungen. Jeder sicherheitsrelevanten Senke wird daher eine umfassende Zugriffsberechtigung zugeordnet, indem die Schnittmenge der Zugriffsberechtigungssätze für alle Einfluss nehmenden Prinzipale dieser sicherheitsrelevanten Senke gebildet wird. Diese umfassende Zugriffsberechtigung müsste alle erforderlichen Berechtigungen für jeden Ressourcenzugriff beinhalten, der von der sicherheitsrelevanten Senke im Computersystem versucht wird. Die Berechtigungen innerhalb der umfassenden Zugriffsberechtigung werden daher mit den Berechtigungen verglichen, die von dem Ressourcenzugriff durch die sicherheitsrelevante Senke gefordert werden, und eine Verletzung der Integrität wird gemeldet, wenn eine umfassende Zugriffsberechtigung für eine gegebene sicherheitsrelevante Senke nicht ausreicht, um eine von einer Ressource im Computersystem geforderte Berechtigung zu erfüllen.
-
Neben der Analyse des Software-Codes zum Identifizieren der umfassenden Zugriffsberechtigung für die sicherheitsrelevanten Senken analysieren beispielhafte Ausführungsformen der Verfahren gemäß der vorliegenden Erfindung ferner die Werte von Variablen an den sicherheitsrelevanten Senken und die Prinzipale, die diese Werte beeinflussen. Dies kann in Verbindung mit der Analyse der umfassenden Zugriffsberechtigungen der sicherheitsrelevanten Senken oder als ein separates, eigenständiges Verfahren für die Durchsetzung der Richtlinien zur Zugriffskontrolle und Integrität in einem Computersystem durchgeführt werden.
-
In einer Ausführungsform werden Variablen identifiziert, die in den sicherheitsrelevanten Senken verwendet werden. Jede Variable weist einen Wert auf, der von einem oder mehreren Prinzipalen beeinflusst werden kann. Jedem Wert einer jeden Variablen wird ein Berechtigungslabel zugeordnet. Jedes Berechtigungslabel ist ein Berechtigungssatz, der diesem Wert gewährt wird. Wenn sich der Wert ändert, ändert sich daher auch das Berechtigungslabel. Die Auswertung der Variablenwerte und die Zuordnung der Berechtigungslabel erfolgen während der Laufzeit des Software-Codes für die auf dem Computersystem ausgeführte Anwendung. Da die Werte der Variablen von verschiedenen Prinzipalen beeinflusst werden können, wird der Berechtigungssatz jedes Berechtigungslabels von den Berechtigungssätzen abgeleitet, die auf die Prinzipale abgebildet sind, welche den Wert beeinflussen, der diesem Berechtigungslabel zugeordnet ist.
-
Während der Laufzeit können sich die Werte ändern. Zwei oder mehr Werte können von einem Prinzipal zusammengefasst werden, um einen neuen Wert zu erzeugen. ”Guten” und ”Morgen” kann zum Beispiel zusammengefasst werden, um ”Guten Morgen” zu bilden oder ein Name kann mit einer Domain verknüpft werden, um eine E-Mail-Adresse zu bilden. Da die Berechtigungslabels wertbezogen sind, wird dem neuen Wert ein neues Berechtigungslabel zugeordnet. In einer Ausführungsform wird ein neuer Wert ermittelt, der von zwei oder mehr bestehenden Werten erzeugt wurde. Für den neuen Wert wird unter Verwendung der Schnittmenge der Berechtigungssätze, die jedem Wert zugeordnet sind, der für das Erzeugen des neuen Werts verwendet wird, und des Prinzipals, der den neuen Wert festlegt, ein Berechtigungslabel berechnet.
-
Anwendungs-Software-Codes verwenden häufig bedingte Anweisungen, z. B. Wenn-dann-sonst-Anweisungen. Dies wird allgemein als Erfassungskontrollabhängigkeit bezeichnet. Diese Anweisungen verwenden Werte in der bedingten Anweisung und in dem von der bedingten Anweisung dominierten Code. Diesen Werten können gemäß der vorliegenden Erfindung Berechtigungslabels zugeordnet sein. In einer Ausführungsform wird das Berechtigungslabel für jeden Wert verwendet, der eine bedingte Anweisung steuert, um Berechtigungslabels für jeden Wert einzuschränken, der in dem von der bedingten Anweisung dominierten Software-Code festgelegt ist. Die Berechtigungen, die dem Wert zugeordnet sind, der die bedingte Anweisung steuert, werden daher für die anderen Werte in der bedingten Anweisung verwendet. Ein statischer Durchsetzungsmechanismus kann zusätzlich zu seiner Ausführung während der Laufzeit verwendet werden, um die Berechtigungslabels zu erzeugen, wenn Wertflüsse mit Hilfe von Program-Slicing mitverfolgt werden.
-
Verfahren und Systeme gemäß beispielhafter Ausführungsformen der vorliegenden Erfindung können die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung oder eine Ausführungsform haben, bei der Hardware- und Software-Elemente enthalten sind. In einer bevorzugten Ausführungsform ist die Erfindung als Software umgesetzt, die Firmware, residente Software und Microcode enthält, ohne jedoch darauf beschränkt zu sein. Beispielhafte Verfahren und Systeme können darüber hinaus die Form eines Computerprogrammprodukts haben, auf das von einem computerverwendbaren oder computerlesbaren Datenträger zugegriffen werden kann, der Programmcode für die Verwendung durch oder in Verbindung mit einem Computer, einer Zentraleinheit oder einem System zum Ausführung von Befehlen bereitstellt. Zum Zwecke dieser Beschreibung kann ein computerverwendbarer oder computerlesbarer Datenträger eine beliebige Vorrichtung sein, die das Programm für die Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Befehlen enthalten, speichern, übertragen, verbreiten oder transportieren kann. Geeignete computerverwendbare oder computerlesbare Datenträger umfassen elektronische, magnetische, optische, elektromagnetische, Infrarot- oder Halbleitersysteme (oder Vorrichtungen oder Einheiten) oder Verbreitungsdatenträger, ohne darauf beschränkt zu sein. Zu Beispielen für einen computerlesbaren Datenträger gehören ein Halbleiter- oder ein Festkörperspeicher, ein Magnetband, eine herausnehmbare Computerdiskette, ein Schreib-Lese-Speicher (RAM), ein Nur-Lese-Speicher (ROM), eine starre Magnetplatte und eine optische Platte. Zu den aktuellen Beispielen für optische Platten gehören ein Kompaktdiskette-Nur-Lese-Speicher (CD-ROM), eine wiederbeschreibbare Kompaktdiskette (CD-R/W) und DVD.
-
Zu geeigneten Datenverarbeitungssystemen zum Speichern und/oder Ausführen von Programmcode gehört mindestens ein Prozessor, der direkt oder indirekt über einen Systembus mit Speicherelementen verbunden ist, ohne darauf beschränkt zu sein. Zu den Speicherelementen gehören ein lokaler Speicher, der während der eigentlichen Ausführung des Programmcodes verwendet wird, ein Massenspeicher und Cache-Speicher, die ein vorübergehendes Speichern von mindestens einem Teil des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Eingabe/Ausgabe- oder E/A-Einheiten, einschließlich Tastaturen, Anzeigen und Zeigegeräte, ohne darauf beschränkt zu sein, können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System verbunden sein. Zu beispielhaften Ausführungsformen der Verfahren und Systeme gemäß der vorliegenden Erfindung gehören ferner Netzwerkadapter, die mit dem System verbunden sind, um es dem Datenverarbeitungssystem zu ermöglichen, mit anderen Datenverarbeitungssystemen oder rechnerfernen Druckern oder Speichereinheiten über zwischengeschaltete private oder öffentliche Netzwerke verbunden zu werden. Zu den gegenwärtig erhältlichen Arten von Netzwerkadaptern gehören Modems, Kabelmodems, DSL-Modems, Ethernet-Karten und Kombinationen davon, ohne darauf beschränkt zu sein.
-
In einer Ausführungsform bezieht sich die vorliegende Erfindung auf einen maschinenlesbaren oder computerlesbaren Datenträger, der einen von einer Maschine oder einem Computer ausführbaren Code enthält, der, wenn er von einer Maschine oder einem Computer gelesen wird, die Maschine oder den Computer veranlasst, eine Durchsetzung von Richtlinien zur Zugriffskontrolle und Integrität in einem Computersystem gemäß beispielhafter Ausführungsformen der vorliegenden Erfindung durchzuführen, sowie auf den von einem Computer ausführbaren Code selbst. Bei dem maschinenlesbaren oder computerlesbaren Code kann es sich um jede Art von Code oder Sprache handeln, der bzw. die von der Maschine oder dem Computer gelesen und ausgeführt werden kann und der bzw. die in jeder geeigneten, in der Technik bekannten und erhältlichen Sprache oder Syntax ausgedrückt werden kann, einschließlich Maschinensprachen, Assemblersprachen, höhere Programmiersprachen, objektorientierte Sprachen und Skriptsprachen. Der von einem Computer ausführbare Code kann auf jedem geeigneten Speichermedium oder in jeder geeigneten Datenbank gespeichert werden, einschließlich Datenbanken, die in Computernetzwerken angeordnet sind, in Verbindung mit solchen Computernetzwerken stehen und auf die von solchen Computernetzwerken zugegriffen werden kann, die von Systemen gemäß der vorliegenden Erfindung verwendet werden, und kann auf jeder geeigneten, in der Technik bekannten und erhältlichen Hardware-Plattform ausgeführt werden, einschließlich die Steuersysteme, die zur Steuerung der Darstellungen der vorliegenden Erfindung verwendet werden.
-
Während es zwar offensichtlich ist, dass die veranschaulichenden Ausführungsformen der hierin offenbarten Erfindung die Zielsetzungen der Erfindung erfüllen, ist ersichtlich, dass zahlreiche Änderungen und andere Ausführungsformen von Fachleuten erdacht werden können. Des Weiteren können Merkmal(e) und/oder Element(e) von einer beliebigen Ausführungsform allein oder in Kombination mit anderen Ausführungsformen verwendet werden, und Schritte oder Elemente von Verfahren gemäß der vorliegenden Erfindung können in jeder geeigneten Reihenfolge ausgeführt oder durchgeführt werden. Es ist daher offensichtlich, dass die beigefügten Ansprüche alle Änderungen und Ausführungsformen abdecken sollen, die unter den Sinngehalt und den Anwendungsbereich der vorliegenden Erfindung fallen.