Magento Sicherheitspatch und defekter Wysiwyg Dateibrowser

Veröffentlicht von cmuench am

Der von Magento veröffentlichte Sicherheitspatch letzte Woche hat leider eine kleine Nebenwirkung.
Wird das Media-Verzeichnis über einen Symlink eingebunden, was bei größeren Shop-Installationen durchaus üblich ist, dann funktioniert der Dateibrowser im Wysiwyg-Editor nicht mehr.

Das Problem kann einfach über folgenden Befehl nachgestellt werden:

mv media media_shared && ln -s media_shared media

Da wir bei meinem Arbeitgeber netz98 alle Kundeninstallationen entsprechend zeitnah mit dem Patch aufgrund der Sicherheitslücke aktualisiert haben ist dies natürlich schnell aufgefallen.

Das Problem liegt im Verzeichnisvergleich mit und einmal ohne die PHP Funktion realpath.
Wir haben dafür einen kleinen Quickfix erstellt, den ich hier der Öffentlichkeit nicht vorenthalten will:

class Mage_Cms_Helper_Wysiwyg_Images extends Mage_Core_Helper_Abstract
{
   //....

   /**
    * Decode HTML element id
    *
    * @param string $id
    * @return string
    */
    public function convertIdToPath($id)
    {
        /*$path = $this->idDecode($id);
        if (!strstr($path, $this->getStorageRoot())) {
            $path = $this->getStorageRoot() . $path;
        }
        return $path;*/
        /**
        * CORE PATCH BY netz98 new media GmbH
        *
        * Problems with Symlinks after security patch by Magento
        */
        // BEGIN OF PATCH
        $path = $this->idDecode($id);
        if (!strstr($path, realpath($this->getStorageRoot()))) {
            $path = realpath($this->getStorageRoot()) . $path;
        }
        // END OF PATCH
        return $path;
    }

    //....
}

Vorgehen:

  • Original Datei aus core Codepool nach local kopieren.
  • Methode convertIdToPath mit der oben genannten austauschen.

5 Kommentare

Bikersbean · 12. Februar 2014 um 16:15

Hallo Christian, kurze Frage zur Behebung des Browserfehlers. Wenn ich die image.php von core nach local kopiert habe. In welcher Datei muss die Methode geändert werden? Core, local oder in beiden?
Vielen Dank für eine kurze Nachricht.
Uwe

    Christian Münch · 12. Februar 2014 um 17:15

    Die einfachste Variante ist es die komplette Date vom core Code-Pool in den local Code-Pool kopieren und die Methode anpassen.
    Man könnte auch alternativ die Datei über einen Magento Rewrite in einem eigenen Modul machen. Dann müsste man nur noch die überschriebene Methode einfügen.

Sicherheitsupdates für Magento 1.4, 1.6 und 1.7 | Mag-tutorials.de · 3. Januar 2014 um 14:35

[…] Blog von Christian Münch wird allerdings auf ein Problem hingewiesen, das nach dem Update auftreten kann. “Wird das Media-Verzeichnis über einen Symlink […]

Gregory Smith · 9. Oktober 2014 um 20:22

I love your blog

I have read this article and enjoyed it

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.