Linux-Kernel 2.6: Dreimal Denial-of-Service-Attacke

Im Linux-Kernel 2.6 sind kürzlich gleich drei Schwachstellen aufgetaucht. Eine davon kann ein entfernten Angreifer ausnutzen, um das System zum Absturz zu bringen. Bei den anderen beiden muss der Angreifer lokal in die Maschine eingeloggt sein, um die DoS-Attacke ausführen zu können.

Die Remote-Schwachstelle befindet sich im IPv6-Subsystem des Kernels, und zwar in dem Code, der für das IPv6-Netfilter-Connection-Tracking zuständig ist. Hier kann ein Angreifer durch das Senden geschickter Netzwerkdaten den Crash herbeiführen. Die Attacke ist allerdings nur auf IPv6-Systemen mit geladenem Kernelmodul “nf_conntrack_ipv6” möglich. Ursache für die Schwachstelle ist ein Null-Zeiger-Dereferenz-Fehler in der Funktion “f_ct_frag6_reasm()” inder Quelltextdatei “net/ipv6/netfilter/nf_conntrack_reasm.c”.

Die zweite Schwachstelle befindet sich im Session-Keyring-Code des Kernels. Hier kann ein lokaler Angreifer einen Programmierfehler in der Funktion “copy_creds()” der Quelltextdatei “kernel/cred.c-Datei” ausnutzen, um das System zum Absturz zu bringen. Das Patch für dieses Problem ist minimal und besteht lediglich darin,

p->replacement_session_keyring = NULL;

am Anfang der Funktion einzufügen.

Eine dritte Sicherheitslücke wurde in dem Subsystem Kernel Event Poll (epoll) entdeckt. Hier tritt ein Fehler beim Behandeln von “ELOOP”-Fehlercodes auf. Ein lokaler Angreifer kann auch diese Lücke ausnutzen, um das System zum Absturz zu bringen. Der Programmierfehler befindet sich in der Funktion “SYSCALL_DEFINE4()” in der Datei “fs/eventpoll.c”. Hier sind die folgende Zeilen hinzuzufügen, um den “ELOOP”-Fall korrekt zu behandeln:

if (ep_loop_check(ep, tfile) != 0) { clear_tfile_check_list(); goto error_tgt_fput;
}

Von allen drei Schwachstellen sind die Kernelversionen 2.6.x betroffen.

Nach oben