ImageMagick-Schwachstellen in Node.js entschärfen
6. Mai 2016
0 Min. LesezeitAnfang dieser Woche wurden mehrere schwerwiegende und trivial auszunutzende Schwachstellen in ImageMagick offengelegt. Sie werden nachweislich bereits aktiv ausgenutzt. Da es noch keine offizielle Fehlerbehebung gibt, haben wir das Paket imagemagick-safe entwickelt. Es deaktiviert die verwundbaren Funktionen und schützt so vor den bekannten Exploits.
Kurzfassung
ImageMagick ist eine äußerst beliebte Bibliothek und Binärdatei zur Bildbearbeitung. Sie wird unter anderem häufig zur Verarbeitung nutzergenerierter Inhalte eingesetzt, etwa für Profilbilder, Produktfotos oder die Anzeige von Bildern in sozialen Netzwerken.
Anfang dieser Woche wurden mehrere schwerwiegende und leicht auszunutzende Schwachstellen in ImageMagick offengelegt. Eine offizielle Fehlerbehebung gibt es noch nicht. Die Risiken lassen sich jedoch mindern, indem bestimmte Funktionen deaktiviert werden.
In Node.js wird ImageMagick hauptsächlich über das npm-Paket imagemagick aufgerufen. Dieses Paket wurde seit über zwei Jahren nicht aktualisiert und wird daher wahrscheinlich nicht zur Behebung des Problems beitragen.
Zum Schutz von Node.js-Nutzern von ImageMagick haben wir das eigens dafür entwickelte npm-Paket imagemagick-safe veröffentlicht, das die verwundbaren Funktionen deaktiviert. Außerdem haben wir eine Pull-Request mit dieser Änderung im GitHub-Repository des Pakets imagemagick eingereicht. Da das Repository jedoch inaktiv ist, rechnen wir nicht damit, dass sie übernommen wird.
ImageTragick – Hintergrund
Die offengelegten Schwachstellen sind aus drei Gründen besonders bemerkenswert:
Einige der Schwachstellen sind äußerst schwerwiegend: Angreifer können damit Befehle auf dem Server ausführen, Serverdateien offenlegen und mehr.
Die Schwachstellen lassen sich trivial ausnutzen. Eine eigens präparierte Bilddatei und eine einzige HTTP-Anfrage genügen.
Es gibt weiterhin keine offizielle Fehlerbehebung.
Die Schwachstellen werden nachweislich bereits aktiv ausgenutzt.
Der gesamte Vorfall wird als ImageTragick bezeichnet. Weitere Informationen zu den Schwachstellen finden Sie auf der eigens eingerichteten Website imagetragick.com.
Ursache und Maßnahmen
Nach bisherigem Kenntnisstand hängen alle Schwachstellen mit der Verarbeitung bestimmter Bilddateiformate und Schlüsselwörter wie MVG, URL und HTTPS zusammen. Die Dateiformate unterstützen interne Aktionen (z. B. das Einbinden eines anderen Bildes). Diese Aktionen werden bei der Verarbeitung nicht ausreichend bereinigt, sodass Angreifer aus der Ferne Befehle ausführen können. Hier sehen Sie ein Beispiel für einen Exploit, das von der offiziellen Website zu den Schwachstellen übernommen wurde:
Beispiel: exploit.svg
Beispielausführung
Die Unterstützung dieser Formate und Schlüsselwörter lässt sich deaktivieren, indem Sie die (optionale) Konfigurationsdatei policy.xml von ImageMagick bearbeiten und den folgenden Inhalt einfügen. Dadurch wird zwar tatsächlich ein Teil der Funktionalität entfernt, die Schwachstellen werden aber ebenfalls behoben. Beachten Sie, dass die Bearbeitung der Richtlinie nicht garantiert alle möglichen Exploits verhindert. Die Sicherheitsforscher geben jedoch an, dass sie alle ihnen derzeit bekannten Exploits blockiert.
Das npm-Paket imagemagick-safe
Da das primäre Paket imagemagick nicht aktiv weiterentwickelt wird, haben wir ein neues Paket namens imagemagick-safe erstellt.
Dieses Paket erzwingt die Verwendung der oben beschriebenen Richtlinie. Dadurch werden Funktionen deaktiviert und gleichzeitig die Schwachstellen beseitigt. Wir empfehlen Ihnen, es so lange zu verwenden, bis neue ImageMagick-Binärdateien veröffentlicht wurden und Sie bestätigt haben, dass Ihre Systeme aktualisiert sind.
Sie können ImageMagick auch über das Paket gm verwenden. Wir prüfen, ob wir dort ebenfalls eine Pull-Request einreichen.
Wenn Sie Probleme feststellen oder sonstiges Feedback zu diesem Paket haben, schreiben Sie uns bitte an support@snyk.io.
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.