Sicherheit und SSL
Kritische Sicherheitslücke in PrestaShop 1.6.0.10 bis 1.7.8.6 (MySQL-Cache von Smarty)
Am 22. Juli 2022 warnte PrestaShop vor einem massiven Angriff auf Shops ab Version 1.6.0.10. Die Angreifer nutzen eine SQL-Injection (im Kern oder in einem Modul), um den Smarty-Cache in MySQL zu aktivieren und darüber Code im Shop auszuführen. Damit installieren sie meist ein gefälschtes Zahlungsformular, das die Karten der Kunden stiehlt.
- PrestaShop 1.7.8.7 härtet den Smarty-Cache gegen diesen Angriff. Die Versionen 8 und 9 enthalten das bereits.
- PrestaShop 1.6 hat keine Korrektur erhalten: Sie müssen den Patch aus diesem Artikel anwenden.
- Das Modul blockwishlist (Wunschliste) in den Versionen 2.0.0 bis 2.1.0 enthielt eine der verwendeten SQL-Injections. Aktualisieren Sie es.
Endgültige Lösung: aktualisieren
Sehen Sie Ihre Version unter Erweiterte Einstellungen > Informationen nach. Wenn es eine 1.7 vor 1.7.8.7 ist, aktualisieren Sie. Ideal ist der Wechsel auf eine unterstützte Version: Die neueste ist derzeit 9.2.0, und der Zweig 8 erhält weiterhin Korrekturen (8.2.8). Aktualisieren Sie auch alle Module, vor allem die von Drittanbietern: Die SQL-Injection stammt meist aus einem Modul.
Die Anleitungen Fehler beim Aktualisieren mit 1-Click Upgrade und Verbindungsfehler beim Aktualisieren von PrestaShop behandeln die häufigsten Probleme. Erstellen Sie vorher ein vollständiges Backup (Dateien und Datenbank).
Patch für Shops, die nicht sofort aktualisieren können
Wenn Ihr Shop 1.6 ist oder eine 1.7, die Sie nicht sofort aktualisieren können, deaktivieren Sie den Smarty-Cache in MySQL. Praktisch niemand verwendet ihn (der Datei-Cache ist schneller), daher beeinträchtigt das Entfernen den Betrieb des Shops nicht.
- Öffnen Sie die Datei
config/smarty.config.inc.phpdes Shops im Dateimanager von cPanel. - Suchen Sie diesen Block (er steht etwa in Zeile 40–43 in PrestaShop 1.6 und 43–46 in 1.7):
if (Configuration::get('PS_SMARTY_CACHING_TYPE') == 'mysql') { include _PS_CLASS_DIR_.'Smarty/SmartyCacheResourceMysql.php'; $smarty->caching_type = 'mysql'; }
- Löschen Sie ihn vollständig, alle vier Zeilen, und speichern Sie.
- Prüfen Sie, dass der Shop normal lädt.
Prüfen Sie außerdem unter Erweiterte Einstellungen > Leistung im Abschnitt Smarty, dass der Cache-Typ auf Dateisystem und nicht auf MySQL steht.
Dieser Patch schneidet den Weg zur Codeausführung ab, behebt aber nicht die ursprüngliche SQL-Injection. Ein Update bleibt notwendig.
Den Patch per SSH auf viele Shops gleichzeitig anwenden
Wenn Sie mehrere Shops verwalten, suchen Sie zuerst die Dateien, die den Block enthalten (ersetzen Sie RUTA durch den Ordner, in dem die Shops liegen, zum Beispiel /home/usuario):
grep -rl --include=smarty.config.inc.php "PS_SMARTY_CACHING_TYPE') == 'mysql'" RUTA
Und löschen Sie ihn in allen (entfernt die if-Zeile und die drei folgenden):
grep -rl --include=smarty.config.inc.php "PS_SMARTY_CACHING_TYPE') == 'mysql'" RUTA \ | xargs sed -i "/PS_SMARTY_CACHING_TYPE') == 'mysql'/,+3d"
Prüfen Sie danach, dass die Dateien weiterhin gültiges PHP sind:
find RUTA -name smarty.config.inc.php -exec php -l {} \;
Prüfen, ob der Shop bereits angegriffen wurde
Achten Sie auf diese Anzeichen:
- Eine Datei namens
blm.phpim Hauptordner des Shops. - In den Zugriffsprotokollen: eine POST-Anfrage an ein Modul, eine Sekunde später gefolgt von einem Aufruf der Startseite und einer Anfrage an
/blm.php. - Ein Zahlungsformular für Karten, das Sie nicht eingebaut haben, auf der Zahlungsseite, oder Kunden, die betrügerische Abbuchungen melden.
- Kürzlich geänderte PHP-Dateien, die zu keinem Ihrer Updates passen. Per SSH listet
find RUTA_TIENDA -name "*.php" -mtime -30die in den letzten 30 Tagen geänderten auf.
Dass keine blm.php auftaucht, schließt einen Angriff nicht aus: Die Angreifer ändern die Namen. Wenn Sie eines dieser Anzeichen finden, versetzen Sie den Shop in den Wartungsmodus, sichern Sie den aktuellen Zustand und eröffnen Sie ein Ticket: Wir helfen Ihnen, die betroffenen Dateien zu finden. Das Löschen des Smarty-Blocks bereinigt keinen bereits infizierten Shop; ändern Sie, sobald er bereinigt ist, die Passwörter für den PrestaShop-Administrationsbereich, die Datenbank und FTP.
Das könnte Ihnen auch helfen
- Historischer Hinweis zu massenhaften Registrierungen in PrestaShop 1.6 und 1.7 Beschreibt den in PrestaShop 1.6.1.24 und 1.7.5.2 behobenen Fehler und erklärt, was zu tun ist, wenn...
- Den Administratorzugang von Magento auf erlaubte IPs beschränken .htaccess-Regeln, damit sich der Administrationsbereich von Magento nur von Ihren IPs oder aus Ihrem...
- Nicht gepflegte WordPress-Plugins: wie Sie sie erkennen und warum sie ein Risiko sind So prüfen Sie das Datum der letzten Aktualisierung und die Kompatibilität von WordPress-Plugins und...
- Sicherheit der Sitzungscookies in GLPI konfigurieren Prüfen Sie HTTPS und die wirksame PHP-Konfiguration von GLPI, um Hinweise zu Secure-Cookies zu beheb...
Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.