Exim: CVE-2019-15846 Root-Exploit und die Abwehr

So, es ist wieder soweit, wir stopfen den Exim gegen CVE-2019-15846. Diese Lücke beinhaltet einen eher ungewöhnlichen Angriffsvektor, jedenfalls für mich. Aus der Richtung hätte ich nicht mit Problemen gerechnet.

CVE-2019-15846: Root-Exploit durch SNI

Was ist das Problem werdet Ihr fragen? Schon mal was von TLS gehört? Nein? Nagut 😉 Das ist der Nachfolger von SSLv3 und wurde 1998 ins Leben gerufen um primär ein Problem zu lösen: Für SSLv3 braucht jede Domain, die das benutzen wollte, eine eigene IP auf dem Server, weil es nicht möglich war, das Cert passend zur aufgerufenen Domain auszuwählen.

Dies wurde durch SNI in TLS 1.0 behoben, so daß Webserver jetzt alle verschlüsselt erreichbaren Domains auf einer einzigen IP hosten konnten. Dazu gibt der Client, dem Web/ oder Mailserver mit, für welche Domain er eine Verbindung aufbauen möchte, bevor die Verbindung wirklich aufgebaut wird.

Genau da liegt das Problem

Der per SNI übergebene Domainname landet beim Exim derzeit ungeprüft im Filesystem und wenn etwas ungeprüft im Filesystem landet, kann man damit einiges anstellen, in diesem Fall Root werden. Das ist eine stark vereinfachte Darstellung, weil ich will ja nicht, daß Ihr Euch daraus einen eigenen Exploit baut 😉

Die Gegenmaßnahme

Mal von den bereits verfügbaren Update-Patchen abgesehen, kann man den Angriff dadurch erschweren, daß man die zum Angriff nötigen Zeichen im SNI blockiert.

Das geht so :

acl_check_mail:

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
       message = no invalid SNI for you

deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
       message = no invalid tls strings for you

Es wird aber empfohlen das Update einzuspielen, weil nicht ausgeschlossen werden kann, daß dies nicht ausreicht um die Lücke dauerhaft zu schließen.

Für den derzeit bekannten Angriffsvektor gibt es bereits einen Proof-of-Concept Exploit, daher solltet Ihr sehr schnell handeln und noch schneller Updaten!

Fedora patzt beim Update

Das ist dem schnell Updaten wird für Redhat und Fedora Benutzer ein Problem werden, denn es gibt noch keine Updates. Fedora/Redhat hat es komplett verpennt, obwohl ich dem Maintainer höchstselbst eine Headsup Notitz gemailt habe und auf einer von den Distros überwachten Liste, eine entsprechende Nachricht eingegangen ist. Da haben ich und Golem das ja auch her gehabt. Heise Sec meinte, es würde reichen, wenn man das CERT bei Twitter abboniert hat.. ne sorry, reicht nicht 😀

Dann fixt jetzt mal eure Server, mein Cluster ist damit schon durch.

1. Update: 14:48

Wie aus sicherer Quelle bekannt wurde, hat Redhat eine „Urlaubsvertretung“ mit dem Problem betraut, da der Maintainer nicht zur Verfügung steht derzeit, er ist im Urlaub. Ob das die Ursache ist, daß es noch keine Updates gibt, weiß man nicht sicher, aber im Bereich des möglich wärs ja 😉 Sorry Fedora, aber ein bisschen Spot muß sein, ich sehe nämlich immer noch keine Pakete im Buildsystem bauen …

2. Update: 17:11

Das Update von Exim hat jetzt bei Fedora den Status „dringend“/“urgent“ .

3. Update: 18:20

TestRPMs sind verfügbar:

https://kojipkgs.fedoraproject.org//packages/exim/4.92.2/1.fc29/x86_64/exim-4.92.2-1.fc29.x86_64.rpm https://kojipkgs.fedoraproject.org//packages/exim/4.92.2/1.fc29/x86_64/exim-mysql-4.92.2-1.fc29.x86_64.rpm https://kojipkgs.fedoraproject.org//packages/exim/4.92.2/1.fc29/x86_64/exim-clamav-4.92.2-1.fc29.x86_64.rpm

4. Update: 19:01

Die RPMs wurden ins Stable gepusht. Damit gehen die Updates jetzt für alle live.

Danke an alle Helfer, Urlauber, Urlaubsunterbrecher und Vertretungen, die es heute Nachmittag dann doch noch geschafft haben und besonders an Heiko Schlittermann, mit dem ich noch die Eckpunkte des Workarounds diskutieren konnte, bevor es offiziell wurde.

Root-Exploit im TCP/IP Stack – CVE-2016-8655

Im Linux Kernel klafft die nächste Root-Lücke, diesmal im Netzwerkbereich, dem TCP/IP Stack.

Die Lücke können nur lokale Prozesse ausnutzen, i.d.R. braucht es daher eine weitere Sicherheitslücke z.b. im Browser oder einen angemeldeten Benutzer.  Das Ganze betrifft somit „eigentlich“ nur Server.

Updates gibt es derzeit für Fedora noch keine. Der neuste Kernel 4.8.12-200 vom 2.12. behebt das Problem  noch nicht, trotzdem sollte man den schon einspielen, denn wie man sieht, behebt er andere Securityprobleme:

* Fr Dez 02 2016 Justin M. Forbes <jforbes@fedoraproject.org> – 4.8.12-200
– Linux v4.8.12
– CVE-2016-9755 Fix Out-of-bounds write issue when defragmenting ipv6 packets (rhbz 1400904 1400905)
– CVE-2016-9756 Fix kvm: stack memory information leakage (rhbz 1400468 1400469)
– Fix kvm: out of bounds memory access via vcpu_id (rhbz 1400804 1400805)

Ubuntu stellt als erster gepatchte Kernel bereit, muß man auch mal lobend erwähnen.

Den Exploit für Ubuntu gibt es hier:

Linux Kernel 4.4.0 AF_PACKET Race Condition / Privilege Escalation

Wie man im Source lesen kann, hat sich der Autor auch schon an Fedora 25 probiert, es aber wieder auskommentiert.

Die nächste Sicherheitslücke klafft übrigens im Android Kernel, da können alle bekannten Android Versionen ab 4.4.4 von außen komplett übernommen werden. Erste Patche sind zwar schon bei den Herstellern verfügbar, aber wann die #1 Samsung, das Update bereitstellt, steht in den Sternen 🙁

Hier mal die Liste der von Google genannten Schwachstellenreports, die damit zusammen hängen, einige sind schon zwei Jahre alt :

CVE-2016-9120: Schwachstelle in Kernel ION Subsystem ermöglicht komplette
CVE-2016-8411: Schwachstellen in Qualcomm Komponenten ermöglichen komplette
CVE-2016-8410: Schwachstelle in Qualcomm Audiotreiber ermöglicht Ausspähen
CVE-2016-8408 CVE-2016-8409: Schwachstellen in NVIDIA Grafiktreiber
CVE-2016-8401 CVE-2016-8402 CVE-2016-8403 CVE-2016-8404 CVE-2016-8405
CVE-2016-8406 CVE-2016-8407: Schwachstellen in Kernelkomponenten ermöglichen
CVE-2016-8400: Schwachstelle in NVIDIA Grafikbibliothek ermöglicht Ausspähen
CVE-2016-8399: Schwachstelle im Netzwerk-Subsystem ermöglicht komplette
CVE-2016-8397: Schwachstelle in NVIDIA Grafiktreiber ermöglicht Ausspähen
CVE-2016-8396: Schwachstelle in MediaTek Grafiktreiber ermöglicht Ausspähen
CVE-2016-8395: Schwachstelle in NVIDIA Kameratreiber ermöglicht
CVE-2016-8393 CVE-2016-8394: Schwachstellen im Synaptics Touchscreen-Treiber
CVE-2016-6915 CVE-2016-6916 CVE-2016-6917: Schwachstellen im NVIDIA
CVE-2016-6791 CVE-2016-8391 CVE-2016-8392: Schwachstellen im Qualcomm
CVE-2016-6789 CVE-2016-6790: Schwachstellen in NVIDIA Grafikbibliothek
CVE-2016-6788: Schwachstelle im MediaTek I2C-Treiber ermöglicht komplette
CVE-2016-6786 CVE-2016-6787: Schwachstellen im Performance-Subsystem
CVE-2016-6778 CVE-2016-6779 CVE-2016-6780: Schwachstellen im HTC
CVE-2016-6775 CVE-2016-6776 CVE-2016-6777: Schwachstellen in NVIDIA
CVE-2016-6774: Schwachstelle in Package Manager ermöglicht Ausspähen von
CVE-2016-6773: Schwachstelle in Mediaserver ermöglicht Ausspähen von
CVE-2016-6772: Schwachstelle in Wi-Fi ermöglicht Ausführen beliebigen
CVE-2016-6771: Schwachstelle in Telephony ermöglicht Privilegieneskalation
CVE-2016-6770: Schwachstelle in Framework API ermöglicht
CVE-2016-6769: Schwachstelle in Smart Lock ermöglicht Privilegieneskalation
CVE-2016-6768: Schwachstelle in Bibliothek Framesequence ermöglicht
CVE-2016-6767: Schwachstelle in Mediaserver ermöglicht
CVE-2016-6765: Schwachstelle in Mediaserver ermöglicht
CVE-2016-6764 CVE-2016-6766: Schwachstellen in Mediaserver ermöglichen
CVE-2016-6763: Schwachstelle in Telephony ermöglicht
CVE-2016-6762: Schwachstelle in libziparchive ermöglicht Ausführung
CVE-2016-6758 CVE-2016-6759 CVE-2016-6760 CVE-2016-6761: Schwachstellen in
CVE-2016-6756 CVE-2016-6757: Schwachstellen in Qualcomm Komponeten
CVE-2016-6755: Schwachstelle in Qualcomm Kamera-Treiber ermöglicht
CVE-2016-6492 CVE-2016-6781 CVE-2016-6782 CVE-2016-6783 CVE-2016-6784
CVE-2016-6785: Schwachstellen in MediaTek-Treiber ermöglichen Ausführung
CVE-2016-5341: Schwachstelle in Qualcomm GPS-Komponente ermöglicht
CVE-2015-8967: Schwachstelle in Kernel ermöglicht Ausführung beliebigen
CVE-2015-8966: Schwachstelle in Kernel ermöglicht Ausführung beliebigen
CVE-2014-9909 CVE-2014-9910: Schwachstellen in Broadcom Wi-Fi-Treiber
CVE-2016-5195: Schwachstelle in Linux-Kernel ermöglicht Erlangen von
CVE-2016-5421: Schwachstelle in cURL ermöglicht Ausführung beliebigen
CVE-2016-5420: Schwachstelle in cURL ermöglicht Umgehen von
CVE-2016-5419: Schwachstelle in cURL ermöglicht Umgehen von
CVE-2016-4794: Schwachstelle in Linux-Kernel ermöglicht
CVE-2015-7872: Schwachstelle in Linux-Kernel erlaubt
CVE-2014-4014: Schwachstelle im Linux-Kernel ermöglicht