Cover Image

Der Shoplift-Bug hat Wirkung gezeigt. Magento scheint nun Sicherheitsproblemen mehr Beachtung zu schenken und häufiger Patches bereitzustellen. Das ist auch gut soweit. Wie immer kam die Patch-Meldung in einer für deutsche Verhältnisse ungünstigen Zeit gegen 19 Uhr Abends. Das heißt für Entwickler die Agenturen tätig sind immer, dass am nächsten Tag entsprechend alle Kundensysteme mit einem Patch zeitnah versorgt werden müssen (Kunden mit Supportvertrag natürlich bevorzugt).

Das eine oder andere mal (je nach Größe des Patches) kann das auch zu Problemen in Kundensystemen führen. Wenn der Shopbetrieb nicht direkt betrofffen ist, dann finde ich sollte aber der Sicherheitsaspekt im Vordergrund stehen und zuerst der Patch ausgerollt werden und im Nachgang die Krankheiten die der Patch für das Systm mitbringt, behoben werden.

Was gibt es bei dem Patch SUPEE-6285 zu beachten?

Admin-Controller

Controller Actions werden nun case-sensitive geprüft. Im Bereich der Adminhtml-Controller wurde an vielen Stellen die _isAllowed Methode eingeführt die für die Prüfung der Berechtigungen zuständig ist.

Interessant ist auch die diese Änderung:

diff --git a/www/app/code/core/Mage/Adminhtml/Controller/Action.php b/www/app/code/core/Mage/Adminhtml/Controller/Action.php
index aad9b74..d630e35 100644
--- a/www/app/code/core/Mage/Adminhtml/Controller/Action.php
+++ b/www/app/code/core/Mage/Adminhtml/Controller/Action.php
@@ -71,7 +71,7 @@ class Mage_Adminhtml_Controller_Action extends Mage_Core_Controller_Varien_Actio

     protected function _isAllowed()
     {
- return true;
+        return Mage::getSingleton('admin/session')->isAllowed('admin');
     }

Was bedeutet das? Wenn ihr vorher keine Berechtigungen explizit definiert hattet, konnte jeder angemeldete Benutzer im Adminbereich euren Controller nutzen. Das ist natürlich eine nicht besonders defensive Voreinstellung von Magento gewesen die nun angepasst wurde. Ab sofort sind Controller ohne eigenen _isAllowed Methode nur noch von Benutzern mit Admin-Rechten aufrufbar. Das finde ich soweit korrekt. Die Logik ist auch schon seit einer Weile in der Entwicklungsversion von Magento 2 so enthalten.

Wenn ihr also einen 404 Fehler im Adminbereich für bestimmte Bereiche bekommt, sollte man sich den entsprechenden Controller vornehmen und prüfen ob die _isAllowed Methode fehlt und am besten eine eigenen ACL-Resource definieren die dann im Controller geprüft wird. Danach müssen alle Rollen die Zugriff auf die Resource erhalten sollen entsprechend über die Berechtigungsverwaltung anzupassen (Häkchen setzen).

Frontend Templates

Dazu schaut man sich am besten geänderte Dateien an. So wurden z.B. Frontend Templates überarbeitet da dort nicht immer ordentlich “escaped” wurde.

Betroffen sind die folgenden Dateien:

app/design/frontend/base/default/template/checkout/cart.phtml
app/design/frontend/base/default/template/checkout/cart/noItems.phtml
app/design/frontend/base/default/template/checkout/onepage/failure.phtml
app/design/frontend/base/default/template/rss/order/details.phtml
app/design/frontend/base/default/template/wishlist/email/rss.phtml    
app/design/frontend/rwd/default/template/checkout/cart.phtml

EE -> app/design/frontend/enterprise/default/template/checkout/cart.phtml

Verzeichnisrechte

Beim der Anlage der Log-Verzeichnisse “var/log” und “var/reports” sind die Default-Berechtigungen nun nicht mehr “777” sondern “775”. Ebenso wurden ein paar .htaccess Dateien für den Apache-Webserver nachgezogen. Diese Konfigurationen greifen z.B. bei Nginx nicht dort über eine entsprechende Einstellung berücksichtigt werden. Das betrifft auch Apache-Server die keine .htaccess Dateien verarbeiten.

Downloader

Der Downloader wurde auch an ein paar Stellen angepasst. Ich empfehle den Downloader aus jeder Produktivumgebung zu entfernen da es keinen Grund gibt in einem Produktivsystem, dass z.B. automatisch deployed wird, mit einer Möglichkeit der manuellen Modulinstallation auszustatten.

Problem bekommt ihr dann allerdings beim Einspielen des Patches der sogar einen bereits über einen vorherigen Patch veränderten Downloader erwartet. Wir haben in diesem Fall einfach die Patch “.sh” Datei angepasst und alle Downloader-Relevanten Zeilen entfernt.

Fazit

Wir sehen also, dass es doch einiges beim Einspielen von Sicherheitspatches zu beachten gilt. Einfach nur Installieren und gut ist…. gibt es nicht. Kunden sollten sich also auch nicht wundern, wenn eben nicht nur 10 Minuten in der Rechnung stehen werden.