reunion
2004-01-11, 21:08:12
"Über die Neuerungen der AMD64-Prozessoren ist in den letzten Monaten vor und nach dem Launch viel berichtet worden; sei es nun Cool'N'Quiet, der integrierte Memory Controller oder auch die derzeit meist noch brachliegenden 64-Bit-Erweiterungen. Ein Feature, welches ursprünglich aus der 64-Bit-Welt stammt und mit dem SP2 für Windows XP auch in der 32-Bit-Welt Verwendung finden wird, wurde bislang allerdings kaum erwähnt. Die Rede ist vom No-Execution-Bit, kurz NX.
NX ist ein Sicherheitsfeature, welches an einem fundamentalen Problem von Programmen ansetzt. Ist ein Programm erst einmal geladen, kann man bei einem Blick in die verwendeten Arbeitsspeicherbereiche nicht mehr feststellen, ob es sich bei einem bestimmten Block nun um Programmcode oder zum Programmablauf gehörende Daten handelt. Diese Verwaltung wird einzig und allein dem Programm und dem Betriebssystem überlassen. Genau an dieser Stelle setzen etliche Würmer und Viren an, die derzeit im Internet kursieren und Buffer-Overflows ausnutzen.
Bei einem Buffer-Overflow wird Programmcode in einen Speicherbereich eines Programms geladen, welcher eigentlich für Daten reserviert ist. Durch einen Programmierfehler kann es nun vorkommen, dass ein Programm beim Lesen von Code aus dem Arbeitsspeicher nicht nach dem eigentlichen Codeblock aufhört, sondern auch darüber hinaus liest. Befinden sich nun echte Daten in folgenden Block, wird das Programm üblicherweise nur abstürzen. Befindet sich aber schädlicher Code im Datenblock, so wird dieser nach dem Programmcode eingelesen und wie dieser ausgeführt. Auf diese Art und Weise hat sich beispielsweise der Blaster-Wurm durch einen Fehler im RPC-Stack ganz von alleine weiterverbreitet, sobald man ohne Firewall ans Internet angeschlossen ist.
An genau dieser Stelle setzt nun das NX-Feature an. Es bietet die Möglichkeit, einen Speicherbereich durch Setzen des No-Execution-Bits ausnahmslos für Daten zu verwenden. Ein Wurm oder Virus kann sich weiterhin in den Datenbereich kopieren. Kommt es zum Buffer-Overflow, wird wie bisher Programmcode aus einem Datenbereich eingelesen. Dies wird nun allerdings vom Prozessor erkannt; dieser gibt eine Exception zurück. Darauf wird das Programm höchstwahrscheinlich abstürzen. Allerdings geschieht der Absturz, ohne dass vorher noch der schädliche Code ausgeführt werden konnte. Das System bleibt also vom Wurm oder Virus verschont.
Wie bereits erwähnt hat Microsoft eine Möglichkeit gefunden, dieses Feature, welches alle x86-64-Bit-Prozessoren (auch der Itanium) beherrschen, auch für den 32-Bit-Betrieb nutzbar zu machen. Beim Itanium ist dies aufgrund der recht gemächlichen 32-Bit-Ausführungsgeschwindigkeit eher uninteressant. Bei den AMD64-CPUs hingegen, welche derzeit ja sowieso meist noch mit 32-Bit-Software betrieben werden, ist dieses Feature hingegen sehr willkommen. Natürlich muss Software entsprechend programmiert werden, um NX-Bits setzen zu können. Mit dem SP2 für Windows XP will Microsoft alle Kernkomponenten neu kompilieren, so dass diese NX unterstützen. Da fast 100% aller derzeit verbreiteten Viren und Würmer Sicherheitslücken von Microsoft-Produkten ausnutzen, wird ihnen damit ein Riegel vorgeschoben."
http://www.k-hardware.de/artikel.php?s=&artikel_id=2574
mfg
reu
NX ist ein Sicherheitsfeature, welches an einem fundamentalen Problem von Programmen ansetzt. Ist ein Programm erst einmal geladen, kann man bei einem Blick in die verwendeten Arbeitsspeicherbereiche nicht mehr feststellen, ob es sich bei einem bestimmten Block nun um Programmcode oder zum Programmablauf gehörende Daten handelt. Diese Verwaltung wird einzig und allein dem Programm und dem Betriebssystem überlassen. Genau an dieser Stelle setzen etliche Würmer und Viren an, die derzeit im Internet kursieren und Buffer-Overflows ausnutzen.
Bei einem Buffer-Overflow wird Programmcode in einen Speicherbereich eines Programms geladen, welcher eigentlich für Daten reserviert ist. Durch einen Programmierfehler kann es nun vorkommen, dass ein Programm beim Lesen von Code aus dem Arbeitsspeicher nicht nach dem eigentlichen Codeblock aufhört, sondern auch darüber hinaus liest. Befinden sich nun echte Daten in folgenden Block, wird das Programm üblicherweise nur abstürzen. Befindet sich aber schädlicher Code im Datenblock, so wird dieser nach dem Programmcode eingelesen und wie dieser ausgeführt. Auf diese Art und Weise hat sich beispielsweise der Blaster-Wurm durch einen Fehler im RPC-Stack ganz von alleine weiterverbreitet, sobald man ohne Firewall ans Internet angeschlossen ist.
An genau dieser Stelle setzt nun das NX-Feature an. Es bietet die Möglichkeit, einen Speicherbereich durch Setzen des No-Execution-Bits ausnahmslos für Daten zu verwenden. Ein Wurm oder Virus kann sich weiterhin in den Datenbereich kopieren. Kommt es zum Buffer-Overflow, wird wie bisher Programmcode aus einem Datenbereich eingelesen. Dies wird nun allerdings vom Prozessor erkannt; dieser gibt eine Exception zurück. Darauf wird das Programm höchstwahrscheinlich abstürzen. Allerdings geschieht der Absturz, ohne dass vorher noch der schädliche Code ausgeführt werden konnte. Das System bleibt also vom Wurm oder Virus verschont.
Wie bereits erwähnt hat Microsoft eine Möglichkeit gefunden, dieses Feature, welches alle x86-64-Bit-Prozessoren (auch der Itanium) beherrschen, auch für den 32-Bit-Betrieb nutzbar zu machen. Beim Itanium ist dies aufgrund der recht gemächlichen 32-Bit-Ausführungsgeschwindigkeit eher uninteressant. Bei den AMD64-CPUs hingegen, welche derzeit ja sowieso meist noch mit 32-Bit-Software betrieben werden, ist dieses Feature hingegen sehr willkommen. Natürlich muss Software entsprechend programmiert werden, um NX-Bits setzen zu können. Mit dem SP2 für Windows XP will Microsoft alle Kernkomponenten neu kompilieren, so dass diese NX unterstützen. Da fast 100% aller derzeit verbreiteten Viren und Würmer Sicherheitslücken von Microsoft-Produkten ausnutzen, wird ihnen damit ein Riegel vorgeschoben."
http://www.k-hardware.de/artikel.php?s=&artikel_id=2574
mfg
reu