Sandbox
Eine Sandbox ist eine isolierte Testumgebung, in der Benutzer Programme ausführen oder Dateien öffnen, ohne dass sie das System oder die Plattform kompromittieren können.
Softwareentwickler verwenden Sandboxes, um neuen Code zu testen, während Sicherheitsexperten in ihnen verdächtige Programme und Dateien auf Schadsoftware prüfen. Ohne Sandbox erhalten Software oder Anwendungen unter Umständen unbegrenzten Zugriff auf alle Benutzerdaten und Systemressourcen in einem Netzwerk. Das kann schnell gefährlich werden.
Sandboxes dienen oft dazu, Malware sicher auszuführen, um mögliche Schäden am Hostgerät, dem Netzwerk oder anderen verbundenen Geräten zu identifizieren. Das bietet eine zusätzliche Schutzebene vor Sicherheitsbedrohungen wie heimlichen Angriffen und Exploits, die Zero-Day-Schwachstellen ausnutzen.
Bedeutung von Sandboxes
Malware wird immer ausgefeilter, was die Überwachung der Infrastruktur hinsichtlich verdächtiger Vorgänge erschwert. Viele Hacker haben in den letzten Jahren fortschrittliche Verschleierungstechniken entwickelt, die sie vor den Erkennungsmechanismen in Endpunkt- und Netzwerksicherheitsprodukte verstecken.
Die Sandbox isoliert nicht nur potentiell gefährliche Anwendungen vor der kritischen Infrastruktur eines Unternehmens, sie ermöglicht es Entwicklern auch, Code in einer isolierten Testumgebung zu beobachten, um zu verstehen, wie er funktioniert und Auswirkungen von Malware besser einzuschätzen.
Sandboxes verwenden
Sandbox ist auch der Name für eine Funktion von Java. Hier ist die Sandbox ein Programmbereich und beschreibt eine Reihe von Regeln, die Programmierer beim Erstellen von Java-Code, der als Teil einer Webseite gesendet wird, einhalten müssen.
In einer Sandbox lässt sich auch die Produktionsumgebung spiegeln, damit die darin entwickelte Anwendung auf die Webservices aus der Sandbox zugreifen kann. Drittentwickler validieren damit ihren Code, bevor sie ihn in die Produktionsumgebung migrieren.
Eine API-Sandbox richtet sich an API-Entwickler und -Tester. Sie simuliert zu Testzwecken die Antworten, die APIs in der Produktionsumgebung geben würden.
Java-Sandboxing
Java-Applets werden im Rahmen der Übertragung einer Webseite automatisch an den Browser des Benutzers gesendet. Ohne weiteren Schutz kann es somit dazu kommen, dass Schadcode uneingeschränkt ausgeführt wird und Schaden anrichtet. Mit einer Sandbox lässt sich das verhindern – vor allem, dass fehlerhafte Java-Programme mit unbegrenztem Zugriff auf Speicher- oder Betriebssystemdienste (OS) Schaden anrichten. Die Sandbox-Einschränkungen legen fest, welche Systemressourcen ein Applet anfordern darf.
Programmierer schreiben einen Code, der nur innerhalb der Sandbox spielt, so wie Kinder nur innerhalb des Sandkastens spielen.
Die Arbeit in einer Sandbox bedeutet nicht nur, dass Programmierer bestimmte Regeln einhalten müssen, sondern auch, dass sie Mechanismen für die Codeprüfung einrichten müssen. Die Java selbst bietet Funktionen wie automatisches Speichermanagement, Garbage Collection und das Überprüfen von Adressbereichen in Strings und Arrays, was dazu beiträgt, sicheren Code zu gewährleisten.
Der kompilierte Code von Java, bekannt als Bytecode, enthält einen Prüfer, der bestimmte Einschränkungen durchsetzt. Java stellt einen lokalen Namensraum bereit, innerhalb dessen Code bestimmten Auflagen unterliegt. Die Java Virtual Machine – eine Schicht, die den Java-Bytecode für eine bestimmte Computerplattform interpretiert – vermittelt auch den Zugriff auf Systemressourcen und schränkt Sandbox-Code ein.
Im ursprünglichen Sandbox-Sicherheitsmodell wird der Sandbox-Code allgemein als nicht vertrauenswürdiger Code bezeichnet. In späteren Versionen des Java Development Kit (JDK) wurde die Sandbox um mehrere Vertrauensebenen, die der Benutzer für den Sandbox-Code festlegen kann, erweitert. Je mehr Vertrauen der Benutzer zulässt, desto mehr Möglichkeiten hat der Code, außerhalb der Sandbox zu spielen.
Die Version 1.1 hat das Konzept eines signierten Applets eingeführt. Der Client-Browser führt das Applet nur aus, wenn er die Signatur des Applets erkennt.
Seit JDK 2.0 ermöglicht Java die Zuweisung unterschiedlicher Vertrauensebenen für den gesamten Anwendungscode, unabhängig davon, ob er lokal geladen wird oder aus dem Internet kommt. Es gibt einen Mechanismus zum Definieren von Sicherheitsrichtlinien, der den gesamten Code – ob signiert oder nicht – während der Ausführung überprüft.
Vorteile von Sandboxes
Der Einsatz einer Sandbox bedeutet weniger Probleme während und nach dem Testen, da die Testumgebung vollständig von der Produktionsumgebung getrennt ist.
Es eignet sich auch hervorragend zum Isolieren von Zero-Day-Exploits. Obwohl es keine Garantie dafür gibt, dass Sandboxing solche Bedrohungen stoppt, bietet es eine zusätzliche Sicherheitsebene, indem es die Bedrohungen vom Rest des Netzwerks trennt. Wenn IT-Profis Bedrohungen und Viren unter Quarantäne stellen, können sie diese untersuchen, um Muster zu identifizieren, die dazu beitragen, zukünftige Angriffe zu verhindern und andere Netzwerkschwachstellen zu identifizieren.
Sandboxing bestehende Sicherheitsprogramme, wie die Verhaltensüberwachung und Virenprogramme. Es bietet zusätzlichen Schutz vor bestimmten Arten von Malware, die ein Antivirenprogramm möglicherweise nicht findet. Fortgeschrittenere Malware ist jedoch teilweise in der Lage zu erkennen, ob sie in einer Sandbox ausgeführt wird.
Einsatzszenarien für Sandboxes
Sandboxes können Code beim Ausführen in fast jeder Situation isolieren. Einige spezifische Beispiel, in denen das oft vorkommt sind:
Internetbrowser. Ein vertrauenswürdiger Webbrowser kann in einer Sandbox laufen. Wenn dann eine Website eine Schwachstelle in diesem Webbrowser ausnutzt, ist der dadurch entstehende Schaden auf die Sandbox begrenzt.
Schutz vor Schadsoftware. Es gibt Tools, die es Benutzern ermöglichen, Software in Sandboxes auszuführen, sodass die Software nicht auf ihre privaten Daten zugreifen oder ihre Geräte beschädigen kann. Da eine Sandbox für die Software wie ein vollständiges System aussieht, erkennt sie normalerweise nicht, dass sie auf eine virtuelle Umgebung beschränkt ist.
Sicherheitsforschung. IT-Sicherheitsexperten verwenden Sandboxes für Recherchen oder zum Aufspüren von bösartigem Code. So können Sie von einer Sandbox aus verdächtige Webseiten besuchen, um zu sehen, wie sie sich verhalten, oder sie können darin fragwürdige Software installieren. Windows Defender kann beispielsweise in einer Sandbox laufen.
Virtualisierung. Eine virtuelle Maschine ist im Grunde eine Art Sandbox. Dieser Ansatz verwendet eine VM-basierte Sandbox, um verdächtige Programme einzudämmen und zu untersuchen.
Typische Sandbox-Anwendungen
Zu den Sandbox-Anwendungen gehören:
Der Inhalt von Browser-Plug-ins hing früher häufig von der Verwendung einer Sandbox ab. Dort wurden Inhalte geprüft, die von Browser-Plug-ins geladen wurden. So funktionierten beispielsweise Microsoft Silverlight und Adobe Flash. Es ist jedoch notorisch schwierig, solche Inhalte aufzubewahren. Inzwischen haben sich Content-Publisher weitgehend von solchen Plug-Ins verabschiedet und veröffentlichen stattdessen aktive Inhalte mit HTML5, welches das Sandbox-Attribut mit Anweisungen enthält, die alle Funktionen deaktivieren, welche Sicherheitsrisiken bergen.
PDFs und andere Dokumente können ausführbaren Code enthalten. Der geschützte Modus von Adobe Reader führt PDFs in einer Sandbox aus und hindert sie daran, den Rest des Computers zu gefährden. Microsoft Office verfügt auch über einen Sandbox-Modus, um zu verhindern, dass unsichere Makros ein System manipulieren. Windows-Benutzer haben außerdem die Möglickeit, die integrierte Windows-Sandbox zu verwenden.
Mobile Apps werden laufen in aller Regel in Sandboxes. Apps für iOS, Android und Windows haben weniger Befugnisse als Desktop-Apps. Um beispielsweise auf den Standort eines Benutzers zuzugreifen, müssen diese Berechtigungen deklarieren. Darüber hinaus isoliert die Sandbox die Anwendungen und verhindert, dass sie sich gegenseitig manipulieren.