Magento Versionen (von 1.4 bis 1.9) haben kritische Sicherheitslücken – Magento Patches einspielen

Update vom 04.09.2015

Für alle, die bei der Installation von Patches das Problem haben, dass der Server beim Aufruf der u.g. patch.php oder direkt über SSH die Fehlermeldung Array ( [0] => ERROR: “/app/etc/” must exist for proper tool work. ) auswirft, diese kleine Hilfestellung: In diesem Fall gibt es ein Problem mit der Variablen, die den aktuellen Installationspfad angibt. Hier muss dann die Variable durch den exakten Pfad der Magento Installation ersetzt werden.

Um den exakten Pfad herauszufinden, gibt es mehrere Möglichkeiten. Hier die zwei einfachsten:

  1. Per SSH / Shell Befehl: Einfach PWD in die Konsole eingeben. Anschließend spuckt das Fenster den genauen Pfad aus.
  2. Wer über unten stehende Anleitung mit der patch.php arbeitet, ersetzt die Zeile
    $shellBefehl = "sh patch.sh";

    vorübergehend mit der Zeile

    $shellBefehl = "pwd";

    Dann führt man die patch.php aus und erhält im Browserfenster den exakten Pfad zur Installation.

Dieser Pfad könnte z.B. so aussehen /www/htdocs/w23drdc/mein-shop/magento/ . Nun wird der Pfad kopiert und in der patch Datei (z.B. patch.sh wie unten beschrieben) ca. in Zeile bei

CURRENT_DIR=`$PWD_BIN`/

verwendet. Und zwar wird die Variable entfernt und durch den Pfad ersetzt. Wichtig ist jedoch, dass erstens die Anführungszeichen erhalten bleiben und zweitens ein abschließender / bestehen bleibt. Es könnte dann also so aussehen:

CURRENT_DIR=`/www/htdocs/w23drdc/mein-shop/magento/`

Anschließend abspeichern und über SSH oder die patch.php (s.u.) ausführen. Nun sollte es klappen.

Welche Patches man übrigens bereits installiert hat, kann man im Ordner app/etc/ in der Datei applied.patches.list sehen.


Update vom 04.08.2015

Erneut gibt es einen Patch für Magento. Diesmal hört er auf den schönen Namen SUPEE-6482. Gleichzeitig kommt auch die neue Magento CE Version 1.9.2.1 zum Download auf den Markt. Diese enthält dann bereits alle Patches. Beim neuen Patch werden sicherheitshalber verschiedene Schnittstellen Schwachpunkte gefixt, die angeblich aber noch nicht angegriffen würden. Alle Informationen gibt es natürlich auf der wieder Magento Seite. Betroffen sind alle Magento Versionen von 1.4 bis 1.9.2.0. Möchten Sie, dass wir den Patch für Sie installieren? Oder mehrere, dann buchen Sie gerne unseren Installationsservice. Mehr Informationen gibt es z.B. auch HIER.

Zwischenzeitlich ist bekannt geworden, dass der Patch SUPEE-6285 Änderungen an der Benutzerrechte-Struktur im Backend vorgenommen hat (“ACL“). Dies äußert sich darin, dass bei Backend-Nutzern, die KEINEN VOLLEN Backendzugriff -also eingeschränkte Rechte- haben, bestimmte Bereiche nicht mehr zur Verfügung stehen und ihnen ein “404 Seite nicht gefunden” oder “404 Access denied” angezeigt wird. Das geht so weit, dass selbst die Anzeige von Gutschriften / Rechnungskorrekturen nicht mehr funktioniert. Dies tritt aber vor allem bei Extensions auf und nicht bei Magento-Standard-Funktionen.


Update vom 08.07.2015

Und schon wieder gibt es einen neuen Patch für Sicherheitslücken bei Magento. Dieser nennt sich SUPEE-6285 und ist direkt auf der Magento Seite erhältlich. Erhältlich sind Patches für die Magento CE Version 1.4.0.0 bis 1.9.1.1. In der gerade erschienenen Version 1.9.2.0 ist dieser Patch bereits enthalten. Da für ältere Versionen bis 1.6 kein Patch vorhanden ist, muss davon ausgegangen sein, dass die Sicherheitslücken hier wohl nicht bestehen. Update: Mittlerweile stehen für alle Magento Versionen ab 1.4 Patches zur Verfügung. Der Patch ist ziemlich umfangreich, daher ist eine Anwendung über SSH oder über die unten stehende Anleitung sehr zu empfehlen.


Ursprünglicher Artikel:

In allen Magento Versionen -CE und EE- besteht in allen relevanten Versionen eine Sicherheitslücke, die es ermöglicht in die Shopinstallation zu gelangen, um dann Zugriff auf Daten und den Server zu haben. Diese Lücke lässt sich wohl auch nutzen, um Angriffe auf externe Ziele zu starten. Eine genauere Beschreibung und weitere Details gibt es im RackspeedBlog. Es handelt sich um den Patch SUPEE-5344.

Ein kleiner Hinweis (über den von Rackspeed hinaus) für Personen, die keinen Shellzugriff haben und die Daten per manueller Dateiänderung anpassen wollen:

In der .sh Patch Datei den Teil mit Informationen und Hinweisen ignorieren. Nach “#9. Track patch applying result”geht es dann erst los. Immer die Datei, die hinter dem “diff” steht muss verändert werden. Bei der Patch Version für Magento CE 1.8-1.9 sind das z.B. die Dateien

app/code/core/Mage/Admin/Model/Observer.php

app/code/core/Mage/Core/Controller/Request/Http.php

app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php

app/code/core/Mage/XmlConnect/Model/Observer.php

lib/Varien/Db/Adapter/Pdo/Mysql.php

In diesen Dateien müssen dann -etwas lapidar ausgedrückt- die Zeilen, die mit einem Minus versehen sind entfernt werden und die Zeilen, die mit einem Plus versehen sind, hinzugefügt werden.

Am einfachsten ist es jedoch die ganze Sache mit SSH zu erledigen.

Ein Tipp vor allem für Administratoren vieler Shops: Der ein und andere Server lässt auch SSH Befehle per PHP zu. So kann man es sich sehr einfach machen.

Es wird z.B. eine patch.php Datei zusammen mit der patch.sh Datei in das Root Verzeichnis des Shops kopiert. Die PHP Datei enthält dann folgenden Code:

<?PHP

$shellBefehl = "sh patch.sh";

$shellBefehl = escapeshellcmd($shellBefehl);

exec($shellBefehl,$nu);

print_r($nu);

?>

Nun braucht man nur noch über den Browser den Shop aufzurufen und ein /patch.php an die URL zu hängen. Man erhält dann eine Success oder Error Meldung. Anschließend sollte man die beiden Dateien aber sicherheitshalber löschen.

Die Verwendung der PHP Datei funktioniert selbstverständlich auch bei anderen Sicherheitspatches oder Shell Befehlen, die man ohne SSH Zugriff in seinen Shop einspielen möchte. So zum Beispiel auch bei SUPEE-1533 und anderen.

Genutzt in Magento Versionen 1.4.0.1 bis 1.9.1.0.. Fragen, Kommentare, Anregungen? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

2 comments on “Magento Versionen (von 1.4 bis 1.9) haben kritische Sicherheitslücken – Magento Patches einspielen”

  1. Ich habe beide Patches
    PATCH_SUPEE-1533_EE_1.13.x_v1-2015-02-10-08-18-32.sh
    und
    PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh
    über die eine PHP datei installiert.
    Beim ersten Patch ging das auch wunderbar beim letzten Patch bekam ich folgende Fehlermeldung.

    Was hab ich falsch gemacht?

    Array ( [0] => Checking if patch can be applied/reverted successfully… [1] => ERROR: Patch can’t be applied/reverted successfully. [2] => [3] => checking file app/code/core/Mage/Admin/Model/Observer.php [4] => Reversed (or previously applied) patch detected! Assume -R? [n] [5] => Apply anyway? [n] [6] => Skipping patch. [7] => 3 out of 3 hunks ignored [8] => checking file app/code/core/Mage/Core/Controller/Request/Http.php [9] => Reversed (or previously applied) patch detected! Assume -R? [n] [10] => Apply anyway? [n] [11] => Skipping patch. [12] => 2 out of 2 hunks ignored [13] => checking file app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php [14] => Reversed (or previously applied) patch detected! Assume -R? [n] [15] => Apply anyway? [n] [16] => Skipping patch. [17] => 1 out of 1 hunk ignored [18] => checking file app/code/core/Mage/XmlConnect/Model/Observer.php [19] => Reversed (or previously applied) patch detected! Assume -R? [n] [20] => Apply anyway? [n] [21] => Skipping patch. [22] => 2 out of 2 hunks ignored [23] => checking file lib/Varien/Db/Adapter/Pdo/Mysql.php [24] => Reversed (or previously applied) patch detected! Assume -R? [n] [25] => Apply anyway? [n] [26] => Skipping patch. [27] => 1 out of 1 hunk ignored )

Leave a Reply

Your email address will not be published. Required fields are marked *