Ich habe gerade einen Speichertest auf meinem Laptop durchgeführt (vom Hersteller, mitals Dienst in Windows 10 Pro) und mir ist aufgefallen, dass sie behaupten, tatsächlich den gesamten Speicher im System testen zu können (wofür das Lesen und Schreiben des Speichers erforderlich ist).
In modernen Systemen erhalten Anwendungen jedoch nie „echten“ Speicher, sondern ein virtuelles Speicherabbild (sie denken im Wesentlichen, sie hätten Zugriff auf das gesamte System, aber in Wirklichkeit handelt es sich um ein virtuelles Speicherabbild). Daher sollte es (sofern keine Fehler vorliegen) für eine Anwendung unmöglich sein, auf den von einer anderen Anwendung verwendeten Speicher zuzugreifen.
Angenommen, diese Speichertestprogramme funktionieren tatsächlich und lügen mich nicht an. Wenn also davon ausgegangen wird, dass sie wirklich den gesamten Speicher im System lesen und schreiben können, um ihn zu testen, wie kann das dann kein Sicherheitsproblem sein? Ganz zu schweigen von dem Problem, dass eine Windows-Anwendung den Speicher testet, den sie selbst zum Ausführen verwendet.
Was übersehe ich hier?
Danke!
Antwort1
[...] es sollte (sofern keine Fehler vorliegen) für eine Anwendung unmöglich sein, auf den von einer anderen Anwendung verwendeten Speicher zuzugreifen.
WAHR,es sei denn, die Anwendung verfügt über die erforderlichen Berechtigungen. Auf den meisten Systemen können die Speicherzugriffsbeschränkungen mit speziellen Berechtigungen umgangen werden, da es einige legitime Verwendungszwecke für den Zugriff auf eingeschränkten Speicher gibt, z. B. zum Debuggen. Unter MS Windows gibt es beispielsweise die Funktionen ReadProcessMemory()
und WriteProcessMemory()
, um dies zu tun. Sie erfordern jedoch spezielle Berechtigungen, um zu funktionieren (siehe z. B.Wie erhöhe ich die Berechtigungen für den Speicherzugriff in einem Speichereditor?für Details).
Daher läuft der Dienst vermutlich mit Administratorrechten oder ähnlichen Berechtigungen.
Wenn man also davon ausgeht, dass der gesamte Speicher im System wirklich gelesen und geschrieben werden kann, um ihn zu testen, wie kann das kein Sicherheitsproblem darstellen?
Wenn der Dienst über die entsprechenden Berechtigungen zum Lesen des gesamten Speichers verfügt, stellt dies aus Sicht des Betriebssystems kein Sicherheitsproblem dar – der Dienst wurde bei der Installation autorisiert (von Ihnen oder dem Hersteller). In der Praxis kann es dennoch ein Sicherheitsproblem darstellen, wenn der Dienst Sicherheitslücken aufweist (z. B. eine Sicherheitslücke bei der Remotecodeausführung), aber das hängt vom Dienst ab (wie bei jedem Dienst, der mit erhöhten Berechtigungen ausgeführt wird).
Vermutlich funktionieren diese Gedächtnistestprogramme tatsächlich und lügen mich nicht an,
Das ist nicht selbstverständlich – Softwareanbieter verdrehen manchmal die Wahrheit, genau wie jeder andere auch. Es erscheint mir fragwürdig, dass ein Dienst in der Lage sein sollte, den Speicher auf einem laufenden System unabhängig von Berechtigungsproblemen zu testen – wie kann der Dienst den verwendeten Speicher testen, ohne andere Software zu beeinträchtigen? Vielleicht haben sie das geschafft, oder vielleicht testet der Dienst nur den Speicher, der derzeit nicht verwendet wird, oder testet nur Lesevorgänge … das ist ohne Analyse unmöglich herauszufinden.
Wie in den Kommentaren erwähnt, sind die üblichen Speichertestprogramme, wie der BIOS-Speichertest oderMemtest86, werden direkt nach dem Booten ausgeführt, ohne dass ein Betriebssystem geladen werden muss, und zwar genau deshalb, weil sie vollen und exklusiven Zugriff auf Speicher und CPU erhalten.