Frage zum Bus Mastering
-
Laut folgendem Artikel:
http://de.wikipedia.org/wiki/Bus_MasteringGibt eine CPU die Kontrolle über den BUS zweitweise an eine Adapterkarte ab und diese kann dann z.b. Daten schnell und effizient in den Speicher schreiben.
Meine Frage ist nun aber, wie verhindert das Betriebsystem, das ja auf der CPU läuft, daß eine Adapterkarte den falschen Speicherbereich beschreiben kann?
Einige Adapterkarten besitzen ja auch Mikrocontroller, d.h. man könnte auf diese ein Programm einschleusen, welches dann anschließend, sobald die Karte die Kontrolle über den BUS hat, also Busmaster ist, den Speicher überschreibt oder ausliest.
Ist das nicht ein großes Eingangstor für Viren und Trojaner?
-
schieb
-
AFAIK verhindert es das OS aktiv gar nicht. Karten, die ein DMA machen, gehen AFAIK nach wie vor an der CPU und damit MMU vorbei. Situationen, die eine wie von dir vorgestellte Manipulation zulassen wuerden, duerften aber auch extrem selten sein und wuerden bereits weitere Sicherheitsluecken im BS im Zusammenhang mit einzelner bestimmter Hardware oder bestimmten Treibern voraussetzen.
-
man muss einen speicherbereich explizit auf eine addressrange mappen und fuer dem geraet zuweisen. das geraet kann dann entsprechend auch nur in dem bereich schreiben/lesen. dieser bereich muss oft kontinuierlich sein, da die meisten geraete nichts mit pages usw. anfangen koennen.
so kenn ich das jedenfalls von anwenderseite aus.
-
Jo, richtig. So kenne ich das auch: Du gibst dem Geraet einen kontinuierlichen phys. Speicherbereich und reservierst/mapst den in deinem BS entsprechend. Wenn nun boese Schadsoftware kommt und der Hardware irgendwie *am OS vorbei* einen anderen Speicherbereich fuer DMA zuweisen kann, muss schon vorher irgendwas ordentlich schiefgelaufen sein.
-
Ah ok, danke, genau das wollte ich wissen.
-
... was jedoch bösen Code nicht davon abhält, sich im Mikrocontroller deiner Adapterkarte einzunisten.
MfG
t.