Definition

Im Cybersecurity-Umfeld ist eine Sandbox-Umgebung eine isolierte virtuelle Maschine, in der potenziell unsicherer Softwarecode ausgeführt werden kann, ohne Netzwerkressourcen oder lokale Anwendungen zu beeinträchtigen.

Cybersecurity-Forscher nutzen die Sandbox („Sandkasten“), um verdächtigen Code aus unbekannten Anhängen und URLs auszuführen und sein Verhalten zu beobachten. Zu den Warnsignalen gehört, ob ein Code sich selbst repliziert, versucht, einen Command-and-Control-Server zu kontaktieren, zusätzliche Software herunterlädt, sensible Daten verschlüsselt usw. Da es sich bei der Sandbox um eine emulierte Umgebung ohne Zugriff auf das Netzwerk, Daten oder andere Anwendungen handelt, können Sicherheitsteams den Code gefahrlos „zünden“, um festzustellen, wie er funktioniert und ob er bösartig ist.

Auch jenseits der Sandbox in der Computer Security verwenden Entwickler Sandbox-Testumgebungen, um einen Code vor seinem breiten Einsatz zu testen.

Wozu dient eine Sandbox?

In Standard-Produktionsumgebungen von Unternehmen könnte so eine Sandbox missverstanden oder gar als unnötige Ausgabe betrachtet werden. Aber Sandboxen sind für verschiedene Szenarien in Entwicklung, Cybersicherheit und Forschung unerlässlich. Dabei ist die Gewährleistung, dass die Sandbox wirklich isoliert und sicher ist, in der Cybersicherheitsforschung wichtiger als in der Softwareentwicklung, da z. B. Malware im Netzwerk aktiv und aggressiv nach ausnutzbaren Schwachstellen scannt.

Einsatz in der Entwicklung

In der Entwicklung umfasst eine Sandbox normalerweise einen Entwicklungsserver und einen Bereitstellungsserver (Staging Server). Der Entwicklungsserver ist von der Produktionsumgebung getrennt, kann aber dennoch einen einfachen Netzwerkzugang notwendig machen. Entwickler verwenden diesen Server, um Code hochzuladen und zu testen, wenn sich die Codebasis ändert.

Der Bereitstellungsserver ist so konzipiert, dass er eine exakte Nachbildung der Produktion ist. Auf diesem Server testet die Qualitätssicherung (QA) den Code, bevor er in der Produktion eingesetzt wird. Da die Bereitstellungsumgebung mit der Produktionsumgebung identisch ist, sollte Code, der in der Bereitstellungsumgebung ohne Probleme läuft, auch in der Produktionsumgebung ohne Probleme laufen. Nachdem der Code getestet wurde, wird er in der Produktion eingesetzt.

Einsatz in der Cybersecurity-Forschung

Cybersecurity-Forscher und -Analysten nutzen ihre Sandbox-Umgebung auf ähnliche Weise. Aber in diesem Fall ist es viel wichtiger, sicherzustellen, dass keine Netzwerkressourcen für Malware verfügbar sind. Die Sandbox-Umgebung hat ein eigenes Netzwerk und oft keine physische Verbindung zu den Produktionsressourcen. Der Zweck der Sandbox ist es, bösartigen Code auszuführen und diesen zu analysieren. Unter Umständen könnte es sich bei diesem Code um einen Zero-Day-Exploit handeln, bei dem die Wirkung und die Nutzlast der Malware unbekannt sind. Deshalb darf die Sandbox keinen Zugriff auf kritische Infrastrukturen haben.

Mit einer Sandbox können Cybersecurity-Forscher und -Analysten die Funktionsweise von Malware verstehen und herausfinden, was man dagegen tun kann. Das ist der erste Schritt bei der Entwicklung von Antiviren-Software, um die Ausbreitung von Malware auf andere Systeme zu verhindern und sie von bereits infizierten Systemen zu entfernen.

Für komplexe Angriffe stehen Sandbox-Umgebungen bereit, um Malware schnell zu analysieren und sie zu stoppen, bevor sie zu einem globalen Problem wird. Ransomware zum Beispiel kann sich global ausbreiten und kritische Regierungssysteme zum Absturz bringen. Deshalb ist es wichtig, dass die Forscher über einsatzbereite Sandboxen verfügen, um dies zu verhindern.

Wie funktioniert eine Sandbox?

Die genaue Funktionsweise einer Sandbox hängt davon ab, was getestet werden soll. So ist eine Sandbox-Umgebung zum Testen von Malware anders aufgebaut und funktioniert anders als eine Sandbox, die zum Testen von Code für Anwendungsupdates gedacht ist. Für die Erforschung von potenzieller Malware und die Ausführung von bösartigem Code muss eine Sandbox von der Produktionssoftware isoliert werden.

Unabhängig davon, wie eine Sandbox verwendet wird, hat jede Umgebung ein paar grundlegende Eigenschaften:

  • Emulation eines physischen Geräts. Dies kann die Emulation eines Desktop- oder Mobilgeräts sein. In beiden Fällen muss die zu testende Anwendung Zugriff auf die gleichen Ressourcen wie der zu analysierende Code haben, einschließlich CPU, Arbeits- und Massenspeicher.
  • Emulation des Zielbetriebssystems. Bei Verwendung einer virtuellen Maschine muss die Anwendung Zugriff auf das Betriebssystem haben. Bei einer virtuellen Maschine ist die Sandbox von der zugrunde liegenden physischen Hardware isoliert, hat aber Zugriff auf das installierte Betriebssystem.
  • Virtualisierte Umgebung. Normalerweise befindet sich eine Sandbox auf einer virtuellen Maschine, sodass sie keinen Zugriff auf physische Ressourcen hat, aber auf virtualisierte Hardware zugreifen kann.

Virtualisierung und Emulation sind jedoch keine Patentrezepte. Einige Malware-Entwickler entwerfen Code, der unter dem Radar von Sicherheitsforschern bleibt, sobald er merkt, dass er in einer Sandbox läuft.

Zu den Maßnahmen zur Sandbox-Erkennung kann die Suche nach Benutzerinteraktionen gehören, die nicht mit der realen Nutzung übereinstimmen. Andere könnten die Systemeinstellungen lesen, um nach gängigen Systemkonfigurationen der virtuellen Maschine zu suchen. In diesen Fällen schlummert die Malware, damit sie nicht als bösartig erkannt wird, und wird erst aktiviert, wenn sie ein reales Ziel erreicht.

In einigen Fällen kann der Verfasser der Malware sogar Exploits erstellen, um eine schwach gesicherte Sandbox zu kompromittieren.

Virtualisierte Umgebungen werden auch als „Jail“ (Gefängnis) bezeichnet, da das emulierte Betriebssystem und die Hardwareressourcen einen eingeschränkten Netzwerkzugriff und Dateisystem-Namensraum haben. Sandboxen sind auch in einigen Anwendungen und Cloud-Hosts enthalten, in denen alles, was darin läuft, am Zugriff auf bestimmte Bereiche des Host-Rechners gehindert wird.

Vorteile einer Sandbox

Wie eine Entwicklungstestumgebung kann eine Sandbox verwendet werden, um eine beliebige Anwendung auf einer sicheren Ressource auszuführen, bevor sie produktiv eingesetzt wird oder Zugriff auf Produktionsressourcen erhält. In einer Sandbox können Unternehmen Programme ausführen, die potenziell Probleme verursachen könnten, sei es durch Malware oder unbeabsichtigte Softwarefehler, ohne geschäftskritische Ressourcen zu beeinträchtigen oder zu beschädigen.

Eine Sandbox wird auch oft als Quarantäne für unbekannte E-Mails und Anhänge verwendet. E-Mail-Filter erkennen zwar potenziell bösartige E-Mail-Nachrichten und -Anhänge, aber ein Administrator benötigt eine sichere Umgebung, in der er sie sich anschauen kann, um Fehlalarme zu erkennen. Bösartige Dokumente können Makros enthalten, die Schwachstellen in gängigen Produktivitätsanwendungen wie Microsoft Office ausnutzen. Ein Administrator kann mithilfe einer virtuellen Sandbox-Maschine Anhänge öffnen und die Makros anzeigen, um zu sehen, ob sie sicher sind.

Für Unternehmen, die über kein spezialisiertes Cybersecurity-Personal verfügen, kann eine Sandbox von jedem Mitarbeiter verwendet werden, um verdächtige Programme zu isolieren. Mit einer Sandbox können Mitarbeiter unbekannten Code ausführen, ohne ihre Systeme neuen Bedrohungen auszusetzen.

Sandbox-Beispiele

Eine Sandbox kann sowohl Software- als auch Hardwarekomponenten beinhalten. Sie könnte sich mit Hardware-Einschränkungen in einem eigenen isolierten Netzwerk befinden. Für eine besonders enge Isolierung könnte die Sandbox einen eigenen Wi-Fi-Router und eine eigene ISP-Verbindung haben. Diese Einrichtung würde es einer bösartigen Anwendung physisch unmöglich machen, auf das Hauptnetzwerk zuzugreifen.

Mehrere Anwendungen verwenden standardmäßig Sandboxen, um das lokale Betriebssystem zu schützen. Browser haben ihre eigenen Sandboxen, um bösartige Anwendungen, die im Web laufen, vom Zugriff auf lokale Rechnerressourcen zu separieren. Sprachen, wie Java, verfügen über eine eigene Sandbox, um lokale Ressourcen vor nicht vertrauenswürdigem Code zu schützen, wie z. B. ein Java-Applet, das auf einer Webseite läuft.

Das Betriebssystem Windows 10 verfügt über eine eingebaute Sandbox, um den Desktop vor nicht vertrauenswürdigem Code zu schützen. Obwohl diese Funktion nicht als Ersatz für Antiviren-, Firewall- und Anti-Malware-Programme verwendet werden sollte, fügt sie eine Sicherheitsebene hinzu, die ältere Windows-Betriebssysteme nicht haben.

HTML5 verfügt über eine Sandbox, um den Missbrauch seiner iframe-Funktion zu schützen. Und das Linux-Betriebssystem verfügt über mehrere Anwendungs-Sandboxen, die auf Seccomp und cgroup aufbauen. Die Google-Sandbox-API steht für Entwickler zur Verfügung, die C++-Code schreiben und ihren Code in einer Sandbox unterbringen müssen, bevor sie ihn in der Produktionsumgebung bereitstellen.

Wie richtet man eine Sandbox-Umgebung ein?

Der Verwendungszweck einer Sandbox hängt von der Art und Weise ab, wie Sie sie einrichten. Viele Cloud-Plattformen haben ihre eigene Sandbox, um mit neuen Programmen und Updates zu arbeiten. Entscheiden Sie sich beispielsweise für die Zusammenarbeit mit PayPal als Zahlungsabwickler, verfügt die Plattform über eine vollständige Sandbox, in der Sie die Produktionsumgebung emulieren können. Jeder Code, der die Sandbox verwendet, ist von der Produktion isoliert, sodass Fehler und Bugs die eigentliche Plattform nicht beeinträchtigen.

Wenn Sie eine Computer-Sandbox zum Testen von Code oder potenzieller Malware benötigen, können Sie Ihre eigene Sandbox erstellen, indem Sie eine virtuelle Maschine installieren. VirtualBox wird häufig zum Hosten der virtuellen Umgebung, auch virtuelle Maschine genannt, verwendet. Sie benötigen dann lediglich eine Installationsdatei, um das Betriebssystem innerhalb der virtuellen Maschine auszuführen.

Legen Sie dabei vor der Installation des Betriebssystems innerhalb der virtuellen Maschine die Hardwareressourcen fest, die der Umgebung zur Verfügung stehen sollen, wie Arbeitsspeicher, CPU, Speicherkapazität und Netzwerkadapter. Diese Ressourcen werden virtualisiert und sind außerhalb der virtuellen Maschine nicht verfügbar. Umgekehrt können Programme, die in Ihrer neuen Umgebung ausgeführt werden, keine Speicherressourcen mit dem Hauptbetriebssystem oder irgendetwas außerhalb der virtuellen Maschine teilen.

Auch wenn eine Sandbox ein vermeintlich sicherer Raum ist, versuchen Angreifer immer wieder, die Sandbox-Sicherheit zu durchbrechen. Technologiefirmen setzen oft ein hohes Preisgeld auf jeden aus, der eine Schwachstelle in der Sandbox findet, die ausgenutzt werden könnte. Die Entwickler von Microsoft Edge zahlen beispielsweise bis zu 30.000 US-Dollar an jeden, der eine Umgehung der Browser-eigenen Sandbox findet. Google-Chrome-Entwickler zahlten 2012 60.000 US-Dollar an jemanden, der auf einem vollständig gepatchten Rechner unzulässigen Code ausführen konnte.

Um Sicherheitsforschung zu betreiben oder in die Malware-Analyse einzusteigen, ist eine Sandbox ein Muss. Sie stellt sicher, dass der virtuellen Maschine nicht alle Ressourcen zur Verfügung stehen, einschließlich des Netzwerkspeichers. Mit einer Sandbox können Sie den Code analysieren, ohne das Risiko einzugehen, eine Produktionsumgebung zu zerstören.