TEST

Intel Pentium 4 570J - Das E0-Stepping für den Prescott - ExecuteDisable

Portrait des Authors


Werbung

Intel bietet mit den "J"-Prozessoren erstmals ein Execute Disable-Bit. Erfahrungen hat man damit schon, denn bereits im Itanium ist ein entsprechendes Feature Standard. Das Execute Disable Bit kommt eigentlich aus dem 64 Bit-Bereich und wird auch bei vielen anderen Prozessoren bereits eingesetzt. AMD war hier zwar Vorreiter im Desktop-Bereich, aber erfunden hat man das dort "NX-Bit" genannte Feature nicht. Intel hat mit der Implementierung etwas gewartet, denn um einen funktionierenden Speicherschutz zu gewährleisten, braucht es ein entsprechendes Betriebssystem. Windows XP ist mit dem Service Pack 2 in der Lage, den Speicherschutz zu nutzen. Auch finden wir auf der Webseite von Microsoft eine sehr gute Erläuterung, was der Ausführungsschutz überhaupt ist:

Welche Aufgabe hat der Ausführungsschutz?

Der Ausführungsschutz (auch NX oder No eXecute genannt) verhindert die Codeausführung in Datenseiten, wie zum Beispiel Standardheap, verschiedenen Stacks und Speicherpools. Der Schutz kann im Benutzermodus und im Kernelmodus angewendet werden. [...]

Beim Ausführungsschutz handelt es sich um ein Betriebssystemfeature, das die Prozessorhardware nutzt, um Speicher mit einem Attribut zu markieren. Dieses Attribut zeigt an, dass in diesem Speicherbereich kein Code ausgeführt werden darf. Der Ausführungsschutz arbeitet auf der Basis einzelner virtueller Speicherseiten. Dabei wird zum Markieren der Speicherseite oftmals ein Bit im Page Table Entry (PTE) verwendet.

Die Hardwareimplementierung für den Ausführungsschutz und das Markieren der virtuellen Speicherseite hängt von der jeweiligen Prozessorarchitektur ab. Prozessoren, die Ausführungsschutz unterstützen, können jedoch eine Ausnahme (Exception) auslösen, wenn Code in einer Seite ausgeführt wird, für die das entsprechende Attribut gesetzt wurde. Die 32-Bit-Version von Windows nutzt zurzeit das Prozessorfeature für den NX-Seitenschutz, das von AMD (Advanced Micro Devices) definiert wurde. Dieses Prozessorfeature setzt voraus, dass der Prozessor im PAE-Modus (Physical Address Extension oder Physikalische Adresserweiterung) ausgeführt wird. [...]

Wo findet dieses Feature Anwendung?

Anwendungs- und Treiberentwickler sollten den Ausführungsschutz und die Anforderungen an die Software auf einer unterstützenden Plattform kennen. Anwendungen, die Code Just-In-Time generieren oder Speicher aus dem Standardprozessstack oder -heap ausführen, sollten sorgfältig auf die Anforderungen für den Ausführungsschutz achten.

Die Treiberentwickler sollten sich über den PAE-Modus auf Plattformen informieren, die den Ausführungsschutz unterstützen. Das Verhalten des PAE-Modus in Windows-Systems mit weniger als 4 GB physikalischem Adressraum wurde geändert, um Treiberinkompatibilitäten zu verringern. [...]

Execute Disable hilft also, dass Code aus besonderen Speicherbereichen ausgeführt werden kann. Das Feature ist deshalb von besonderer Bedeutung, weil viele Viren sogenannte "Buffer overflow"-Attacken verwenden, die durch Execute Disable verhindert werden können. Effektiv wird also einigen Viren das Handwerk gelegt, indem die Ausführung ihres Codes unterbunden wird. Dieses wird dadurch verwirklicht, dass für jeden Speicherbereich ein Bit in der Page Table Entry (PTE) existiert, der bestimmt, ob in dem Speicherbereich Daten ausgeführt werden dürfen oder nicht. Ist ein Speicherbereich als nicht ausführbar gekennzeichnet, aber es soll etwas ausgeführt werden, weist der Prozessor den Code zurück. Effektiv handelt es sich also nicht mehr um eine PAE32bit-Adressierung, sondern um eine PAE36bit-Adressierung. Diese ist normalerweise nur in Servern zu finden, bei denen die Speicheradressierung größer als 4 GB sein muss - in Desktop-Rechnern ist dies neu.

Intel implementiert Execute Disable in allen LGA775-Prozessoren, sowohl Pentium 4 und Celeron, die das "J" im Namen führen. Weiterhin muss das Bios das Feature entsprechend unterstützen und aktivieren. Das Betriebssystem - in den meisten Fällen wohl Windows XP - muss es natürlich ebenso unterstützen. Problematisch kann allerdings die Softwareunterstützung sein, denn einige Programmierer haben selbstmodifizierenden Code innerhalb "legalem" Programmcode verwendet. Aus diesem Grund ist hier die Validierung der Programme für den NX-Support die größte Herausforderung, notfalls lässt sich deshalb Execute Disable auch im Bios ausschalten. Aber es gibt auch einen Weg auf der Seite des Betriebssystems.

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Unten haben wir dargestellt, wie Execute Disable auf einem Rechner mit Windows XP Home und Service Pack 2 funktioniert. Erkennen, dass der Computer Execute Disable unterstützt, kann man mit einem Rechtsklick auf den Arbeitsplatz und der Auswahl von "Eigenschaften". Hier sieht man den Eintrag "Physikalischer Adressschutz", was bedeutet, dass Execute Disable aktiviert ist (Bild 1). Die Konfiguration kann über den Reiter "Erweitert" durchgeführt werden. Hier kann Execute Disable entweder komplett deaktiviert werden oder einzelne Programme vom Schutz ausgenommen werden. Das ist vor allen Dingen dann sinnvoll, wenn ein Tool Execute Disable nicht unterstützt und mit einer Fehlermeldung abstürzt, weil der Programmierer einen Buffer Overflow in seinem Code verwendet hat (Bild 2).

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Mit dem Tool NXTest von Robert Schlabbach kann man recht einfach darstellen, ob alles ordnungsgemäß funktioniert. Das Tool testet, ob NX-Bit aktiviert ist - es ist zwar nur für Itanium und Opteron/Athlon 64 geschrieben worden, aber der Execute Disable-Schutz ist identisch, kann also auch damit getestet werden. Nach dem Aufrufen sieht man folgendes Fenster:

Startet man nun den Test, meldet das Betriebssystem die gewünschte Warnung - Execute Disable ist aktiv. Das meldet anschließend auch das Programm, wenn das Betriebssystem die Ausführung des Codes verhindert hat :



Finally haben wir NXTest einmal auf die oben genannte Liste gepackt, für die Windows dann den Ausführungsschutz aufhebt - NXTest läuft ohne Fehlermeldung und erkennt anschließend, dass der Data Execution Prevention (DEP)-Schutz nicht aktiv ist.

Auf der nächsten Seite werfen wir einen Blick auf die Stromspartechnik, die sich im E0-Stepping befindet.

Quellen und weitere Links

    Werbung

    KOMMENTARE ()