Vor einigen Tagen wurde ein Exploit publik gemacht, der es erlaubt das Software-Paket ImageMagick auszunutzen, um Code mithilfe einer Shell injection durch einen Datei-Upload auf einem Server auszuführen. In diesem Artikel nenne ich kurz die Anpassungen zur Vermeidung des Exploits.
Beschreibung von ImageMagick
ImageMagick ist ein freies Softwarepaket zur Erstellung und Bearbeitung von Rastergrafiken. Außerdem lassen sich Bilder dynamisch generieren, weshalb es auch im Bereich der Webanwendungen verwendet wird. Die von ImageMagick angebotenen Funktionen reichen vom Zusammenfügen mehrerer Bilder über das Hinzufügen bzw. Erzeugen von einfachen Formen und Schrift, Verzerrungen, Größenveränderung und Drehen der Bilder bis zu Filterfunktionen wie Unschärfe, Solarisation, Kontrastanpassung oder Invertierung.https://de.wikipedia.org/wiki/ImageMagick
Beschreibung des Angriff
Der als ImageTragick bezeichnete Angriff nutzt eine Sicherheitslücke in ImageMagick aus, um Kommandozeilenbefehle, die sich als Bilddateien ausgeben, auf einem verwundbaren Server auszuführen und diesen zu übernehmen. Dies geschieht beispielsweise, wenn in Web-Applikationen der Upload von Bildern für Anwender erlaubt ist oder ein Administrator eine infizierte Datei hochlädt. Der Exploit nutzt dabei aus, dass ImageMagick bei seinem Delegate-Feature unzureichende Filter anwendet und die Injektion von Befehlen in die Shell zulässt.
Lösung
Mithilfe einer Policy-Datei kann die Ausführung von schadhaften Dateien beziehungsweise Befehlen vermieden werden. Hierfür muss die Datei /etc/ImageMagick/policy.xml um die folgenden Zeilen ergänzt werden.
<policymap> <policy domain="coder" rights="none" pattern="EPHEMERAL" /> <policy domain="coder" rights="none" pattern="URL" /> <policy domain="coder" rights="none" pattern="HTTPS" /> <policy domain="coder" rights="none" pattern="MVG" /> <policy domain="coder" rights="none" pattern="MSL" /> <policy domain="coder" rights="none" pattern="TEXT" /> <policy domain="coder" rights="none" pattern="SHOW" /> <policy domain="coder" rights="none" pattern="WIN" /> <policy domain="coder" rights="none" pattern="PLT" /> </policymap>
Eine detaillierte Beschreibung des Angriffes und der Maßnahmen ist auf imagetragick.com (Link) zu finden.