Wie Golem.de berichtet, wurde im Linux Kernel eine Sicherheitslücke gefunden, von der nach Einschätzung der Entdecker alle Kernelversionen der 2.4 und 2.6er Serie für alle Systemarchitekturen, die seit 2001 veröffentlicht wurden, betroffen sind. Ursache für die Sicherheitslücke ist eine Null-Pointer-Dereferenzierung im Zusammenhang mit der Initialisierung von Sockets für selten verwendete Protokolle.
Ein Patch für diese Lücke existiert zur Zeit lediglich nur im Git Repository des offiziellen Linux Kernels. Es dürfte jedoch nicht sehr lange dauern, bis die Linux Distributionen den Flicken auf Ihre Kernels portiert haben und entsprechende Updates ausliefern.
Update: Fedora User, die den vom Fedora Projekt als Binärpaket ausgelieferten Kernel einsetzen, sind offensichtlich von dem Exploit nicht bedroht, da dieses unter Fedora anscheinend nicht funktioniert. Danke an Christoph für den Hinweis.
An dieser Stelle ist wohl der Hinweis angebracht, dass Fedora von dem Exploit nicht betroffen ist, zumindest nicht in seiner Standard-Konfiguration:
$ su -c ’setenforce 0′
$ wunderbar_emporium.sh
runcon: invalid context:
unconfined_u:unconfined_r:initrc_t:s0-s0:c0.c1023: Invalid argument
[+] MAPPED ZERO PAGE!
[+] Resolved selinux_enforcing to 0xffffffff81874374
[+] Resolved selinux_enabled to 0xffffffff815a0a60
[+] Resolved security_ops to 0xffffffff81871b20
[+] Resolved default_security_ops to 0xffffffff815a0080
[+] Resolved sel_read_enforce to 0xffffffff8118934c
[+] Resolved audit_enabled to 0xffffffff8182e804
[+] Resolved commit_creds to 0xffffffff810615c3
[+] Resolved prepare_kernel_cred to 0xffffffff810614a4
[+] got ring0!
[+] detected 2.6 style 4k stacks
[+] Disabled security of : nothing, what an insecure machine!
[+] Got root!
sh-4.0# setenforce 1
sh-4.0# exit
exit
$ wunderbar_emporium.sh
runcon: invalid context:
unconfined_u:unconfined_r:initrc_t:s0-s0:c0.c1023: Invalid argument
UNABLE TO MAP ZERO PAGE!
Der Exploit funktioniert also nur bei deaktiviertem SELinux, auch wenn der Autor was anderes glaubt:
„thanks to Dan Walsh for the great SELinux bypass even on „fixed“ SELinux policies“
Bei mir scheitert der Exploit schon bei der Erkennung von SELinux und zu allem Überfluss braucht das Beispiel auch noch pulseaudio mit SIUD bit:
if (!(fstat.st_mode & S_ISUID) || fstat.st_uid != 0) {
fprintf(stderr, „Pulseaudio is not suid root!\n“);
return 0;
Ist bei Fedora ebenfalls nicht der Fall. Pech gehabt. 🙂