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 Quick-Fix 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.