MAGTOROM - Das Plus an Sicherheit

Viele Anwender würden es begrüßen, wenn das Multitasking-Betriebssystem MagiC (vormals Mag!X) nicht ins RAM geladen werden müßte, sondern auch als ROM-Version verfügbar wäre. Ein Vorteil liegt auf der Hand: Es stünde mehr RAM für andere Anwendungen zur Verfügung. Ein zweiter Vorteil eines Betriebssystems auf ROM-Basis wird oft übersehen: Die Betriebssicherheit ist höher, da der Programmcode nicht durch fehlerhafte Software zerstört werden kann.

Der Leser wird mir nachsehen, daß ich nun keinen Trick vorstellen werde, wie man MagiC ins ROM befördert. Aber immerhin ist es mit Hilfe der PMMU des 68030-Prozessors möglich, den gesamten Programmcode von MagiC gegen Veränderungen zu schützen. Besitzer eines ST oder STE bleiben dabei allerdings außen vor, denn einen 68030 findet man nur in TT und Falcon. Andererseits spricht nichts dagegen, dem ST durch eine PAK/3 Erweiterungskarte ebenfalls zu diesem Prozessor zu verhelfen.

Wo der Hund begraben liegt

Multitasking ist eine feine Sache. Vor allen Dingen dann, wenn man einmal in einer Multitasking-Umgebung gearbeitet hat, wird man sie kaum noch missen wollen. Befinden sich mehrere Programme gleichzeitig im Speicher, vergrößert sich allerdings auch das Risiko von Abstürzen. Dies trifft zumindest dann zu, wenn unsauber programmierte oder fehlerhafte Software zum Einsatz kommt.
Programmfehler sind natürlich nie ganz auszuschließen und Fehler, die in einer Multitasking-Umgebung auftreten, wirken sich unter Umständen nicht nur auf ein einziges, sondern gleich auf mehrere Programme aus. Es gibt jedoch Mechanismen, mit denen sich parallel laufende Prozesse gegeneinander absichern lassen. MultiTOS geht hier mit gutem Beispiel voran, indem es die Fähigkeit des 68030-Prozessors ausnutzt, Zugriffe eines Prozesses auf den Code eines anderen Programms zu unterbinden (Memory Protection, Speicherschutz). Leider wird ein solcher Mechanismus von MagiC nicht unterstützt.
Mit relativ wenig Aufwand ist es aber möglich, zumindest den Programmcode von MagiC gegen Schreibzugriffe anderer Prozesse abzusichern. Sollte dann ein Programmfehler dazu führen, daß ein Schreibzugriff auf das Betriebssystem (in diesem Fall MagiC) durchgeführt wird, schlägt diese Operation fehl und der Verursacher wird mit einem Busfehler (zwei Bomben) bestraft. Die Wirkung ist dieselbe, als wenn sich MagiC im ROM befinden würde. Auch bei Schreibzugriffen auf ein ROM wird nämlich ein Busfehler ausgelöst.

Die Durchführung

Wie schaut ein Schreibschutz per PMMU in der Praxis aus? Der Grundgedanke bei der Verwendung einer PMMU (Paged Memory Management Unit) ist, daß der Hauptspeicher in mehrere Kacheln (Pages) unterteilt wird. Diese Speicherkacheln sind bei TT und Falcon 32 KByte groß. (Wird eine virtuelle Speicherverwaltung wie VRAM oder OUTSIDE verwendet, sind auch Pages von 8 oder 16 Kbyte möglich.) Jeder Kachel sind gewisse Attribute zugeordnet, beispielsweise eine Information darüber, ob der Inhalt dieser Seite beschrieben oder lediglich gelesen werden darf. Im Normalfall finden diese Attribute jedoch keine Anwendung und die PMMU liegt fast vollständig brach.
Das hier vorgestellte Programm MAGTOROM sorgt nun dafür, daß die Kacheln, die den Programmcode von MagiC beinhalten, gegen Schreibzugriffe abgesichert werden. Dazu werden lediglich die Deskriptor-Tabellen für die PMMU, mit deren Hilfe die Segmentierung des Speichers in Kacheln erfolgt, entsprechend erweitert und modifiziert.
Wichtig ist in diesem Zusammenhang natürlich, daß ausschließlich der Speicherbereich geschützt wird, der den MagiC-Programmcode enthält. Nun endet aber der Code von MagiC nicht zwangsweise genau am Ende einer solchen Kachel und so ist die Wahrscheinlichkeit hoch, daß sich in der letzten Kachel, die von MagiC beansprucht wird, zusätzlicher Code eines weiteren Programms befindet. Es wäre wünschenswert, wenn MagiC von sich aus dafür sorgen könnte, daß es auf dem letzten Byte einer Kachel endet. Und man höre und staune: MagiC ist auf diesen Eingriff vorbereitet. Neben dem Bootprogramm MAGXBOOT existiert noch ein zweiter Booter mit dem Namen MAGXBO32. Wird dieses Programm zum Starten von MagiC verwendet, wird der soeben geforderte Idealzustand hergestellt und der gesamte Programmcode von MagiC läßt sich wirkungsvoll über die PMMU schützen.
Detaillierte Informationen zur Programmierung der PMMU entnimmt man am besten der Fachliteratur [1] sowie älteren Ausgaben der ST Computer (Anfang 1991).

Was es zu beachten gilt

Der Assembler-Quelltext zu MAGTOROM wurde für den Easy Rider Assembler entwickelt, dürfte sich aber ohne größere Änderungen auch für andere Assembler eignen. Wichtig ist, daß der verwendete Assembler 68030 Code erzeugen kann.
MAGTOROM verweigert die Installation, wenn im cookie jar bereits ein PMMU-cookie angelegt wurde, die PMMU also schon von einem anderen Programm verwendet wird [2]. Dies ist unter MagiC normalerweise nur dann der Fall, wenn eine der virtuellen Speichermanager VRAM oder OUTSIDE installiert ist. Besitzer von OUTSIDE kommen auch ohne MAGTOROM in den Genuß eines schreibgeschützten MagiC-Systems: Wird OUTSIDE unter MagiC gestartet, richtet der Speichermanager nämlich von sich aus automatisch einen Schreibschutz ein, wie er hier vorgestellt wurde. MAGTOROM ist also in diesem Fall von vornherein überflüssig. Auch beim Einsatz von OUTSIDE sollte aus den bereits angesprochenen Gründen der Booter MAGXBO32 verwendet werden.
Bei MAGTOROM handelt es sich um ein recht kurzes Programm. Daran läßt sich gut erkennen, daß sich durch die Programmierung der PMMU mit recht wenig Aufwand interessante Ergebnisse erzielen lassen. Schädliche Nebenwirkungen sind bei der Verwendung von MAGTOROM nicht zu erwarten. Bis auf die Tatsache, daß der MagiC-Programmcode nicht mehr modifiziert werden kann, hinterläßt MAGTOROM keine Spuren. Daher kann man jedem MagiC-Anwender die Benutzung von MAGTOROM uneingeschränkt empfehlen.

US

Listings:
magtorom.s*

Literatur:
[1] Steve Williams, "68030 Assembly Language Reference", Addison-Wesley Publishing Company, Inc.
[2] Alexander Herzlinger, "Von Speichern und Keksen", ST Magazin 4/92



Aus: ST-Computer 10 / 1994, Seite 80

Links

Copyright-Bestimmungen: siehe Über diese Seite