Leichte Sandboxerkennung durch Programmierfehler

Die Sandbox von Norman verrät sich durch fehlerhafte Rückgabewerte eines bestimmten Systembefehls. Dadurch können Schädlinge die Sandbox leicht identifizieren und gegebenenfalls harmlose Aktionen ausführen.

In Pocket speichern vorlesen Druckansicht 60 Kommentare lesen
Lesezeit: 1 Min.
Von

Normans Sandbox simuliert lediglich die Ausführung von Software und protokolliert, was sie auf einem echten System anstellen würde. Durch einen Programmierfehler können Schädlinge die Simulation jedoch erkennen und gegebenenfalls nur harmlose Routinen ausführen.

Der jetzt von Arne Vidstrom entdeckte Fehler befindet sich in der simulierten Funktion zum Ausgeben der Interrupt-Descriptor-Table (IDT), einer Zuordnungstabelle von Hardware-Interrupts zu passenden Behandlungsroutinen. Der Assembler-Befehl dazu heißt SIDT (Store Interrupt Descriptor Table). Laut Intels Dokumentation (PDF, siehe S. 192, Abschnitt 5.10) soll dieser Befehl im ersten Datenwort die Größe der Tabelle angeben, und zwar in der Form 8N-1, wobei N die Anzahl an Einträgen für belegte Interrupts beschreibt. Normans Sandbox liefert jedoch den Wert 800 (Hexadezimal) anstatt 7FF zurück.

Ein Schädling braucht lediglich zu überprüfen, ob der Rückgabewert des ersten Datenwortes von SIDT 0x800 beträgt, und in diesem Fall harmlosen Programmcode ausführen, um seine wahre Natur vor der Sandbox zu verstecken. Vidstrom hat dem eigenen Bekunden nach Norman über diese Schwachstelle informiert, wollte jedoch mit der Veröffentlichung nicht bis zu einer gepatchten Version warten.

Siehe dazu auch:

(dmk)