Autor Thema: Supervisor Mode Execution Protection  (Gelesen 4525 mal)

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« am: 08. June 2011, 11:55 »
Hallo,


aus aktuellem Anlass reaktiviere ich mal diesen Thread, ein eigenes Thema erscheint mir da unnötig.


In der c't kann man folgendes lesen (http://www.heise.de/ct/artikel/Prozessorgefluester-1252938.html) :
Zitat
.... noch Intels neuestes Sicherheitsfeature namens SMEP (Supervisor Mode Execution Protection) beizubringen, das in der nächsten Prozessorgeneration Ivy Bridge eingebaut sein wird. Damit kann man verhindern, dass Code im ungeschützten User-Bereich aus dem Supervisor Mode (Ring 0) heraus ausgeführt wird. Solche Callbacks sind nämlich willkommene Haken für bösartige Software, um sich dort einzuklinken und sich Supervisorrechte zu erschleichen.

Allzu schwierig dürfte so etwas nicht sein, früher einmal hätte man das mit den Segmenten des Protected Mode wohl auch hinbekommen, aber dieser bereits mit dem 286-Prozessor eingefügte Modus ist inzwischen bei fast allen Betriebssystemen im Abfalleimer obsoleter Technologien gelandet. Bezüglich Sicherheit war der Protected Mode dem flachen Adressiermodell mit Paging, das sich nunmehr durchgesetzt hat, deutlich überlegen. Und so muss man wie mit No Execute oder jetzt SMEP eben nachbessern.
Ich bin mir jetzt zwar nicht sicher ob man mit den x86-PM-Segmenten wirklich verhindern kann das Ring-3-Code mit Ring-0-Rechten ausgeführt wird aber das man solche Dinge bei Paging immer erst noch dranflicken muss ist schon wahr. Paging wurde einst zur virtuellen Speichermehrung ersonnen (damals war echter Speicher noch teuer) und nicht zur Speicherverwaltung, für erstes ist Paging auch wirklich hervorragend gut geeignet aber für letzteres eben nicht.


Wollte ich nur mal so loswerden, es muss sich niemand genötigt fühlen hierauf zu antworten.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 08. June 2011, 12:21 »
Vielleicht liegt es nur an den Begriffen, nicht an dem, was du aussagen willst: Aber für Speicherverwaltung ist Paging genau das, was man will. Für Speicherschutz kann man drüber diskutieren.

Ich bin mir jetzt zwar nicht sicher ob man mit den x86-PM-Segmenten wirklich verhindern kann das Ring-3-Code mit Ring-0-Rechten ausgeführt wird
Zum einen bist du in Ring 3, wenn du ein Ring3-cs hast. Zum anderen musst du erstmal in das Ring-3-Codesegment reinspringen und das geht aus Ring 0 nicht mit einem einfachen call. Dafür müssen beide Segmente dieselbe Privilegstufe haben, oder du musst halt über Dinge wie Call/Task Gates gehen. (Conforming Code Segments gibt es auch noch, aber die sind in die andere Richtung - also Ring-0-Code in mit Ring-3-Rechten ausführen)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 08. June 2011, 17:48 »
Ich habe beschlossen, dass ein neues Thema nötig ist. Wir haben noch Themen von 2010 auf der ersten Seite. Das muss bis zum nächsten Jahreswechsel anders werden!

Edit: Ach Mist. Die letzte Antwort zu dem Thema war auch von 2010. Da hat meine Aktion ja gar nichts gebracht...
« Letzte Änderung: 08. June 2011, 17:52 von PorkChicken »
Dieser Text wird unter jedem Beitrag angezeigt.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 08. June 2011, 19:13 »
Hallo,


Achja richtig, wimre sollte bei CS  eigentlich CPL == DPL und nicht nur CPL <= DPL sein. Oder sind meine x86-Kenntnisse jetzt völlig eingerostet?
Also baut Intel demnächst eine Sicherheit ein die eigentlich seit fast 30 Jahren in jedem x86 schlummert, schon irgendwie krass und sollte uns eigentlich zu denken geben.


@PorkChicken:
Dann lasst doch einfach mal ein paar der Spam-Treads stehen, zum einen wird dann das Durchschnittsalter der Threads etwas jünger und zum anderen haben wir dann hier etwas mehr zu lachen.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 08. June 2011, 19:25 »
Achja richtig, wimre sollte bei CS  eigentlich CPL == DPL und nicht nur CPL <= DPL sein. Oder sind meine x86-Kenntnisse jetzt völlig eingerostet?
Passt schon so. Genau das habe ich ja oben gesagt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen