Open Source im professionellen Einsatz

Linux Kernel: Root-Rechte über Ping

Eine Sicherheitslücke im Linux Kernel hat zur Folge, dass ein lokaler Angreifer Denial-of-Service-Attacken durchführen kann. Weiter kann der Angreifer auch höhere Rechte auf dem System erlangen und so Befehle mit Root-Rechten ausführen. Ursache ist ein Use-After-Free-Fehler im Speichermanagement der »ping_unhash()«-Funktion. Der Angreifer kann diesen Fehler mit folgenden zwei Schritten auslösen:

  1. Schritt: Durchführen eines SOCK_DGRAM-Socket-Systemaufrufs für das IPPROTO_ICMP- oder IPPROTO_ICMPV6-Protkoll.
  2. Schritt: Durchführen eines connect()-Systemaufrufs nach einem Disconnect.

Der zweite Schritt löst dann den Fehler im Speichermanagement aus. Der Programmierfehler besteht darin, dass in dem Code der »ping_unhash()«-Funktion ein Aufruf von »sk_nulls_node_init(&sk->sk_nulls_node);« fehlt. Der Patch besteht enstprechend lediglich darin diesen einen Aufruf einzufügen. Dadurch ist die Attacke nicht mehr möglich.

Die Attacke ist grundsätzlich nur möglich, falls die Ping-Socket-Funktionalität auf dem System vorhanden ist. Dies lässt sich anhand des »net.ipv4.ping_group_range sysctl«-Wertes prüfen:

# sysctl net.ipv4.ping_group_rangenet.ipv4.ping_group_range = 1 0 

"1 0" ist hier der Standardwert und bedeutet, dass die Ping-Socket-Funktionalität deaktiviert ist. Jeder davon abweichende Wert bedeutet, dass die Funktionalität auf dem System für bestimmte Benutzer zur Verfügung steht. Als schnellen Workaround empfiehlt es sich daher die Funkionalität abzuschalten durch:

sysctl net.ipv4.ping_group_range="1 0"
comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.