Magento Sicherheitspatch und defekter Wysiwyg Dateibrowser

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.

2 Pingbacks/Trackbacks

  • Pingback: Sicherheitsupdates für Magento 1.4, 1.6 und 1.7 | Mag-tutorials.de()

  • 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

    • 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.

  • Pingback: Gregory Smith()