WordPress behebt Remote-Code-Ausführungsschwachstelle in Imagick

WordPress behebt Remote-Code-Ausführungsschwachstelle in Imagick

WordPress 7.0.4 behebt einen Fehler, der es angemeldeten Autoren ermöglichte, Code auszuführen, indem sie eine Datei mit einer Bilddateiendung, aber PostScript-Inhalt hochluden.

WordPress 7.0.4 enthält einen Fix für eine Remote-Code-Ausführungsschwachstelle in der Imagick-Bildverarbeitungsbibliothek. Sicherheitsforscher von Patchstack, unter der Leitung von Security Research Lead Dave Jong, beschrieben, wie ein angemeldeter Autor eine Datei hochladen konnte, die wie ein Bild aussieht, aber tatsächlich ein PostScript-Programm ist, was zur Codeausführung auf dem Webserver führt. Der Fehler betraf die WordPress-Kernversionen 4.7 bis 7.0, und die WordPress.org-Ankündigung bestätigt das Wartungsrelease. Für Website-Besitzer ist dies ein Update mit hoher Priorität, da es einen Pfad schließt, der einen routinemäßigen Medien-Upload in eine vollständige Serverkompromittierung verwandeln könnte.

WordPress verwendet ImageMagick, ein leistungsfähiges Open-Source-Bildverarbeitungstool, über eine PHP-Erweiterung namens Imagick, um die Größenänderung und Verarbeitung von Bildern in der Medienbibliothek zu handhaben. Das Problem ist, dass ImageMagick weit mehr versteht als gängige Formate wie JPEG und PNG. Es kann auch PostScript-, EPS- und PDF-Dateien öffnen, und um diese zu rendern, ruft es Ghostscript auf, ein Programm, das PostScript und PDF interpretiert und eine lange Geschichte davon hat, dazu verleitet zu werden, Befehle auszuführen, die es nicht sollte. Dies ist dieselbe Familie von Problemen wie die älteren ImageTragick-Bugs. Der Kern des Problems ist eine Diskrepanz: ImageMagick entscheidet, was eine Datei ist, indem es ihren Inhalt liest, nicht ihre Erweiterung, während WordPress hauptsächlich der Dateierweiterung vertraute. So würde eine Datei namens holiday.png, die tatsächlich PostScript-Code enthält, die Upload-Prüfungen bestehen, an Imagick übergeben werden, das das PostScript darin erkennt und Ghostscript startet, um den Code auszuführen.

Der anfällige Code befindet sich in der Methode WP_Image_Editor_Imagick::load() von WordPress. Diese Methode entschied, wie eine hochgeladene Datei an ImageMagick übergeben wird, basierend nur auf der Dateierweiterung, ohne jemals den Inhalt der Datei zu inspizieren. Der Code prüfte zuerst, ob die Erweiterung pdf ist, und wenn nicht, rief er readImage() oder readImageBlob() auf, die die Magic Bytes der Datei untersuchen und den Dateinamen ignorieren. So wählt Inhalt, der mit den Signaturen %!, \x04%!, \xC5\xD0\xD3\xC6 oder \xFFWPC beginnt, ImageMagicks PostScript-, EPS- oder WPG-Decoder aus, der dann Ghostscript aufruft, um die Datei als PostScript-Programm auszuführen. Während eines normalen Datei-Uploads fängt die WordPress-Funktion wp_check_filetype_and_ext() diese Diskrepanz ab und verhindert den Angriff. Aber nicht jeder Upload-Pfad durchläuft diese Prüfung. Die XML-RPC-Methode wp.uploadFile und die Cover-Art-Extraktionsroutine für hochgeladene MP3s schreiben ihre Bytes mit wp_upload_bits(), das den Inhalt nie inspiziert, so dass die bösartige Nutzlast auf der Festplatte landet und den anfälligen Code erreicht.

Patchstack berichtet, dass der Fix im Commit 7daaa50 im WordPress-Kern enthalten ist. Die aktualisierte load()-Funktion prüft nun den tatsächlichen Inhalt der Datei, bevor sie das Imagick-Objekt konstruiert, so dass nichts an einen PostScript-Decoder weitergegeben wird. Konkret untersucht der Patch den ersten Teil jeder Datei und lehnt PostScript- und EPS-Dateien anhand ihrer Signaturen, ihrer Erweiterung oder der ImageMagick-Formatbezeichner-Präfixe ab. Er lehnt auch gefälschte PDFs ab, d.h. Dateien, die eine PDF-Erweiterung beanspruchen, aber nicht mit dem echten %PDF- Marker beginnen. Er blockiert komprimierte Dateien, die ImageMagick stillschweigend entpacken würde, wie gzip- und bzip2-Archive, die ein weiterer Weg waren, Inhalte an den Prüfungen vorbeizuschmuggeln. Es gibt auch ein subtileres Element: ImageMagick erlaubt es, einen bestimmten Handler zu erzwingen, indem man einen Dateinamen mit einem Präfix versieht, wie EPS:innocent.png. Der neue Code entfernt und inspiziert diese Präfixe, wobei er darauf achtet, nicht über Windows-Laufwerksbuchstaben wie C: zu stolpern, so dass ein Angreifer den Dateinamen nicht verwenden kann, um Imagick zu Ghostscript zu lenken. Da derselbe Trick über eine entfernte URL oder einen Stream ankommen kann, analysiert der Fix Dateinamen aus diesen Quellen, bevor er sie validiert.

Um diese Schwachstelle auszunutzen, muss ein Angreifer in der Lage sein, Medien hochzuladen, was ein Autorenkonto oder höher in WordPress bedeutet. Dies ist kein anonymer, Drive-by-Angriff, den jeder starten kann. Aber viele Websites vergeben Autorenkonten freizügiger, als sie denken. Wenn Sie eine Multi-Autoren-Publikation, eine Mitgliederseite, eine Kundenseite mit Mitwirkenden oder etwas mit offener oder locker verwalteter Registrierung betreiben, ist diese Zugangsbarriere viel niedriger, als es klingt. Auf diesen Websites ist ein Autor, der ein präpariertes Bild hochlädt, eine wirklich realistische Bedrohung, nicht nur theoretisch. Wenn Ihre Website nur Sie und eine eng begrenzte Gruppe vertrauenswürdiger Redakteure hat, ist Ihre Exposition geringer, aber das Update ist trotzdem wichtig, da ein kompromittiertes Redakteurskonto auf dieselbe Weise verwendet werden könnte.

Die unmittelbare Maßnahme ist, WordPress auf Version 7.0.4 oder später zu aktualisieren. Wenn Sie automatische Hintergrund-Updates aktiviert haben, sind Sie möglicherweise bereits abgedeckt, daher lohnt es sich, Ihre aktuelle Version zu überprüfen. Wenn Sie manuell aktualisieren, priorisieren Sie dieses Update, besonders auf Websites, auf denen Konten über Ihr Kernteam hinaus vergeben werden. Dieser Vorfall ist auch eine nützliche Erinnerung an die Medienverarbeitung im Allgemeinen: Der riskante Teil ist normalerweise nicht das Bild selbst, sondern alles andere, was die Bildbibliothek stillschweigend öffnen kann. Für Website-Besitzer, die das Zeitfenster zwischen einem Sicherheitsrelease und seiner Anwendung verringern möchten, bietet verwaltetes WordPress-Hosting wie AEU Hosting sicherheitsorientierte Wartung, einschließlich automatisierter Kern- und Plugin-Updates als Teil seiner End-to-End-gesicherten Plattform. Diese Art von verwalteten Updates hilft sicherzustellen, dass Patches wie dieser umgehend installiert werden, ohne manuelle Eingriffe.

Überprüfen Sie schließlich die Benutzerrollen auf Ihrer Website. Entfernen Sie den Autorenzugriff von allen, die ihn nicht benötigen, und erwägen Sie die Verwendung eines Sicherheits-Plugins, das den Dateiinhalt beim Upload inspiziert, nicht nur die Erweiterungen. Die Kernlektion aus diesem Fehler ist, dass Dateinamen kein zuverlässiger Indikator dafür sind, was eine Datei tatsächlich enthält, und Sicherheitsprüfungen müssen die Daten selbst betrachten.

So schützen Sie sich

  1. Aktualisieren Sie Ihre WordPress-Website sofort auf Version 7.0.4 oder höher.
  2. Aktivieren Sie automatische Hintergrund-Updates in WordPress, damit zukünftige Sicherheitsfixes installiert werden, ohne dass Sie daran denken müssen.
  3. Überprüfen Sie die Liste der Benutzerkonten auf Ihrer Website und entfernen Sie oder stufen Sie Autorenkonten herab, die keine Dateien mehr hochladen müssen.
  4. Verwenden Sie ein Sicherheits-Plugin, das den tatsächlichen Inhalt hochgeladener Dateien prüft, nicht nur die Dateiendung.
  5. Wenn Sie Ihren eigenen Server verwalten, aktualisieren Sie ImageMagick und Ghostscript auf die neuesten Versionen, da ältere Versionen bekannte Sicherheitslücken haben.

Begriffe Erklärt

  • ImageMagick Eine Open-Source-Softwaresuite zum Bearbeiten und Konvertieren von Bildern, die WordPress zur Verarbeitung hochgeladener Bilder verwenden kann.
  • Imagick Eine PHP-Erweiterung, die es WordPress ermöglicht, mit ImageMagick zu kommunizieren, um Bilder zu skalieren und zu manipulieren.
  • Ghostscript Ein Programm, das PostScript- und PDF-Dateien interpretiert und dazu verleitet werden kann, bösartige Befehle auszuführen, wenn es mit manipulierten Dateien gefüttert wird.
  • PostScript Eine Seitenbeschreibungssprache, die ursprünglich für Drucker verwendet wurde, aber auch ein Format ist, das ausführbaren Code enthalten kann.
  • Magic bytes Die ersten Bytes einer Datei, die identifizieren, um welche Art von Datei es sich tatsächlich handelt, unabhängig von ihrem Namen.
  • XML-RPC Ein Remote-Procedure-Call-Protokoll, das WordPress für einige externe Funktionen verwendet, einschließlich einer Methode zum Hochladen von Dateien.
  • Author-level Eine WordPress-Benutzerrolle, die das Erstellen und Veröffentlichen von Beiträgen sowie das Hochladen von Mediendateien ermöglicht.
  • Remote code execution Eine Art von Sicherheitslücke, die es einem Angreifer ermöglicht, eigene Befehle auf einem Server auszuführen.

Verwandte AEU-Dienste

  • AEU Panel Control-Panel für Managed Hosting