title image


Smiley Einfach nur lachhaft
Um Execution Protection zu implementieren, greift Microsoft auf die Fähigkeiten moderner 64-Bit-Prozesoren zurück, die Funktionen zur NX-Kennzeichnung von Speicherbereichen mitbringen. Derzeit stehen dafür der Athlon64 von AMD und der Itanium von Intel zur Verfügung. Bislang kann nur der Athlon64 mit dem 32-bittigen Windows XP zuammenarbeiten und dies auch nur im PAE-Mode (Physical Address Extension). Einige Treiber könnten hier zukünftig ihren Dienst versagen, da PAE einen 64-Bit-Adressraum benutzt, den 32-Bit-Adapter nicht adressieren können. Microsoft hat deshalb auch den Hardware Abstraction Layer (HAL) und den Memory Manager modifiziert, um weitestgehende Kompatibilität zu älteren 32-Bit-Treibern zu erhalten.



Ruft eine Applikation eine als NX markierte Speicherseite auf, löst der Prozessor eine Exception (STATUS_ACCESS-VIOLATION im User Mode) aus, die in den meisten Fällen unbehandelt bleibt und zur Terminierung des auslösenden Prozesses führt. Greift der Kernel auf einen geschützten Speicherbereich zu, stürzt Windows ab (ATTEMPTED_EXECUTE_OF_NONEXECUTE_MEMORY). Leider schützt Execution Protection den Kernel Mode im 32-Bit-Windows-XP nur halb: Einzig der Stack wird als NX markiert. Anders beim 64-Bit-Windows-XP: Außer dem Stack sind auch die Heaps geschützt.



Einige Applikationen, die etwa zur Laufzeit neuen Programmcode generieren und ausführen wollen, dürften nach der Installation des Service Packs nicht mehr funktionieren. Über spezielle Funktionen können neue Anwendungen ausführbaren Speicher anfordern, ältere Programme müssen dazu überarbeitet werden.



In den Schutz von NX kommen bis auf weiteres nur Besitzer aktueller 64-Bit-CPUs. Damit hat Microsoft den Abstand zur Konkurrenz zwar verkürzt -- aber noch nicht ganz aufgeholt. OpenBSD und Linux mit der Erweiterung PaX bieten ähnliche Schutzmechanismen bereits auf gewöhnlichen x86-Systemen.



(Quellenangabe) Aus dem Artikel »Befehlsverweigerung« von heise.de



Schon der »Intel 80286«-Prozessor, der bereits 1982 auf den Markt kam und der zu einem der ältesten Vorgänger des ganzen Pentium- und Athlon-Quatsches gehört, besaß einen Mechanismus zur strikten Trennung zwischen Speicherbereichen mit ausführbaren Prozessorbefehlsdaten und nicht ausführbaren Verarbeitungsdaten, um sicherheitsgefährliche Verwechslungen entsprechender Speicherinhalte zu verhindern. Aber da es infolge der Fortschrittsintelligenz der Ingenieure von Intel beim 286 nicht möglich war, innerhalb des dafür zu aktivierenden »Protected Virtual Adress Mode« die für die Abwärtskompatibilität entsprechender Systeme zu bereits vorhandener Software wichtigen MS-DOS-Programme kompatibel zum »Real Adress Mode« auszuführen, gab es damals noch kaum sinnvolle Möglichkeiten zur Nutzung der neuen Funktionen der neuen Betriebsart PVAM.



Angeblich zwecks Steigerung des Sicherheitsgrades der CPU hatten die Ingenieure sogar darauf verzichtet, nach der erstmaligen Aktivierung des PVAM noch eine Umschaltung in den 8086-kompatiblen Real Mode zu gestatten. Diese Möglichkeit müssen sie wohl für einen Rückfall ins Steinzeitalter gehalten haben, obwohl es zunächst keinerlei im PVAM-Modus lauffähige Software gab, so dass die mangelhafte Integrationsfähigkeit herkömmlicher Software für den Real Modus auch nicht gerade zur Entwicklung entsprechender neuartiger Betriebssysteme beitragen konnte. (Auch so kann man den Fortschritt bremsen und großartige Neuentwicklungen verkaufen, die niemandem etwas nutzen.) Das heißt, nachdem das PVAM-Bit im Statusregister des Prozessors einmal gesetzt war, konnte es nicht mehr zurückgesetzt werden, obwohl ein Zugriff auf dieses Register ohnehin ausschließlich in dem für die hochrangigsten Routinen des Betriebssystems vorgesehenen Privileg Level 0 zulässig war.



Nachdem die Branche erkannte, wie unsinnig diese Beschränkung ist, gelang es den Mainboardherstellern, dieses Problem zu umgehen, indem sie eine Schaltung hinzufügten, über die sich der 80286-Prozessor durch ein dem separaten Tastaturprozessor 8042, der einen Einchipmikrorechner mit eingebauten binären Ein/Ausgabeeinheiten darstellt, befohlenes Signal, welches den hardwaremäßigen CPU-Reset ansteuert, zurücksetzen ließ. (Nach dem Reset ist immer der 8086-kompatible »Real Adress Mode« aktiv, da die Aktivierung des PVAM die vorherige Konstruktion der hierfür nötigen Verwaltungsstrukturen im Arbeitsspeicher erfordert.) Dazu mussten natürlich im BIOS entsprechende Routinen vorgesehen werden, die anhand einer im nichtflüchtigen NVRAM-Speicher (sogenanntes CMOS-RAM) abgelegten Kennung erkannten, dass es sich nicht um einen echten Kaltstart (Einschalten oder Reset-Taste), um nach dem Reset die Programmausführung der den Back-To-Real-Mode-Reset auslösenden Routine des Betriebssystems fortsetzen zu können.



Hinzu kam noch als weitere Kuriosität die Inkompatibilität des Verhaltens der 21. Adressleitung des 80286 im »Real Adress Mode« bei einem sogenannten Wrap-Around der effektiven Adresse zum 8086-Prozessor, der nur 20 Adressleitungen hatte, weil dessen Adressraum (wie der Adressraum des Real Mode) noch auf 1024 KByte begrenzt war. Hierzu spare ich mir, auf die Einzelheiten einzugehen, wer sich dafür interessiert, kann entsprechende Informationen unter dem Suchbegriff »Gate A20« im Internet finden.



Nachdem diese Einschränkungen durch die Weiterentwicklungen des i386-Prozessors seit 1986 überwunden waren, hielt es aber Microsoft in der nunmehr 23 jährigen Geschichte von Windows offenbar nie für nötig, die eingangs dargestellten Möglichkeiten dieser Intel-Prozessoren, die sämtliche Nachfolgemodelle übernommen haben, sinnvoll zu nutzen.






geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: