Gravierende Schwachstelle im Linux-Tool ImageMagick

Ein Fachbeitrag von IT-Security Consultant Dr. Adrian Vollmer

Gravierende Schwachstelle im Linux-Tool ImageMagick

Ein Fachbeitrag von IT-Security Consultant Dr. Adrian Vollmer

Am 3. Mai 2016 wurde die Existenz mehrerer Schwachstellen in ImageMagick bekanntgegeben, die es einem Angreifer unter anderem erlauben, durch das Hochladen einer Bilddatei beliebige Befehle auf dem Zielsystem auszuführen. Nur wenige Stunden später wurde ebenfalls bekanntgegeben, wie sich die Schwachstelle ausnutzen lässt. Gefunden wurden die Schwachstellen von den Sicherheitsforschern "Stewie" und Nikolay Ermishkin. Im Zusammenhang mit diesen Schwachstellen kursiert bereits der Bezeichner "ImageTragick".

Was ist ImageMagick?

ImageMagick ist eine weitverbreitete Linux-Tool-Sammlung, die sich gut dafür eignet, Bilder in automatisierter Weise zu bearbeiten. Sie wird daher oft auf Webservern eingesetzt, um beispielsweise von Benutzern hochgeladen Bilder in andere Formate zu konvertieren oder zu Thumbnails zu reskalieren. Viele Frameworks, CMS-Plugins und Bibliotheken greifen auf dieses Tool zurück. Auch Typo3 ist so angreifbar, wie die SySS GmbH verifiziert hat.

Wie funktioniert die Schwachstelle?

ImageMagick unterstützt sehr viele verschiedene Bildformate. Zwei davon, svg und mvg, bringen teilweise sehr mächtige Funktionen mit, die die Ausführung von Systembefehlen notwendig machen. Weil ImageMagick dabei nicht immer Dateinamen auf Korrektheit prüft, können Angreifer so ihre eigenen Befehle einschleusen.

Dabei ist es unerheblich, welche Endung der Name der zu bearbeitenden Bilddatei hat. ImageMagick bestimmt den Dateityp nicht anhand der Dateiendung, sondern mittels den sogenannten Magic Bytes. Hierbei handelt es sich um die ersten Zeichen am Beginn der Datei.

Wer ist betroffen?

Betroffen sind potenziell alle Linux-Webserver, die hochgeladene Bilddateien automatisch bearbeiten. Um einen Server zu testen, kann man auf dem Server eine Datei mit dem untenstehenden Inhalt erstellen und danach den darauffolgenden convert-Befehl ausführen. Läuft auf dem Server eine verwundbare ImageMagick-Version, erscheint in der Ausgabe das Wort "BETROFFEN".

ERROR: Content Element with uid "1698" and type "parsedown_markdown" has no rendering definition!

Wie kann ich mich als Betreiber eines Webservers schützen?

ImageMagick in der Version 6.9.3-9 sollte das Problem eigentlich beheben, ist aber offenbar immer noch verwundbar.

Unabhängig von einem noch ausstehenden Patch ist es empfehlenswert, grundsätzlich nur Bilddateien an convert zu übergeben, die tatsächlich auch Bilder sind, was sich nur anhand der Magic Bytes prüfen lässt. Diese empfehlenswerte Prüfung geschieht häufig bereits beim Upload des Bildes durch einen Benutzer, aber eben nicht immer. Für die Prüfung sollte außerdem kein ImageMagick-Tool wie identify verwendet werden, da dieses ebenfalls verwundbar ist.

Der folgende Bash-Befehl prüft auf korrekte und sichere Weise, ob es sich um eine JPEG-Datei handelt oder nicht:

ERROR: Content Element with uid "1700" and type "parsedown_markdown" has no rendering definition!

Alternativ kann das Tool file verwendet werden.

Zusätzlich ist darauf zu achten, auch in der Policy-Datei von ImageMagick (für gewöhnlich /etc/ImageMagick/policy.xml) die verwundbaren Funktionen abzuschalten. Eine Beispielkonfiguration lautet:

ERROR: Content Element with uid "1702" and type "parsedown_markdown" has no rendering definition!

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