Sandkasten (Computersicherheit)

Eine Sandbox ist eine isolierte Testumgebung, die es Benutzern ermöglicht, Programme auszuführen oder Dateien auszuführen, ohne die Anwendung, das System oder die Plattform, auf der sie ausgeführt werden, zu beeinträchtigen. Softwareentwickler verwenden Sandboxen, um neuen Programmiercode zu testen. Cybersicherheitsexperten verwenden Sandboxen, um potenziell schädliche Software zu testen. Ohne Sandboxing könnte eine Anwendung oder ein anderer Systemprozess uneingeschränkten Zugriff auf alle Benutzerdaten und Systemressourcen in einem Netzwerk haben.

Sandboxen werden auch verwendet, um bösartigen Code sicher auszuführen, um das Gerät, auf dem der Code ausgeführt wird, das Netzwerk oder andere verbundene Geräte nicht zu beschädigen. Die Verwendung einer Sandkiste zur Erkennung von Malware bietet eine zusätzliche Schutzebene gegen Sicherheitsbedrohungen, wie z.B. heimliche Angriffe und Exploits, die Zero-Day-Schwachstellen nutzen.

Bedeutung von Sandkästen

Mit zunehmender Verfeinerung der Malware wird die Überwachung verdächtigen Verhaltens zur Erkennung von Malware immer schwieriger. Viele Bedrohungen in den letzten Jahren haben fortschrittliche Verschleierungstechniken eingesetzt, die die Erkennung von Endpunkt- und Netzwerksicherheitsprodukten umgehen können. Was ist eine Sandbox?

Sandboxing schützt die kritische Infrastruktur eines Unternehmens vor verdächtigem Code, da sie in einem separaten System ausgeführt wird. Darüber hinaus kann die IT-Abteilung bösartigen Code in einer isolierten Testumgebung testen, um zu verstehen, wie er innerhalb eines Systems funktioniert, und ähnliche Malware-Angriffe schneller erkennen.

Verwendung von Sandkästen

Im Allgemeinen wird eine Sandbox verwendet, um verdächtige Programme zu testen, die Viren oder andere Malware enthalten können, ohne dass die Software die Hostgeräte schädigen kann.

Sandboxing ist ein wichtiges Merkmal der Java-Programmiersprache und -Entwicklungsumgebung, in der die Sandbox ein Programmbereich und ein Satz von Regeln ist, die Programmierer verwenden müssen, wenn sie Java-Code (genannt Applet) erstellen, der als Teil einer Webseite gesendet wird.

Eine Sandbox kann auch eine gespiegelte Produktionsumgebung ermöglichen, mit der ein externer Entwickler eine Anwendung entwickeln kann, die einen Webservice aus der Sandbox nutzt. Auf diese Weise können Drittanbieter ihren Code validieren, bevor er in die Produktionsumgebung migriert wird.

Eine API-Sandbox richtet sich an API-Entwickler und -Tester. Es imitiert die Eigenschaften der Produktionsumgebung, um simulierte Reaktionen für APIs zu erstellen, die das Verhalten eines realen Systems widerspiegeln.

Java Sandboxing

Java-Applets werden im Rahmen der Webseitenübertragung automatisch an den Browser des Benutzers gesendet und können sofort nach ihrer Ankunft im Browser ausgeführt werden. Ohne weiteren Schutz könnte der bösartige Code uneingeschränkt ausgeführt werden und leicht Schaden anrichten; die Verwendung einer Sandkiste zur Isolierung des Codes kann sowohl vor bösartigen Angriffen als auch vor Schäden durch fehlerhafte Java-Programme mit unbegrenztem Zugriff auf Speicher- oder Betriebssystemdienste schützen. Die Einschränkungen der Sandbox schränken die Systemressourcen, die ein Applet anfordern oder darauf zugreifen kann, streng ein.

Die Java-Sandbox umfasst den Programmbereich und eine Reihe von Regeln, die Programmierer verwenden müssen, um Java-Code zu erstellen, der mit Webinhalten gesendet wird. Die Sandbox-Einschränkungen setzen strenge Grenzen für die Systemressourcen, die das Applet anfordern oder darauf zugreifen kann. Im Wesentlichen muss der Programmierer Code schreiben, der nur innerhalb der Sandbox „spielt“, so wie Kinder alles machen dürfen, was sie wollen, innerhalb der engen Grenzen einer echten Sandbox. Der Sandkasten kann als ein kleiner Bereich innerhalb Ihres Computers konzipiert werden, in dem der Code eines Applets frei spielen kann – aber es ist nicht erlaubt, irgendwo anders zu spielen.

Die Sandbox wird nicht nur dadurch implementiert, dass Programmierer bestimmte Regeln einhalten müssen, sondern auch durch die Bereitstellung von Codecheckern. Die Java-Sprache selbst bietet Funktionen wie automatisches Speichermanagement, Garbage Collection und die Überprüfung von Adressbereichen in Zeichenketten und Arrays, die von Natur aus dazu beitragen, sicheren Code zu gewährleisten.

Der kompilierte Code von Java, der als Bytecode bezeichnet wird, enthält einen Verifier, der die Einhaltung bestimmter Einschränkungen garantiert. Java stellt auch einen lokalen Namensraum zur Verfügung, innerhalb dessen Code eingeschränkt werden kann. Die Java Virtual Machine (die Schicht, die den Java-Bytecode für eine bestimmte Computerplattform interpretiert) vermittelt auch den Zugriff auf Syst

Im ursprünglichen Sandbox-Sicherheitsmodell ist der Sandbox-Code allgemein als nicht vertrauenswürdiger Code bekannt. In späteren Versionen des Java Development Kit (JDK) – der Entwicklungsumgebung des Programmierers – wurde die Sandbox durch die Einführung mehrerer Vertrauensstufen, die der Benutzer für den Sandbox-Code angeben kann, verfeinert. Je mehr Vertrauen der Benutzer erlaubt, desto mehr Fähigkeit hat der Code, außerhalb des Sandkastens zu „spielen“. In der Version Java Development Kit 1.1 wurde das Konzept eines signierten Applets eingeführt. Ein Applet, das von einer digitalen Signatur begleitet wird, kann vertrauenswürdigen Code enthalten, der ausgeführt werden darf, wenn der Client-Browser die Signatur erkennt.

In JDK 2.0 bietet Java die Möglichkeit, allen Anwendungscodes, unabhängig davon, ob sie lokal geladen oder aus dem Internet kommen, unterschiedliche Vertrauensstufen zuzuweisen. Es gibt einen Mechanismus zur Definition einer Sicherheitsrichtlinie, die den gesamten Code – ob signiert oder nicht – während der Ausführung überprüft.

Vorteile der Verwendung eines Sandkastens

Die Verwendung einer Sandbox zum Testen von Softwareänderungen vor der Inbetriebnahme bedeutet, dass es während und nach dem Testen weniger Probleme gibt, da die Testumgebung vollständig von der Produktionsumgebung getrennt ist.

Sandboxing eignet sich auch hervorragend für die Quarantäne von Zero-Day-Bedrohungen, die nicht gemeldete Schwachstellen ausnutzen. Obwohl es keine Garantie dafür gibt, dass Sandboxing Zero-Day-Bedrohungen stoppt, bietet es eine zusätzliche Sicherheitsebene, indem es die Bedrohungen vom Rest des Netzwerks trennt. Wenn Bedrohungen und Viren in Quarantäne gestellt werden, können Cybersicherheitsexperten sie untersuchen, um Muster zu identifizieren und so zukünftige Angriffe zu verhindern und andere Schwachstellen im Netzwerk zu identifizieren.

Sandboxing ergänzt auch andere Sicherheitsprogramme, einschließlich Verhaltensüberwachung und Virenprogramme. Es bietet zusätzlichen Schutz vor bestimmten Malware-Stämmen, die ein Antivirenprogramm möglicherweise nicht erkennt.

Beispiele für die Verwendung eines Sandkastens

Sandboxen können verwendet werden, um die Ausführung von Code in fast jeder Situation zu isolieren, in der Softwarecode ausgeführt wird. Einige konkrete Beispiele für die Verwendung einer Sandbox zur Isolierung der Codeausführung sind:

-Webbrowser: Ein vertrauenswürdiger Webbrowser kann in einer Sandkiste ausgeführt werden. Wenn eine Website dann eine Schwachstelle in diesem Webbrowser ausnutzt, wird der Schaden auf den Sandkasten begrenzt und minimiert.

-Softwareschutz: Es gibt Tools, mit denen Benutzer Software ausführen können, der sie nicht in Sandkästen vertrauen, so dass die Software nicht auf ihre privaten Daten zugreifen oder ihre Geräte beschädigen kann. Da eine Sandkiste für die Software ein komplettes System zu sein scheint, kann die Software normalerweise nicht erkennen, dass sie auf eine virtuelle Umgebung beschränkt ist.

-Sicherheitsforschung: Informationssicherheitsexperten verwenden Sandboxen für Recherchen oder zur Erkennung von bösartigem Code. So könnte beispielsweise ein Sicherheitstool Websites besuchen, um zu überwachen, welche Dateien letztendlich geändert werden, oder es könnte Software installieren und ausführen.

-Virtualisierung: Eine virtuelle Maschine ist im Grunde genommen eine Art Sandkasten. Dieser Ansatz verwendet eine virtuelle maschinenbasierte Sandkiste, um verdächtige Programme einzudämmen und zu untersuchen.

Sandbox-Anwendungen

Sandbox-Anwendungen umfassen:

Browser-Plugin-Inhalte hingen oft davon ab, eine Sandkiste zu verwenden, um Inhalte anzuzeigen, die von Browser-Plugins geladen wurden, einschließlich Microsoft Silverlight und Adobe Flash. Diese Art von Inhalten war jedoch bekanntlich schwer zu schützen. Obwohl es sicherer war, ein Flash-Spiel auf einer Webseite zu spielen, als das Spiel herunterzuladen und als Standardprogramm auszuführen, haben sich die Content-Publisher weitgehend von solchen Plug-Ins entfernt, um aktive Inhalte mit HTML5 zu veröffentlichen – einschließlich des Sandbox-Attributs, das den Browser anweist, alle Funktionen zu deaktivieren, die Sicherheitsrisiken darstellen können.

PDFs und andere Dokumente können ausführbaren Code enthalten, so dass Adobe Reader PDF-Dateien in einer Sandbox ausführt, die verhindert, dass sie aus dem PDF-Viewer entweichen und den Rest des Computers stören. Microsoft Office verfügt auch über einen Sandbox-Modus, um zu verhindern, dass unsichere Makros ein System manipulieren.

-Mobile Apps werden in der Regel von mobilen Plattformen in Sandboxen ausgeführt. Apps für iOS, Android und Windows dürfen nicht viele Dinge tun, die Standard-Desktop-Anwendungen können. Um beispielsweise auf den Speicherort eines Benutzers zuzugreifen, müssen sie Berechtigungen deklarieren. Darüber hinaus isoliert die Sandbox die Anwendungen und verhindert, dass sie sich gegenseitig manipulieren.