Die Untersuchung eines wahrscheinlichen Angriffs beinhaltet die Entwicklung eines Testfalls, der zeigt, wie der Angriff funktioniert. Tritt auffälliges Verhalten auf, müssen die Forscher in der Lage sein, es zu reproduzieren und zu analysieren. Mit Simics-Kontrollpunkten und Funktionen zur umgekehrten Ausführung wird das eine ziemlich einfache Angelegenheit. Mit einem System-Checkpoint ist ein kompletter Zustand des Systems speicherbar – vom einzelnen Gerät bis hin zu Tausenden von Geräten, die wiedergegeben und von einem Team gemeinsam nutzbar sind. Mit der umgekehrten Ausführung können Cyber-Ingenieure einfach die Zeit umkehren und dieselbe Ausführung mit vollständigem Determinismus erneut abspielen. Darüber hinaus sind die Funktionen nicht-invasiv, so dass das System nicht beobachten kann, dass es angehalten, umgekehrt, kontrolliert oder wiederhergestellt wird.
Wenn es sich bei der »Hardware« tatsächlich um Software handelt, ist sie nach Bedarf änderbar – beispielsweise sind Hardware-Fehler programmgesteuert in das System einzuspeisen. Bei vollständiger Kontrolle über die Zeit können Ingenieure das System im laufenden Betrieb ändern und modifizieren, um ein bestimmtes Verhalten zu erreichen, oder verschiedene Wege durch die Ausführungspfade nehmen. Diese Fähigkeit ist sowohl für Penetrations- als auch für Fuzz-Tests sehr nützlich. Da alles in Simics durch Skripting ausführbar ist, kann die Fehlerinjektion automatisiert und so oft wie nötig wiederholt werden.
Als Ergänzung zu gewöhnlichen Blackbox-Analysen und -Tests ermöglicht Simics vollständige White Box-Tests und -Analysen. Simics ermöglicht einen vollständigen Einblick in das gesamte System und den Zugriff auf physischen und virtuellen Speicher. Alles auf dem Target kann unbemerkt und ununterbrochen gelesen werden, einschließlich MMU-Inhalte, Register und Disk-Inhalte. Jede Anweisung, jeder Speicherzugriff, jeder Gerätezugriff und jedes Netzwerkpaket kann zurückverfolgt und protokolliert werden. Und die Malware hat keine Ahnung, dass sie beobachtet wird.
Da Malware manchmal so konzipiert ist, dass sie erst nach Wochen, Monaten oder sogar Jahren langfristige Auswirkungen hat, müssen Forscher untersuchen, was mit einem System in der Zukunft passieren kann und wie kleine Fehler im Laufe der Zeit zu größeren Problemen führen. Bei einem physischen System gibt es nur eine Möglichkeit das zu tun – das System laufen zu lassen und die Auswirkungen in Echtzeit zu überwachen. Durch Hypersimulation kann die Simulation die Zeit tatsächlich beschleunigen und das Systemverhalten in die Zukunft projizieren.
Bei der Durchführung von Forensik kann man auf Situationen stoßen, in denen nur Software-Binärdateien verfügbar sind. Jener Mangel an Quellcode könnte eine Untersuchung möglicherweise verlangsamen oder behindern. Da in Simics jedoch unmodifizierte Software ausgeführt wird, können Teile des Systems nur als Maschinencode verfügbar sein und dennoch durch die Nutzung der Funktionen von Simics ausgeführt und analysiert werden. Es ist eine einzigartige Eigenschaft von Simics im Vergleich zu anderen Systemsimulationswerkzeugen.
Entwickler müssen sicher sein, dass neue Software und die damit verbundenen Produkte vor der Bereitstellung nicht beeinträchtigt wurden – dass das System zu Beginn und nach einem Update sicher bootet und funktioniert.
Die einfache Antwort wäre, jeden Teil der Software vor dem Einsatz und bei jeder Aktualisierung zu testen. Herausfordernd ist jedoch, dass die Sicherheit nur schwer richtig skalierbar ist. Je komplexer die Software und das Computersystem sind, desto größer ist die Testmatrix und desto schwieriger wird es, die entsprechende Testvariation im Produktionsmaßstab zu erreichen. Wenn sich die Tests nicht in vollem Umfang ausführen lassen, kann das Produktionssystem gefährdet werden – dieses Risiko wird durch die unerbittliche Forderung nach schnelleren Implementierungen noch verschärft. Leider bestand die Umsetzung oft darin, auf eine vollständige Testabdeckung zu verzichten und nur für die kritischsten Anwendungsfälle auf verfügbaren Plattformen zu testen. Cyber-Angreifer werden die Stellen finden, die nicht vollständig getestet wurden.
Fuzz-Tests sind eine Methode, die zur Bewertung der Sicherheit vor dem Einsatz anwendbar sind. Ingenieure können beispielsweise die Eingaben in ein Gerät nach dem Zufallsprinzip variieren, eine zufällige Kommunikation einführen, Protokollvariationen anwenden, Reichweiten- und Grenzüberprüfungen durchführen oder auf Puffer- und Registerüberläufe prüfen. Zufallsgesteuerte Tests erfordern jedoch Bandbreite, was wiederum die Frage der Skalierbarkeit aufwirft.
Sicherheitstests erfordern Skalierbarkeit. Kompromisse bei der Testvariation und der Testabdeckung müssen beseitigt werden. Der Schlüssel bei der Umsetzung sind zwei wichtige Fähigkeiten: Automatisierung und Parallelisierung. Es ist von entscheidender Bedeutung, über ein Höchstmaß an Automatisierung zu verfügen, nicht nur, um den Testprozess zu beschleunigen, sondern auch, um Wiederholbarkeit zu erreichen und die Ergebnisse automatisch zu berichten und zu protokollieren. Das parallele Ausführen von Tests hilft auch, Zeit zu sparen, aber die Parallelisierung ist schwierig. Nicht alle Arten von Testsoftware können parallel ausgeführt werden, einige sind von Natur aus seriell. Und die Test-Parallelisierung erfordert die Existenz mehrerer Instanzen derselben Hardware, was nicht immer praktisch oder erschwinglich ist.
Simulation und virtuelle Hardware lösen sowohl das Automatisierungs- als auch das Parallelisierungsproblem. Wenn die Hardware virtuell ist, kann jede Menge Ziel-Hardware in jeder Systemkonfiguration sofort instanziiert werden. Ein virtuelles Hardware-Labor kann ein physisches Hardware-Labor ergänzen und es Ingenieuren ermöglichen, die Zielsysteme nach Bedarf zu erstellen. Ein automatisiertes Testsystem ist so programmierbar, dass neue Hardware-Instanzen und System-Setups (sowohl von Hardware als auch von Software) automatisch erstellt werden.
Simics kann die Testgeschwindigkeit durch eine »Snapshot- und Wiederherstellungsfunktion« erheblich beschleunigen, das heißt es kann ein System bis zu einem bestimmten Punkt ausführen, einen Snapshot erstellen und dann abgeleitete Testfälle aus dem Snapshot ausführen, ohne dass das System jedes Mal bis zum Snapshot-Punkt neu ausgeführt werden muss.
Simics ermöglicht die sofortige und unbegrenzte Replikation von Test-Assets. Parallele Tests, die mehrere Hardware-Instanzen erfordern, können mit Simics einfach ausgeführt werden. Es können alternative Systemkonfigurationen erstellt werden, so dass Karten und Software-Kombinationen je nach den spezifischen Anforderungen variierbar sind, so dass die gesamte Testmatrix mit einer beliebigen Anzahl oder Kombination von Hardware-Varianten, Betriebssystem-Konfigurationen, Kommunikationsprotokollen und Geräten vervollständigt werden kann.
Da in Simics alles skriptfähig ist, die Zeit kontrolliert und das System in jeder Hinsicht verändert werden kann, wird es möglich, zu automatisieren, was sonst nicht möglich wäre. Beispielsweise kann Hardware gezwungen werden, wiederholt und deterministisch zu stoppen. Fuzz-Tests können auf neue Art und Weise automatisiert werden. Testprogramme können so eingerichtet werden, dass automatisch eine beliebige Anzahl neuer Platinen erstellt wird, die mit vordefinierten Software-Stacks geladen werden und von jedem beliebigen Punkt aus in jedem beliebigen Zustand ausführbar sind. In Kombination mit der Fähigkeit, die Software auf einem gegebenen Satz virtueller Boards programmatisch zu ändern, ermöglichen die Fähigkeiten die vollständige Automatisierung verschiedener Testkombinationen.
Ein wichtiger und oft übersehener Aspekt der virtuellen Hardware ist, dass sie stabiler und zuverlässiger ist als physische Hardware. Hardware-Labore sind tendenziell ausfallgefährdet und störungsempfindlich. Je größer das Labor, desto empfindlicher kann es mit zunehmender Komplexität werden. Bei der Überprüfung der Ergebnisse eines automatisierten Testsystems nach einem Test über Nacht kann man feststellen, dass Tests unterbrochen wurden, was mehrere Stunden oder Tage an Verzögerungen kostet. Ingenieure müssen möglicherweise auch Zeit aufwenden, um ein gemeldetes Problem zu analysieren und feststellen, ob das Problem mit dem zu entwickelnden System oder dem Testsystem selbst zusammenhängt, was die Produktivität beeinträchtigt. Mit virtueller Hardware, die auf stabilen Servern läuft, wird das Testsystem vertrauenswürdiger, und alle Testteams können unabhängig von ihrem Standort Zeit sparen, die sonst verloren gehen könnte, wenn die Testautomatisierung nur auf physischer Hardware durchgeführt wird.
Die zunehmende Automatisierung, digitale Informationen und die Vernetzung kritischer Systeme erhöhen die Komplexität der Entwicklung und Wartung sicherer Systeme. Die Entwickler kritischer Systeme benötigen Werkzeuge, die ihnen helfen, den immer raffinierteren Angreifern einen Schritt voraus zu sein. Die Systemsimulationstechnik bietet ein effizientes und wirksames Mittel zur Erforschung, Analyse und Prüfung einer Vielzahl von Angriffsmethoden und Sicherheitsgegenmaßnahmen in einer flexiblen und skalierbaren Umgebung, und zwar auf eine Weise, die mit physischen Systemen einfach nicht machbar wäre. In einer Welt, die immer mehr von der sicheren und zuverlässigen Leistung miteinander verbundener Systeme abhängig ist, bietet die Simulation Cyberprofis eine Möglichkeit, die Oberhand zu gewinnen.