Xen: Lokaler Angreifer kann auf Host zugreifen

Eine Sicherheitslücke in Xen hat zur Folge, dass ein lokaler Angreifer höhere
Rechte auf dem Host-System erlangen kann. Zum Durchführen der Attacke
benötigt der Angreifer Kernel-Privilegien auf dem Gastsystem. Hat er diese,
kann er einen Fehler im Speichermanagement ausnutzen, um beliebige Befehle
auf dem Host-System abzusetzen.

Der verantwortliche Programmierfehler befindet sich in der Datei
xen/common/event_channel.c. Hierin ist die get_free_port()-Funktion
fehlerhaft. Ein Patch für diese Funktion wurde kürzlich veröffentlicht und
sieht folgendermassen aus:

--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -104,7 +104,6 @@ static int get_free_port(struct domain *
     if ( unlikely(chn == NULL) )
         return -ENOMEM;
     memset(chn, 0, EVTCHNS_PER_BUCKET * sizeof(*chn));
-    bucket_from_port(d, port) = chn;
     for ( i = 0; i < EVTCHNS_PER_BUCKET; i++ )
     {
@@ -117,6 +116,8 @@ static int get_free_port(struct domain *
         }
     }
+    bucket_from_port(d, port) = chn;
+
     return port;

Der einzige Fix hier besteht darin, den bucket_from_port()-Aufruf erst nach der
For()-Schleife aufzurufen und nicht davor. Mit dieser kleinen Modifikation ist
die Attacke nicht mehr durchführbar und der Angreifer kann keine Befehle mehr
auf dem Host-System ausführen.

Betroffen sind die Versionen 3.2 und älter.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben