Original-URL des Artikels: https://www.golem.de/news/alte-php-versionen-wenn-deine-sicherheitssoftware-dich-verwundbar-macht-1611-124529.html    Veröffentlicht: 17.11.2016 10:38    Kurz-URL: https://glm.io/124529

Alte PHP-Versionen

Wenn deine Sicherheitssoftware dich verwundbar macht

Deepsec 2016 Sicherheitssoftware macht die Nutzer sicherer - zumindest in der Theorie. Sicherheitsforscher haben gravierende Sicherheitslücken in einer Firewall-Suite von Kerio aufgedeckt - inklusive einer sechs Jahre alten PHP-Version.

Forscher des Unternehmens SEC-Consult haben mehrere Sicherheitslücken in der Sicherheitssuite von Kerio demonstriert. Die Produkte nutzen eine sehr alte Version von PHP, außerdem gibt es mehrere Schwächen im Design der Software. Kerio hat die Sicherheitslücken in der Version 9.1.4 mittlerweile behoben, nur der Webserver läuft weiterhin mit Root-Rechten.

Kerio stellt eine ganze Reihe von sicherheitsrelevanten Produkten her, die unter dem Sammelbegriff Kerio Control zusammengefasst werden. Darunter gibt es als Hardware-Appliance umgesetzte Firewalls, Intrusion-Detection- und Prevention-Systeme (IPS), Anti-Virus-Systeme und VPN. Rund 60.000 Unternehmen sollen nach Angaben des Herstellers Kerio-Produkte nutzen.

Die Sicherheitsforscher René Freingruber und Raschin Tavakoli verwiesen auf der Sicherheitskonferenz Deepsec zunächst darauf, dass viele "Sicherheitsprodukte" selbst zum Teil erhebliche Sicherheitsprobleme aufweisen. Googles Sicherheitsforscher Tavis Ormandy hat zahlreiche Lücken in Virenscannern von Norton, Kaspersky, AVG und Comodo gefunden.

Auch in Produkten der Sicherheitsfirma Fireeye wurden schon mehrfach Sicherheitslücken demonstriert, das Unternehmen ging im vergangenen Jahr gegen einen Sicherheitsforscher juristisch vor, nachdem er seine Erkenntnisse veröffentlichen wollte.

Remote Code Execution im Admin-Interface

Grund genug für die Hacker, sich Produkte des Herstellers Kerio genauer anzuschauen. Kerio verwendet nach Angaben der SEC-Forscher eine sechs Jahre alte, nicht mehr unterstützte Version von PHP (Version 5.2.13), was zu mehreren Fehlern unter anderem im Speichermanagement führte. Die Forscher fanden außerdem eine Anfälligkeit für Remote Code Execution (RCE) in der Kerio-Control-Administrationsoberfläche.

Um diesen Exploit zu triggern, sind jedoch mehrere Schritte notwendig. Bereits im Jahr 2015 hat der Sicherheitsforscher Raschin Tavakoli eine Anfälligkeit für Cross-Site-Scripting, eine Remote Code Execution und eine SQL-Injektion in den Kerio-Produkten gefunden.

Social Engineering gegen Admins

Kerio hatte zum Zeitpunkt der ersten Untersuchung nach Angaben von René Freingruber von SEC Consult bislang nur eine Anfälligkeit für Cross-Site-Scripting (XSS-Lücke) und die SQL-Injektion geschlossen, die Anfälligkeit für Remote Code Execution besteht nach wie vor. Das Team suchte daher nach einer neuen Möglichkeit, diese Sicherheitslücke über das Internet auszunutzen.

Der Angriff richtet sich gegen die Administrationsoberfläche der Softwaresuite und dort gegen Administrator-Accounts. Um einen erfolgreichen Angriff durchzuführen, wird zunächst die interne IP-Adresse der Firewall benötigt. Dazu stellen die Forscher mehrere Angriffsvektoren vor, unter anderem einen IP Adress Leak durch WebRTC, E-Mail-Header, falsch konfigurierte DNS-Server oder andere Information-Disclosure-Sicherheitslücken. Auch Social Engineering sei möglich.

Im nächsten Schritt soll dann überprüft werden, ob die Firewall tatsächlich unter der angegebenen Adresse läuft. Wegen der Same-Origin-Policy (SOP) können die Hacker ihren Angriffscode nicht direkt ausführen, weil diese die Ausführung von Code blockiert, wenn dieser von einer anderen Quelle stammt. Stattdessen laden sie den Code über einen anderen Kanal (Side-Channel-Angriff), um die SOP zu umgehen. Dazu wird der HTML-Code der eigenen Anfrage um den Wert "'KerioIP KerioIP ':4081/ ':4081/ nonauth nonauth nonauth/gfx /kerio_logo.gif " ergänzt. Wenn Kerio Control auf der entsprechenden IP läuft, wird die Callback-Funktion Kerio_not_alive ausgeführt.

Bash-Skript öffnet Remote-Shell

Nach einem erfolgreichen Exploit kann dann der eigentliche Angriff durchgeführt werden: In der Administrationsoberfläche lassen sich neue Firmware-Images einspielen. Die vom Nutzer angegebenen Images werden nicht auf eine gültige Signatur überprüft. Außerdem enthalten die Images ein Bash-Skript, das vom Angreifer manipuliert werden kann. Über dieses Bash-Skript kann der Angreifer dann eine Remote-Shell öffnen und weitere Angriffe ausführen.

Wer Kontrolle über die Administrationsoberfläche hat, kann natürlich ohnehin großen Einfluss auf das System nehmen. Trotzdem ist dies ein valider Angriffsvektor für einen professionellen Angreifer, der versucht, Nutzerdaten über Social Engineering zu gewinnen.

Die NSA macht verschiedenen Berichten zufolge genau das. Zahlreiche große Hacks in den vergangenen Jahren gingen auf Social Engineering zurück, seien es iCloud-Angriffe gegen Prominente oder Clintons Berater John Podesta.

Schwachstelle aus 2014

Die Hacker nutzten außerdem eine Sicherheitslücke in der verwendeten PHP-Version aus (CVE-2014-3515). Diese basiert auf der veralteten Version 5.2.13 und ermöglicht einfachen Nutzern die Umwandlung selbst kontrollierter Daten mit Hilfe der unserialize()-Funktion. Mit unserialize() werden Datenströme in Objekte umgewandelt, nach Angaben der Sicherheitsforscher eine häufige Quelle von Speicherfehlern.

CVE-2014-3515 nutzt eine Type-Confusion-Sicherheitslücke aus, die dann genutzt wird, um einen Use-After-Free-Speicherfehler zu erzeugen, um schließlich beliebigen Code auszuführen. Bei einer Use-After-Free-Lücke wird ein vom Angreifer kontrollierter Speicherbereich im Programmspeicher (Heap) freigegeben, was dann weitere Angriffe ermöglicht. Bei einer Type-Confusion prüft der Programmcode ein übergebenes Objekt nicht korrekt, Angreifer können hierdurch Speicherbereiche gezielt manipulieren und in einigen Fällen Code ausführen.

Das Sicherheitsproblem liegt in der variablen var_hash. Diese speichert Hashwerte, setzt aber den Reference Count nicht wie nötig hoch. Die Sicherheitsforscher nutzen diese Schwachstelle aus, um zwei Variablen mit gleichem Hashwert zu erzeugen. Das führt dann in einem weiteren Schritt dazu, dass der von der ersten Variable belegte Speicherbereich freigegeben wird.

Der Exploit der Lücke ist nicht trivial, weil Kerio Techniken wie Adress Space Layout Randomization (ASLR) einsetzt, die aber von dem SEC-Team umgangen werden konnten. Mit ASLR werden Objekte in zufällige Speicherbereiche platziert, um Angriffe zu erschweren. In einem letzten Schritt musste der als Read-only markierte Heap-Speicher (Programmspeicher) per Return-Oriented-Programming (ROP) als ausführbar gekennzeichnet werden. Beim ROP wird der Aufrufstack manipuliert, um bestimmten Code auszuführen und Sicherheitstechniken wie die Datenausführungverhinderung (Dep) zu umgehen.

Versionen vor 9.1.4 sind betroffen

Der Hersteller hat einige der Lücken gepatcht. Alle Kerio-Control-Versionen vor Version 9.1.4 sind von den gezeigten Angriffen betroffen. Einige der Probleme betrachte der Hersteller gar nicht erst als Sicherheitslücke, etwa die Tatsache, dass der Webserver als Root läuft und dass Administratorenaccounts für eine Remote Code Execution anfällig seien.

Freingruber und Tavakoli empfahlen Herstellern, gerade von Sicherheitsprodukten, Probleme an der Wurzel zu lösen und nicht nur Symptome zu bearbeiten. Kerio hat auch mit den neuen Updates noch keine neue PHP-Version eingeführt, sondern nur einige Function-Calls entfernt, um den aktuellen Exploit zu verhindern. Damit ist das Unternehmen nicht allein, zahlreiche Anbieter von Enterprise-Software arbeiten mit veralteten Komponenten.

Nachtrag vom 17. November 2016, 14:59 Uhr

Kerio hat uns auf das aktuelle Update 9.1.4 hingewiesen, in dem die beschriebenen Sicherheitslücken geschlossen wurden. Der Webserver läuft weiterhin mit Root-Rechten, dazu teilt das Unternehmen Folgendes mit: "Vor einigen Jahren wurde es als best-practice angesehen, den Zugriff der Server-Applikationen zu beschränken, weil verschiedene Business-Dienste wie Mail, Datenbank und Firewall auf einem Server laufen. Als Sicherheitsfeature hat Kerio sich entschlossen, Kerio Control als eigenständigen Server laufen zu lassen. Ein Administrator wäre mit eingeschränkten Rechten nicht in der Lage, den Dienst sachgemäß zu verwalten." Außerdem solle ein ungesicherter Zugriff auf die Admin-Oberfläche generell unterbunden werden.

Wir haben zu Beginn des Artikels einen Hinweis auf die gefixten Sicherheitslücken eingefügt.  (hg)


Verwandte Artikel:
Mailserver: Starttls führt eingeschleuste Befehle aus   
(08.03.2011, https://glm.io/81966 )
Fluggastdaten: Regierung dementiert Hackerangriff auf deutsches PNR-System   
(10.03.2018, https://glm.io/133261 )
ROBOT-Angriff: Arbeitsagentur nutzt uralte Cisco-Geräte   
(09.03.2018, https://glm.io/133258 )
Bpfilter: Linux-Kernel könnte weitere Firewall-Technik bekommen   
(22.02.2018, https://glm.io/132933 )
Cloud Computing: AWS und Google hosten die iCloud, bestätigt Apple   
(26.02.2018, https://glm.io/133003 )

© 1997–2019 Golem.de, https://www.golem.de/