Adobe hat einen neuen Sicherheitspatch veröffentlicht. Die Lücke wird als kritisch eingestuft und betrifft alle aktuellen Magento-Versionen 2.3.3-p1-2.3.7-p2 und 2.4.0-2.4.3-p1.
Warum ist es wichtig die Lücke zu schließen?
Die Sicherheitslücke, um die es geht, ermöglicht es Angreifern beliebigen Code im Magento Shop auszuführen. Das bedeutet, dass ein Angreifer theoretisch alles machen kann und somit auch Zugriff auf sämtliche Kundendaten erhalten könnte. Es ist daher dringend ratsam, seinen Shop so schnell wie möglich abzusichern. Laut Aussage von Adobe sind bereits Angriffe beobachtet worden. Durch die Veröffentlichung steigt nun das Risiko von Nachahmern.
Wie ist der Patch anzuwenden?
Die Dateien für den Patch können direkt auf der Seite von Adobe heruntergeladen werden. Der Patch wird in zwei Ausführungen bereitgestellt, je nachdem wie Magento Installiert wurde.
Mit Composer und Cweagans Patches
Hierfür die Datei MDVA-43395_EE_2.4.3-p1_COMPOSER_v1.patch.zip nutzen.
Wir nutzen in allen Magento Projekten Composer mit der Patches Erweiterung von cweagans. Damit lassen sich Patches leicht verwalten und ergänzen. Die Erweiterung lässt sich ganz leicht installieren mit:
composer require cweagans/composer-patches
In seiner composer.json
trägt man dazu folgendes ein:
"extra": {
"magento-force": "override",
"patches": {
"magento/framework" : {
"MDVA-43395": "patches/MDVA-43395-framework.patch"
},
"magento/module-email" : {
"MDVA-43395": "patches/MDVA-43395-email.patch"
},
}
}
Als nächstes muss ein Ordner patches angelegt werden, welcher die eigentlichen Patchdateien enthält. Es ist an dieser Stelle notwendig, die eine Datei von Adobe in zwei Patches zu zerlegen, weil das Patch zwei Module betrifft aber die Composer-Erweiterung von cweagans auf Modulebene arbeitet.
MDVA-43395-email.patch
diff --git a/Model/Template/Filter.php b/Model/Template/Filter.php
index 1a7c3683820a..586cb485ee1f 100644
--- a/Model/Template/Filter.php
+++ b/Model/Template/Filter.php
@@ -618,6 +618,12 @@ public function transDirective($construction)
}
$text = __($text, $params)->render();
+
+ $pattern = '/{{.*?}}/';
+ do {
+ $text = preg_replace($pattern, '', (string)$text);
+ } while (preg_match($pattern, $text));
+
return $this->applyModifiers($text, $modifiers);
}
MDVA-43395-framework.patch
diff --git a/Model/Template/Filter.php b/Model/Template/Filter.php
index 1a7c3683820a..586cb485ee1f 100644
--- a/Model/Template/Filter.php
+++ b/Model/Template/Filter.php
@@ -618,6 +618,12 @@ public function transDirective($construction)
}
$text = __($text, $params)->render();
+
+ $pattern = '/{{.*?}}/';
+ do {
+ $text = preg_replace($pattern, '', (string)$text);
+ } while (preg_match($pattern, $text));
+
return $this->applyModifiers($text, $modifiers);
}
Hier ist es entscheidend die Pfade im Patchfile anzupassen: Das Originalpatch enthält die Pfadangaben ins vendor Verzeichnis. Cweagens arbeitet aber realtive im Modulordner. So wird aus:
vendor/magento/module-email/Model/Template/Filter.php → Model/Template/Filter.php
Mit Composer ohne Cweagans Patches
Hierfür die Datei MDVA-43395_EE_2.4.3-p1_COMPOSER_v1.patch.zip nutzen.
Ohne die Patch-Erweiterung für Composer speichert man das Patchfile einfach im Hauptverzeichnis der Magento Installation ab und führt dann folgendes aus:
patch -p1 < MDVA-43395_EE_2.4.3-p1_COMPOSER_v1.patch
patching file vendor/magento/module-email/Model/Template/Filter.php
Hunk #1 succeeded at 605 (offset -13 lines).
patching file vendor/magento/framework/Filter/DirectiveProcessor/VarDirective.php
Funktioniert, ist aber nicht sehr nachhaltig, weil mit einem erneuten composer install die Änderungen wieder verloren gehen.
Ohne Composer
Hierfür die Datei MDVA-43395_EE_2.4.3-p1_v1.patch.zip nutzen.
Diesen Fall haben wir, wenn die Magento Installation nicht mit Composer sondern direkt von Github installiert wurde. In dem Fall sind die Pfade anders: die Magento Core Installation liegt im Ordner lib. Lässt sich aber anschließend analog zu der Composer Variante anwenden:
$ patch -p1 < MDVA-43395_EE_2.4.3-p1_v1.patch
patching file app/code/Magento/Email/Model/Template/Filter.php
Hunk #1 succeeded at 629 (offset 11 lines).
patching file lib/internal/Magento/Framework/Filter/DirectiveProcessor/VarDirective.php
Benötigen Sie Hilfe beim Schließen der Sicherheitslücke? Wir helfen Ihnen gerne! Rufen Sie uns noch heute an oder schreiben Sie uns eine E-Mail an info@wamoco.de.