Autorisierte SQL Injection in FireEye EX (SYSS-2020-031)

Ein Security Advisory von IT Security Consultant Dr. Benjamin Heß

Übersicht

FireEye EX ist eine Appliance, die zur Detektierung und zum Blocken unerwünschter E-Mails verwendet wird. Die Steuerung der Appliance erfolgt dabei primär über ein Webinterface.

Es wurde festgestellt, dass vom Benutzer kontrollierte Eingaben an mehreren Stellen nicht von der Webanwendung validiert werden. Dadurch lassen sich Datenbankabfragen einschleusen ("SQL Injection") und somit kann ein Zugriff auf Daten der Datenbank erlangt werden.

Um die Schwachstelle ausnutzen zu können, wird autorisierter Zugriff auf die Applikation benötigt. Dabei sind geringe Privilegien ausreichend.
Wird diese Anforderung berücksichtigt und außerdem, dass derartige Appliances üblicherweise in separaten Netzwerkzonen mit beschränktem Zugriff angesiedelt sind, lässt sich das Risiko als "gering" einstufen.

Details

Die Verwundbarkeit tritt auf, wenn man sich am Webinterface anmeldet und die verarbeiteten E-Mails durchsucht. Dabei konnte die Schwachstelle mit folgenden Benutzerrollen erfolgreich ausgenutzt werden: „monitor", „analyst", „operator", „admin".
Die weitere vorhandene Rolle „auditor" hat keinen Zugriff auf die E-Mail-Suche und kann daher die Schwachstelle nicht ausnutzen.

Die Suchanfrage weist gleich mehrere Angriffspunkte für SQL Injection auf, wie etwa die Parameter <sort>, <sort_by, search[URL]> und <search[attachment]>. In den meisten Fällen ist hier eine sogenannte "Time-based Blind Injection" möglich, um Daten zu extrahieren.
Den mächtigsten Angriffsvektor bietet der Parameter <sort>, denn hier ist sogar eine "UNION-based injection" möglich, die sehr effizient Daten extrahieren kann.

Das zugrundeliegende Datenbankmanagementsystem ist Postqres. Die Anfragen an die Datenbank über das Webinterface werden als Datenbankbenutzer "webui" ausgeführt. Dieser Nutzer ist kein Datenbank-Admin. Weiterhin war es im Testzeitraum nicht möglich, sogenannte „Stacked Queries" auszuführen, was weitere Zugriffswege wie zum Beispiel Schreibzugriff ermöglicht hätte.

Proof of Concept (PoC)

Konkret lässt sich die Verwundbarkeit durch den Aufruf folgender URL im Browser auslösen, sofern man sich vorher mit geeigneter Rolle, etwa „monitor", angemeldet hat:
https://targethost.com/ex/message_tracking/messages?
sort=ASC')+UNION+ALL+SELECT+ NULL,usename,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL+FROM+
pg_user--+foo&sort_by=1&offset=0&num=25&search
%5Burl%5D =a&search%5Battachment%5D=a&job_id=1

Die Serverantwort enthält JSON-Objekte. Diese weisen zusätzliche Elemente (im Vergleich zum Fall ohne SQL Injection-Angriff) auf, bei denen das Feld "message_id" jeweils mit dem Namen eines Datenbanknutzers befüllt ist.

Für andere Parameter sind, wie zuvor beschrieben, auf ähnliche Weise Angriffe möglich.

Lösung

Der Hersteller FireEye hat diese Schwachstelle in Version 9.0.1 behoben. Es wird daher empfohlen, falls nötig, ein Update auf diese oder eine spätere Version durchzuführen.

 

Detaillierte Informationen zu der gefundenen Schwachstelle finden Sie in unseren Security Advisories/You will find detailed information about the security issue in our Security Advisory:

Weitere Informationen über unsere Responsible Disclosure Policy bei der Veröffentlichung von Security Advisories finden Sie hier.

You will find further information about our Responsible Disclosure Policy concerning the publishing process of SySS Security Advisories here.

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de | IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Ihr direkter Kontakt zu SySS +49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN +49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer

Direkter Kontakt

+49 (0)7071 - 40 78 56-0 oder anfrage@syss.de

IN DRINGENDEN FÄLLEN AUSSERHALB DER GESCHÄFTSZEITEN

+49 (0)7071 - 40 78 56-99

Als Rahmenvertragskunde wählen Sie bitte die bereitgestellte Rufbereitschaftsnummer