
Ist es einem Benutzer möglich, sein eigenes Programm im Kernelmodus auszuführen? Wie könnte ein Benutzer dies erreichen? Welche Schwachstelle im Schutzmechanismus des Systems müsste er umgehen?
Ich denke, dass ein Benutzerprogramm das Modusbit im Interrupt-Vektor vom Benutzermodus in den Kernelmodus umschalten und dann alle gewünschten Interrupt-Handler ausführen kann. Bin ich auf dem richtigen Weg?
Antwort1
Benutzer können im Kernelmodus keinen eigenen Code ausführen. Der Kernelmodus gibt dem Programm die Kontrolle über jeden Aspekt der Maschine (der virtuellen Maschine, falls es sich um eine handelt). Das Ausführen von Code im Kernelmodus würde alle Sicherheitsmaßnahmen umgehen.
Sie können Code im Kernelmodus ausführen, indem Sie ein Modul laden. Natürlich kann nur root ein Modul laden (und dies kann für bestimmte statische, hochsichere Konfigurationen deaktiviert werden).
Ich weiß nicht, was Sie mit „ein Benutzerprogramm kann das Modusbit im Interrupt-Vektor vom Benutzermodus in den Kernelmodus umschalten“ meinen. Benutzerprogramme haben keine Kontrolle über den Interrupt-Vektor, das behält der Kernel für sich.
Antwort2
Sie können den Systemaufruf einhängen und onc hinzufügen, das wird Ihr Programm sein. Ihr Programm führt es im Kernelmodus aus. Um "Systemaufruf" hinzuzufügen, müssen Sie der Datei /boot/system.map-kernel version eine Zeile hinzufügen, um Ihre Kernelversion /proc/version zu finden. Das LKM-Tool kann Ihnen dabei helfen.