Schwere Sicherheitslücke im Web-Shop Magento

Am 9. Februar 2015 wurde relativ stillschweigend ein Patch für die bekannte Web-Shop-Software Magento veröffentlicht, der mehrere schwere Sicherheitslücken in fast allen aktuellen und auch älteren Magento-Versionen schließt. Betroffen ist sowohl die Community Edition als auch die Enterprise Edition. Über diese Sicherheitslücken lassen sich SQL-Befehle sowie PHP-Code einschleusen, dadurch könnten Angreifer beispielsweise zusätzliche Adminstrator-Benutzer erstellen, auf Kreditkartennummern von Kunden zugreifen oder Spam-Scripte installieren.

Die Details zu der Sicherheitslücke wurden mehrere Monate geheimgehalten, um Magento-Benutzern genügend Zeit zum Einspielen des Patches zu geben. Am 23. April wurden nun sämtliche Details zur dieser Sicherheitslücke veröffentlicht; bereits wenige Stunden nach Veröffentlichung finden sich Hinweise auf die ersten Angriffe in unseren Webserver-Logs. Wir haben die Angreifer mittlerweile so gut es geht per Webserver-Firewall ausgesperrt, einige ungepatchte Magento-Installationen sind jedoch bereits gehackt wurden. Offenbar haben die Angreifer zusätzliche Administrator-Benutzer angelegt, die unbedingt wieder gelöscht werden müssen. Wir werden betroffene Kunden in Kürze informieren. Wenn eine Installation bereits manipuliert wurde, sollten sicherheitshalber alle Passwörter (Administrator-Accounts, MySQL, FTP) geändert werden.

Bitte beachten Sie, dass durch unsere Webserver-Firewall Tests auf diese Sicherheitslücke (z.B. shoplift.byte.nl) falsche Ergebnisse liefern.

Falls Sie bei uns einen Magento-Shop betreiben, sollten Sie unbedingt den von Magento bereitgestellten Patch SUPEE-5344 installieren. Die Installation ist leider etwas kompliziert, da die Patches als Shell-Script für die jeweilige Magento-Version bereitgestellt werden, dass Sie per (S)FTP in das Wurzelverzeichnis Ihrer Magento-Installation kopieren und dort per SSH oder über ein PHP-Script ausführen müssen:

  • Patch per SSH einspielen
    Kopieren Sie die Patch-Datei per (S)FTP in das Magento-Installationsverzeichnis. Loggen Sie sich dann per SSH auf Ihrem Webserver ein. Falls Sie Magento in einem Unterverzeichnis installiert haben (z.B. magento), wechseln Sie zuerst in dieses Verzeichnis:
    cd magento
    Anschließend führen Sie folgenden Befehl aus:
    bash PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh
    Ersetzen Sie dabei PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh durch den Namen der Patch-Datei für Ihre Magento-Version.
  • Patch per PHP-Script einspielen
    Erzeugen Sie eine Text-Datei patch.php mit folgendem Inhalt:
    <?php
    passthru("/bin/bash PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh");
    ?>

    Ersetzen Sie dabei PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh durch den Namen der Patch-Datei für Ihre Magento-Version. Kopieren Sie die PHP-Datei und die Patch-Datei per (S)FTP in das Magento-Installationsverzeichnis auf den Webserver. Anschließend rufen Sie die PHP-Datei über Ihren Web-Browser unter der URL Ihres Webshops auf (z.B. “www.meinshop.de/patch.php”). Die beiden hochgeladenen Dateien sollten danach wieder gelöscht werden.

Falls der Patch erfolgreich war erscheint folgende Ausgabe:

Checking if patch can be applied/reverted successfully…
Patch was applied/reverted successfully.

Anschließend sollten Sie den Cache in Magento zurücksetzen (System -> Cache Management). Bitte prüfen Sie auch, ob der im August 2014 bereitgestellten Patch SUPEE-1533 installiert wurde, der eine ähnliche Sicherheitslücke schließt.

Bitte beachten Sie, dass auch die gegenwärtig aktuellste Magento-Version 1.9.1.0 von dieser Sicherheitslücke betroffen ist und gepatcht werden muss.

Probleme mit PayPal nach SSL-Abschaltung

Der Zahlungsanbieter PayPal hat zum 12.01.2015 die Unterstützung der mittlerweile veralteten SSL-Verschlüsselung eingestellt, dadurch funktionieren die Zahlungsmodule vieler bekannter Webshops wie Oxid, Gambio, xt:commerce oder Prestashop unter Umständen nicht mehr. Ältere Versionen der PayPal-Module dieser Webshops setzen die Verschlüsselung der Verbindung zu den PayPal-Servern fest auf SSL Version 3, daher wird die sonst standardmäßig benutzte, sichere TLS-Verschlüsselung nicht eingesetzt.

Die meisten Webshop-Anbieter haben mittlerweile Updates herausgebracht, die dieses Problem beheben. Falls Sie auf unseren Webservern einen Webshop mit PayPal-Anbindung installiert haben, sollten Sie daher dringend prüfen, ob es Updates für die von Ihnen eingesetzte Shop-Software gibt.

Sie können prüfen, ob Ihr Webshop betroffen ist, in dem Sie nach “CURLOPT_SSLVERSION” im PHP-Quellcode des PayPal-Moduls suchen. Loggen Sie sich dazu einfach per SSH auf Ihrem Webserver ein und geben folgenden Befehl ein:
ag CURLOPT_SSLVERSION

Dann werden Ihnen alle Dateien angezeigt in denen diese Zeichenkette vorkommt. Achten Sie dabei auf Dateien, deren Name “paypal” enthält. Sie sind von diesem Problem betroffen, wenn Sie in diesen Dateien Zeilen ähnlich den folgenden finden:
curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
curl_setopt ($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3);

Falls es keine Updates für Ihren Webshop gibt, können Sie diese Zeilen einfach im Quellcode auskommentieren (am Anfang der Zeile // hinzufügen), dann wird automatisch TLS-Verschlüsselung genutzt.

Ausführlichere Informationen und Hintergründe finden Sie bei t3n.