Sicherheitspatch SUPEE-10266 - Mögliche Probleme?


36

Für Magento 1 ist ein neuer Sicherheitspatch verfügbar, der 13 APPSEC-Probleme behebt

https://magento.com/security/patches/supee-10266

Auf welche allgemeinen Probleme müssen Sie achten, wenn Sie diesen Patch anwenden?

SUPEE-10266, Magento Commerce 1.14.3.6 und Open Source 1.9.3.6 enthalten mehrere Sicherheitsverbesserungen, die dazu beitragen, Cross-Site Request Forgery (CSRF), nicht autorisiertes Datenleck und Sicherheitslücken bei der Remotecodeausführung von Administratoren zu schließen. Diese Releases enthalten auch Korrekturen für Probleme beim erneuten Laden von Bildern und beim Bezahlen in einem Schritt.


Problem bei der Bewerbung um 1.9.3.2 - magento.stackexchange.com/questions/193451/…
Shrenik

Antworten:


13

Einige wichtige Informationen werden hier weitergegeben. Die meisten Dateien aus dem Magento-Backend. Die Dateilisten:

app/code/core/Mage/Admin/Model/Session.php
app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Notice.php
app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Adminhtml/controllers/Newsletter/TemplateController.php
app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Core/Model/Email/Template/Abstract.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Rss/Helper/Data.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Zend/Serializer/Adapter/PhpCode.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/file.phtml
app/design/adminhtml/default/default/template/customer/tab/view.phtml
app/design/adminhtml/default/default/template/login.phtml
app/design/adminhtml/default/default/template/notification/toolbar.phtml
app/design/adminhtml/default/default/template/oauth/authorize/form/login.phtml
app/design/adminhtml/default/default/template/resetforgottenpassword.phtml
app/design/adminhtml/default/default/template/sales/order/view/history.phtml
app/design/adminhtml/default/default/template/sales/order/view/info.phtml
app/design/install/default/default/template/install/create_admin.phtml
app/locale/en_US/Mage_Adminhtml.csv
downloader/template/login.phtml

Das Wichtigste ist, diese drei Dateien zu überprüfen.

app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Mage/Core/Model/File/Validator/Image.php

app / code / core / Mage / Checkout / controller / CartController.php zusätzliche Bedingung überprüfen Kunden-ID :

diff --git app/code/core/Mage/Checkout/controllers/CartController.php app/code/core/Mage/Checkout/controllers/CartController.php
index 7c9f28f..bee6034 100644
--- app/code/core/Mage/Checkout/controllers/CartController.php
+++ app/code/core/Mage/Checkout/controllers/CartController.php
@@ -284,14 +284,16 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
     public function addgroupAction()
     {
         $orderItemIds = $this->getRequest()->getParam('order_items', array());
+        $customerId   = $this->_getCustomerSession()->getCustomerId();

-        if (!is_array($orderItemIds) || !$this->_validateFormKey()) {
+        if (!is_array($orderItemIds) || !$this->_validateFormKey() || !$customerId) {
             $this->_goBack();
             return;
         }

         $itemsCollection = Mage::getModel('sales/order_item')
             ->getCollection()
+            ->addFilterByCustomerId($customerId)
             ->addIdFilter($orderItemIds)
             ->load();
         /* @var $itemsCollection Mage_Sales_Model_Mysql4_Order_Item_Collection */
@@ -709,4 +711,14 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
         $this->getResponse()->setHeader('Content-type', 'application/json');
         $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
     }
+
+    /**
+     * Get customer session model
+     *
+     * @return Mage_Customer_Model_Session
+     */
+    protected function _getCustomerSession()
+    {
+        return Mage::getSingleton('customer/session');
+    }
 }

app / code / core / Mage / Sales / Model / Resource / Order / Item / Collection.php hinzugefügt Zusätzliche Methode addFilterByCustomerId in collection.

diff --git app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
index ee83ad48..c02afdf 100644
--- app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
+++ app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
@@ -152,4 +152,20 @@ class Mage_Sales_Model_Resource_Order_Item_Collection extends Mage_Sales_Model_R
         $this->getSelect()->where($resultCondition);
         return $this;
     }
+
+    /**
+     * Filter by customerId
+     *
+     * @param int|array $customerId
+     * @return Mage_Sales_Model_Resource_Order_Item_Collection
+     */
+    public function addFilterByCustomerId($customerId)
+    {
+        $this->getSelect()->joinInner(
+            array('order' => $this->getTable('sales/order')),
+            'main_table.order_id = order.entity_id', array())
+            ->where('order.customer_id IN(?)', $customerId);
+
+        return $this;
+    }
 }

app / code / core / Mage / Core / Modell / Datei / Validator / Image.php

Wenn 'general / reprocess_images / active' false ist, wird die Bildwiederherstellung übersprungen. HINWEIS: Wenn Sie die Bildwiederherstellung deaktivieren, kann der Vorgang des Hochladens von Bildern Sicherheitsrisiken verursachen

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 9d57202..6a939c3 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -91,6 +91,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

Hoffe es wird hilfreich. Ich glaube


Könnten Sie bitte angeben, wie genau wir nach möglichen Problemen mit CartController.php und Collection.php suchen sollen? Wo genau soll auf der Website nach möglichen Störungen gesucht werden?
Icon

Ich habe die Sicherheitspatch-3-Sites aktualisiert. Alle drei Sites überschreiben diese beiden Dateien. Überprüfen und aktualisieren Sie diese beiden Dateien sorgfältig. Es gibt keine Gitches passieren in allen 3 Standorten
Rama Chandran M

10

EE 1.14.2.4

Tippfehler in Zeile 726 des Patches: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

Der Patch scheint 2 Frontend-Dateien zu vermissen:

Gepatcht:

app\design\adminhtml\default\default\template\oauth\authorize\form\login-simple.phtml

Nicht gepatcht:

app\design\frontend\base\default\template\oauth\authorize\form\login-simple.phtml app\design\frontend\rwd\default\template\oauth\authorize\form\login-simple.phtml


Vergessen Sie auch nicht, nach lokalen Überschreibungen zu suchen ... Ich musste manuell eine lokale Codepool-Überschreibung von patchen app\design\adminhtml\default\default\template\sales\order\view\info.phtml


In der Antwort von quasiobject finden Sie Informationen zu einem Problem mit der Online - Kaufabwicklung . Enterprise-Support-Ticket erstellt und auf Antwort von Magento gewartet. Wenn Sie nicht auf einen aktualisierten Patch warten möchten app\design\frontend\enterprise\default\template\giftcardaccount\onepage\payment\scripts.phtml, können Sie die Anweisung "else" so ändern , dass sie das Element form_key wie folgt enthält:
if (($('p_method_' + methodName) && $('p_method_' + methodName).checked) || elements[i].name == 'form_key') { ...


CE 1.9.2.4

Tippfehler in Zeile 694 des Patches: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

Die TrueOrderEdit Erweiterung muss geflickt werden ... Änderung echo $_groupNamean echo $this->escapeHtml($_groupName)in den folgenden Dateien:

app\design\adminhtml\default\default\template\orderedit\sales\order\view\edit.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\history.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\info.phtml


Schließlich sollte diese Kernvorlagendatei wahrscheinlich auch mit demselben $ _groupName-Update gepatcht werden:

app\design\adminhtml\default\default\template\sales\order\view\edit.phtml


Alle 1.X-Versionen

Wenn Sie den /downloaderOrdner (oder /downloader/template) aus Ihrer Codebasis gelöscht haben, müssen Sie möglicherweise die .sh-Patchdatei manuell bearbeiten und den letzten Abschnitt entfernen, beginnend mitdiff --git downloader/template/login.phtml downloader/template/login.phtml

In Bezug auf den Fehler " Ungültiger Geheimschlüssel" finden Sie meine Antwort hier: Magento 1.9 Ungültiger Geheimschlüssel. Bitte aktualisieren Sie die Seite


Ich habe auch den Tippfehler für den Patch 1.7.0.2 gefunden. autocomplete = "neues Pfotenschwert". Beeinflusst es auf jeden Fall die Code-Operation? Wenn ja, vielleicht Version 2 des Patches auf dem Weg?
Icon

Grundsätzlich steht der Tippfehler im Code, der für den FireFox-Trick verantwortlich ist. "Dies ist ein verstecktes Feld, um Firefox vor dem automatischen Ausfüllen des Passworts zu täuschen."
Icon

@kmdsax Ich habe einen Patch vom Support erhalten, um das Problem zu beheben. Aktualisiert meine Antwort mit den Details.
Quasi-Objekt

Könnten Sie mir bitte helfen, meinen Fehler zu lösen ? magento.stackexchange.com/q/204446/57334
zus

9

Wir bei MageHost.pro haben ein Problem im Patch für Magento 1.9.1.1, Patch-Datei, gefundenPATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh

Error:

checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED

Ich habe es behoben, indem ich die Zeilen 454-472 durch 454-471 von ersetzt habe PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh

Alter Code, Zeile 454-472:

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 7f7b9d0..8a28da2 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,7 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {
-                return null;
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
             }
         }
         throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));

Neuer Code, Zeilen 454-471:

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 8618bca..d3aba19 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,6 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

Hast du dir andere Versionen angesehen? Wenn ja, liegt dasselbe Problem vor?
Icon

1
@Icon Wir haben ce-1.6.0.0 ce-1.6.1.0 ce-1.6.2.0 ce-1.7.0.0 ce-1.7.0.1 ce-1.7.0.2 ce-1.8.0.0 ce-1.8.1.0 ce-1.9.0.0 ce getestet -1.9.0.1 ce-1.9.1.0 ce-1.9.1.1 ce-1.9.2.0 ce-1.9.2.1 ce-1.9.2.2 ce-1.9.2.3 ce-1.9.2.4 ce-1.9.3.0 ce-1.9.3.1 ce -1.9.3.2 ce-1.9.3.3 ce-1.9.3.4. Bei allen Versionen waren alle vorherigen Patches installiert. Der einzige mit einem Patch-Fehler war ce-1.9.1.1.
Jeroen Vermeulen - MageHost

6

In diesem Patch scheint nur 1 Formularschlüssel hinzugefügt worden zu sein.

diff --git app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
index 8756f3f..1c5cf37 100644
--- app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
+++ app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
@@ -96,7 +96,10 @@ class Mage_Adminhtml_Block_Widget_Form_Container extends Mage_Adminhtml_Block_Wi

     public function getDeleteUrl()
     {
-        return $this->getUrl('*/*/delete', array($this->_objectId => $this->getRequest()->getParam($this->_objectId)));
+        return $this->getUrl('*/*/delete', array(
+            $this->_objectId => $this->getRequest()->getParam($this->_objectId),
+            Mage_Core_Model_Url::FORM_KEY => $this->getFormKey()
+        ));
     }

Wenn Sie Probleme beim Löschen eines Widgets im Admin-Bereich haben, stellen Sie sicher, dass Ihre Lösch-URL vom Block generiert wird und dass Sie keine Überschreibungen dieses Blocks haben.


Wie kann ich dieses Problem lösen ?
zus

5

Kein Checkout auf EE 1.11+ möglich

In app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtmlder Form Schlüssel wurde Validierungscode entfernt und es bricht die gesamte Kasse, weitere Infos hier: https://magento.stackexchange.com/a/193442/2380

Problemumgehung für den Moment (da ein V2 für EE 1.11+ veröffentlicht wird, um dieses Problem zu beheben): Setzen Sie die Vorlagendatei für beide enterprise/defaultund rwd/entrepriseThemes zurück.

Unterschiede zwischen Patch und Version

EDIT: 1.9.3.6 wurde veröffentlicht, daher sind diese Informationen nicht mehr relevant

Eines der Hauptprobleme, das im Moment angesprochen wurde, ist, dass in Version 1.9.3.5 drei Sicherheitspatches fehlen. Daher empfehle ich dringend, nur zu patchen und noch nicht auf 1.9.3.5 zu aktualisieren


Haben Sie weitere Informationen dazu, z. B. ein Beispiel für eine nicht gepatchte Datei in 1.9.3.5?
Luke Rodgers

Ist dies für CE / Open Source noch nicht abgeschlossen? Für EE / Commerce ist kein 1.14.3.5-Download verfügbar, nur 1.14.3.6.
7ochem

Auf der CE / Open Source-Download-Seite gibt es außerdem nur noch 1.9.3.6 (seit dem 14. September heißt es) und keine 1.9.3.5 mehr
7ochem

4
1.9.3.6 wurde gestern veröffentlicht, diese Information ist nicht mehr relevant.
Ryan Hoerr

5

Ich versuche immer noch festzustellen, ob dies aufgrund von benutzerdefinierten Vorlagen in unserem Shop eindeutig ist. Es ist jedoch mit dem angewendeten Patch nicht mehr funktionsfähig, wenn wir zurückkehren. Ich wollte posten, falls andere das auch melden können.

In EE 1.14.2.0 können wir den Schritt "Zahlungsinformationen" beim Auschecken mit dem angewendeten Patch nicht überschreiten. Wir sind bis zu SUPEE-9767 v2 auf dem neuesten Stand, bevor wir den neuen Patch anwenden.

Unser Problem scheint darauf zurückzuführen zu sein, dass sie Folgendes entfernen || elements[i].name == 'form_key':

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Es ist aus der enablePaymentMethodsSchleife entfernt. Anscheinend bleibt die verborgene form_key-Eingabe des Formulars deaktiviert und wird daher bei der Übermittlung nicht an den Controller übergeben.

<input name="form_key" type="hidden" value="X" disabled="">

Fällt dann $this->_validateFormKey()aus und der Controller gibt nichts zurück.


Update 1 (2017-09-18) : Ich habe am Freitag ein Ticket an den Magento-Support gesendet und wurde darüber informiert , dass noch keine Händler gemeldet haben. Anstatt Backups zu senden, habe ich versucht, bei einer Neuinstallation von 1.14.2.4 und 1.14.3.4 mit den entsprechenden Patches zu duplizieren. Ich konnte duplizieren und auf das Ticket antworten. Warten auf eine neue Antwort.

Hinweis: System> Konfiguration> Admin> Sicherheit> Formularschlüsselüberprüfung beim Auschecken aktivieren muss "Ja" sein. Wenn "Nein", wird das Problem nicht angezeigt.


Update 2 (18.09.2017) : Es wurde bemerkt, dass ich das Problem mit 1.14.3.6 nicht duplizieren konnte, aber als ich die obige Vorlagendatei überprüft habe, || elements[i].name == 'form_key'ist es immer noch da. Scheint, dass die Patches es nicht entfernt haben sollten. Schickte diese Informationen auch an den Magento-Support.


Update 3 (2017-09-20): Ich habe gerade einen Patch erhalten, um das Problem für 1.14.0.0–1.14.3.4 zu beheben, der nur die form_keyZeile in der Vorlage wiederherstellt . Fragen Sie den Support für SUPEE-10348.


Gleiches Problem hier am 1.14.2.4
kmdsax

Danke @kmdsax. Ich habe auch ein Ticket eingereicht und warte auf eine Bestätigung des Supports.
Quasi-Objekt

Haben Sie versucht, denselben Fehler in Version 1.9.2.4 CE zu wiederholen?
Icon

1
@Icon habe ich nicht. Ich arbeite für einen Einzelhändler und wir sind EE. Ich glaube jedoch nicht, dass es davon betroffen wäre, da es sich um einen EE-Geschenkkarten-Skriptblock handelt. Das sollte in CE nicht existieren.
Quasi-Objekt

4

Wenn Sie zu Magento Connect wechseln und anschließend auf "Zurück zum Administrator" in der oberen rechten Ecke der Seite klicken. Nach der Rückkehr zum Admin-Dashboard erhalten Sie eine Fehlermeldung

rote Fehlermeldung: "Ungültiger geheimer Schlüssel. Bitte aktualisieren Sie die Seite."

Sobald Sie die Seite aktualisiert haben, ist sie verschwunden.


Aktualisiert: 15. September 2017

Wenn Sie sich bei Magento Admin anmelden, sagen wir Dashboard. Ohne sich vom Dashboard-Bereich abzumelden, öffnen Sie ein anderes Browserfenster im selben Browser und gehen zu example.com/admin. Es wird sich automatisch anmelden und genau dieselbe Meldung anzeigen

rote Fehlermeldung: "Ungültiger geheimer Schlüssel. Bitte aktualisieren Sie die Seite."

Bisher ist es das einzige Problem, das ich gefunden habe. Ich bin mir nicht mal sicher, ob es ein solides Problem ist, da die Nachricht nach der Aktualisierung verschwindet.


Vielleicht liegt dies daran, dass Magento Connect geschlossen wurde: magento.com/blog/magento-news/…
Kevin Krieger,

1
@KalvinKlien Ich bin auch auf 1.7.0.2. Ich sehe diese Nachricht jedes Mal, wenn ich zwischen Admin und Magneto Connect (/ downloader) hin und her komme. Ich versuche nur herauszufinden, ob andere es auch sehen. Scheint kein großes Problem zu sein.
Icon

3
Ich sehe das auch in 1.9.2.1. Jemand hat bereits einen Fehlerbericht im Magento Bug Tracker abgelegt .
Michael Thessel

1
Es ist ein Fehler in Mage_Adminhtml_Controller_Action :: preDispatch (): if ($_keyErrorMsg != '') { Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };sollte seinif (!$_isValidFormKey){ Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };
Laura

1
hmmmm, dies ist bisher eine Teillösung. Ich sehe immer noch den Fehler von Zeit zu Zeit, nicht sicher, ob es einen anderen Controller gibt, der dieses Problem hat
Kalvin Klien

4

Ich habe den Magento-Support nach dem folgenden Problem gefragt

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Sie haben mir heute Morgen geantwortet und einen neuen Patch PATCH_SUPEE-10348 veröffentlicht .

Magento hat das Problem gerade gelöst, indem es in dieser Datei ein Zurücksetzen durchgeführt hat.

Index: app / design / frontend / enterprise / default / template / geschenkkartenkonto / onepage / payment / scripts.phtml
================================================ =================
--- app / design / frontend / enterprise / default / template / geschenkkartenkonto / onepage / payment / scripts.phtml
+++ App / Design / Frontend / Unternehmen / Standard / Vorlage / Geschenkkartenkonto / Onepage / Zahlung / scripts.phtml
@@ -35,6 +35,7 @@
             if (elements [i] .name == 'payment [method]'
                 || elements [i] .name == 'payment [use_customer_balance]'
                 || elements [i] .name == 'payment [use_reward_points]'
+ || elements [i] .name == 'form_key'
             ) {
                 methodName = elements [i] .value;
                 if ((free && methodName == 'free') || (! free && methodName! = 'free')) {

1
Kann bestätigen, dass dieser Patch im Partnerportal verfügbar ist.
Luke Rodgers

Danke für die Information. Ich wurde vergessen, diese Informationen zu geben
cghisi

3

Ich bin auf ein Problem mit E-Mail-Vorlagen, benutzerdefiniertem CSS und Modman gestoßen. Wenn Sie z. B. ein Design rwd/defaulthaben, das auf einem benutzerdefinierten skin/frontend/package/theme/css/email-inline.cssDesign basiert , und Ihre Skin-Dateien über einen Symlink über Modman eingebunden werden, wird das CSS nach dem Anwenden von SUPEE-10266 nicht zur E-Mail-Vorlage hinzugefügt. Das Problem ist, dass in Mage_Core_Model_Email_Template_Abstract::_getCssFileContenteinige Prüfungen eingeführt wurden:

                 '_theme' => $theme,
             )
         );
+        $filePath = realpath($filePath);
+        $positionSkinDirectory = strpos($filePath, Mage::getBaseDir('skin'));
+        $validator = new Zend_Validate_File_Extension('css');

-        if (is_readable($filePath)) {
+        if ($validator->isValid($filePath) && $positionSkinDirectory !== false && is_readable($filePath)) {
             return (string) file_get_contents($filePath);
         }

Ich habe es app/code/local/Mage/Core/Model/Email/Template/Abstract.phpvorerst mit einem dreckigen Hack mit Override gelöst . Ich musste die Prüfung abschwächen, damit die CSS-Datei aus dem Modman-Verzeichnis geladen werden kann:

$filePath = realpath($filePath);
$baseDirectory = Mage::getBaseDir();
$fullSkinDirectory = Mage::getBaseDir('skin');
$relativeSkinDirectory = substr($fullSkinDirectory, strlen($baseDirectory));
$positionSkinDirectory = strpos($filePath, $relativeSkinDirectory);
$validator = new Zend_Validate_File_Extension('css');
$noDirectoryTraversal = strpos($filename, '..') === false;

if ($validator->isValid($filePath) && $positionSkinDirectory !== false && $noDirectoryTraversal
    && is_readable($filePath)) {
    return (string) file_get_contents($filePath);
}

Es wird nicht mehr geprüft, ob der Pfad das vollständige Skin-Verzeichnis enthält, sondern nur, ob der Pfad die Zeichenfolge enthält /skinund ob dies nicht der Fall ist .., wodurch Verzeichnisüberquerungsangriffe verhindert werden sollen.


1
Meine Antwort wurde gelöscht, da Ihre vollständiger ist. Der Hack, den ich verwendet habe, war, if (strpos($filename, '..') === false) { $positionSkinDirectory = 1; }die Zeile zu überprüfen, nachdem sie $positionSkinDirectoryursprünglich festgelegt wurde. Dies sollte helfen, das Durchsuchen von Verzeichnissen zu vermeiden.
Peter O'Callaghan

Ich möchte darauf hinweisen, dass Schwächen in diesem Fall bedeutet, es wieder anfällig zu machen, und dass die Verwendung dieser Lösung ein direktes Sicherheitsrisiko darstellt
Flyingmana,

@ PeterO'Callaghan gute Idee! Ich habe gerade Ihren Scheck zu meinem Antwortcode hinzugefügt.
Simon

@Flyingmana dies sollte das Risiko drastisch senken.
Simon

2

Hier ist die vollständige Liste der vom autocomplete="new-pawwsord"Tippfehler betroffenen Patches :

CE 1.7.0.0-1.7.0.2      PATCH_SUPEE-10266_CE_1.7.0.2_v1-2017-09-13-06-27-12.sh:664
CE 1.8.0.0-1.8.1.0      PATCH_SUPEE-10266_CE_1.8.1.0_v1-2017-09-13-06-28-08.sh:665
CE 1.9.0.0-1.9.0.1      PATCH_SUPEE-10266_CE_1.9.0.1_v1-2017-09-13-06-31-01.sh:665
CE 1.9.1.0              PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh:733
CE 1.9.1.1              PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh:734
CE 1.9.2.0-1.9.2.4      PATCH_SUPEE-10266_CE_1.9.2.4_v1-2017-09-13-06-37-37.sh:694
CE 1.9.3.0-1.9.3.2      PATCH_SUPEE-10266_CE_1.9.3.2_v1-2017-09-13-06-38-58.sh:694
CE 1.9.3.3-1.9.3.4      PATCH_SUPEE-10266_CE_1.9.3.4_v1-2017-09-13-06-39-58.sh:694
EE 1.12.0.0             PATCH_SUPEE-10266_EE_1.12.0.0_v1-2017-09-13-08-09-14.sh:696
EE 1.12.0.1-1.12.0.2    PATCH_SUPEE-10266_EE_1.12.0.2_v1-2017-09-13-08-06-57.sh:696
EE 1.13.0.0-1.13.1.0    PATCH_SUPEE-10266_EE_1.13.1.0_v1-2017-09-13-08-04-05.sh:696
EE 1.14.0.0-1.14.0.1    PATCH_SUPEE-10266_EE_1.14.0.1_v1-2017-09-13-08-01-04.sh:696
EE 1.14.1.0             PATCH_SUPEE-10266_EE_1.14.1.0_v1-2017-09-13-07-57-59.sh:764
EE 1.14.2.0             PATCH_SUPEE-10266_EE_1.14.2.0_v1-2017-09-13-07-07-14.sh:764
EE 1.14.2.1-1.14.2.4    PATCH_SUPEE-10266_EE_1.14.2.4_v1-2017-09-13-06-57-21.sh:726
EE 1.14.3.0-1.14.3.2    PATCH_SUPEE-10266_EE_1.14.3.2_v1-2017-09-13-06-53-35.sh:716
EE 1.14.3.3-1.14.3.4    PATCH_SUPEE-10266_EE_1.14.3.3_v1-2017-09-13-06-51-06.sh:716

0

In Magento 1.8.1 gab es Probleme mit folgenden Dateien:

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/locale/en_US/Mage_Adminhtml.csv

Am Ende habe ich die neueste Magento-Version heruntergeladen, die den Patch NICHT enthält. In diesem Fall Magento 1.9.3.4 .

Das Ersetzen der "beschädigten" Dateien durch die Dateien aus dem Download behebt das Problem. Ich konnte den Patch erfolgreich anwenden.

Aber Vorsicht: Ich empfehle, die 3 Dateien nach dem Patchen wieder zurückzusetzen und die Dateien manuell zu bearbeiten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.