Parche de seguridad SUPEE-10415: ¿posibles problemas?

37

Se ha lanzado el nuevo parche Magento 1, SUPEE-10415 .

Este parche proporciona protección contra varios tipos de problemas relacionados con la seguridad.

Página de información: https://magento.com/security/patches/supee-10415
Página de descarga: https://magento.com/tech-resources/download

¿Cuáles son los posibles problemas a tener en cuenta?

Además, comparta todos los errores y problemas que haya encontrado después de la instalación del parche.


  • Problema con la aplicación de SUPEE-10415 en vanilla 1.9.1.1 , los shows no se pueden aplicar debido al mensaje de error hunk en Image.php . EDITAR: a partir del 7 de diciembre de 2017, la corrección se proporciona en SUPEE-10497

  • Debe tener 8788 Versiones 2 instaladas, de lo contrario verá errores de "Tipo de datos no admitidos". Más información.

  • Error "404: Página no encontrada" del directorio de errores / después de actualizar a SUPEE-10415. Este problema ocurre solo en instalaciones de Magento que ejecutan ciertas extensiones de terceros.
    Solución alternativa: confirme que no haya advertencias de PHP generadas por ninguna de las extensiones o personalizaciones.
Icono
fuente
55
Implementado sin problemas en Magento 1.9.2.4CE aquí: la mayoría de los cambios parecen ser el saneamiento de las variables en el administrador, específicamente el almacenamiento de archivos de registro. Parece haber algunos cambios en la API de jabón también en términos de desinfección. Las revisiones también se desinfectan en el área de administración, por lo que puede haber un posible exploit donde se puede publicar código malicioso en una revisión en el mes (especulativo)
Ricky Odin Matthews
2
Implementado en Magento 1.9.3.0 CE sin problemas aquí. Se requiere el parche anterior a 10266 si aún no lo ha aplicado.
Danmentzer
1
En 1.9.1.0 - en las "Reglas de precios del carrito de compras", el parche causa un error - error grave en la regla de visualización - entrada de registro -a: 5: {i: 0; s: 23: "Tipo de datos no admitido N"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- se corrigió la reversión del parche, por lo que es algo en SUPEE-10415
Laith el
1
No tengo la reputación de publicar una respuesta, pero no puede actualizar a Magento 1.9.3.7 y luego usar Git para fusionarse con este parche: la constante MAXIMUM_PASSWORD_LENGTH se agrega dos veces si usa el comportamiento predeterminado de Git (no tengo idea si hay configuraciones que son soluciones para esto).
toon81
1
Para problemas de 1.9.1.1: utilice SUPEE-10497 en su lugar, se lanzó recientemente para solucionar este problema en 1.9.1.1. Lea las notas de la versión ya que este parche requiere eliminar SUPEE-10266 antes de la instalación.
Piotr Kaminski

Respuestas:

26

Los siguientes archivos se actualizan / agregan después del parche aplicado SUPEE - 10415.

app/Mage.php
app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Api/Helper/Data.php
app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
app/code/core/Mage/Core/Helper/String.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Customer/Model/Customer.php
app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Log/Helper/Data.php
app/code/core/Mage/Rule/Model/Abstract.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/code/core/Zend/Form/Decorator/Form.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
app/locale/en_US/Mage_Adminhtml.csv
app/locale/en_US/Mage_Customer.csv
js/mage/adminhtml/backup.js
lib/Varien/Filter/FormElementName.php

Algunos puntos importantes:

1) Extensiones de archivo permitidas: log, txt, html, csv. verifique los archivos a continuación

app/Mage.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Log/Helper/Data.php

2) La longitud máxima de la contraseña establecida es de 256 caracteres y la verificación de validación en el app/code/core/Mage/Customer/Model/Customer.phparchivo

@@ -74,6 +74,11 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     const MINIMUM_PASSWORD_LENGTH = 6;

     /**
+     * Maximum Password Length
+     */
+    const MAXIMUM_PASSWORD_LENGTH = 256;
+
+    /**
      * Model event prefix
      *
      * @var string
@@ -876,6 +881,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
@@ -902,7 +911,7 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     }

     /**
-     * Validate customer attribute values on password reset
+     * Validate customer password on reset
      * @return bool
      */
     public function validateResetPassword()
@@ -916,6 +925,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (!Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');

Para EE Edition Se agregaron cuatro archivos adicionales

app/code/community/OnTap/Merchandiser/Block/Adminhtml/Catalog/Product/List.php
app/design/adminhtml/default/default/template/merchandiser/smartmerch/tab.phtml
app/design/frontend/rwd/enterprise/template/giftcardaccount/onepage/payment/scripts.phtml
app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Algunos puntos de impotencia en EE

Se agregó una condición en los archivos a continuación

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

Actualice la siguiente condición en sus archivos de tema.

if (elements[i].name == 'form_key') 
{
                continue;
 }

Para más información:

https://magento.com/security/patches/supee-10415 http://devdocs.magento.com/guides/m1x/ce19-ee114/ee1.14_release-notes.html#ee114-11436 http: // devdocs. magento.com/guides/m1x/ce19-ee114/ce1.9_release-notes.html#ce19-1936

Rama Chandran M
fuente
Después de aplicar SUPEE-10415, tanto el front-end como el back-end obtienen un error 404, ¿cómo puedo resolver este problema? magento.stackexchange.com/q/215620/57334
zus
¿Puedes crear un ticket por separado y explicarlo con un registro de errores y agregar un comentario? Te ayudaré. este problema debido a .htaccess o anula el módulo en local.
Rama Chandran M
20

SUPEE-10415 ...

  1. Resuelve algunos problemas del panel de administración XSS en las siguientes áreas:

    • Informe de revisiones de productos
    • Informe de etiquetas de producto
    • Revisiones de productos agregar / editar interfaz
    • Acuerdos de facturación
    • pestaña del editor de contenido xmlconnect
    • Reglas serializadas
  2. Restringe las extensiones de archivo que se pueden usar para el sistema y los archivos de registro de excepciones. Permitir extenciones de ficheros: .log, .txt, .html,.csv

  3. Establece un límite superior de 256 caracteres en las contraseñas de las cuentas de los clientes. Este cambio particular es ridículo; No estoy seguro de dónde sacaron esta brillante idea.

Ninguno de estos cambios parecen ser cambios masivos o incompatibles con versiones anteriores, excepto quizás por la restricción de la longitud de la contraseña del cliente.

t-richards
fuente
99
La longitud de la contraseña 256 es en realidad un error en Magento sin parches, porque el campo de la contraseña de la base de datos está en customer_entity_varchar.value que es maxlength = 255. Sin embargo, no estoy seguro de lo que sucede sin parche si intenta configurar más de 255, probablemente causa un problema.
Ricky Odin Matthews
12
Estás en lo correcto; customer_entity_varchar.value tiene un tamaño de columna limitado. Sin embargo, no es un error porque la contraseña no está almacenada en esa columna. La contraseña salada y hash se almacena allí. Este valor siempre tendrá una longitud fija, independientemente del tamaño de la contraseña original. Antes de este parche, no habría habido ningún problema para ingresar una contraseña de más de 255 caracteres.
t-richards
3
Supongo que el cambio de longitud de la contraseña tiene algo que ver con APPSEC-1330. magento.com/security/patches/supee-10415
cuasiobject
77
Quizás este es su pensamiento, Rob: stackoverflow.com/a/98857/8199523
RickyMage123
1
@ t-richards gran punto, estás justo allí. ¿Por qué crees que lo harían, creo que tal vez el hash de una contraseña larga podría causar un problema de DoS en términos de uso de la CPU, seguramente una contraseña más larga requiere más CPU / Memoria en PHP para el hash?
Ricky Odin Matthews
12

SUPEE 10415 Requiere el parche 8788 v2

Encontré el mismo error que en una publicación anterior, pero parece que se ha eliminado.

a:5:{i:0;s:23:"Unsupported data type N";i:1;s:2942:"#0 /chroot/home/mywebroot/html/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue->  read('N', ';')
#1 /chroot/home/mywebroot/html/lib/Unserialize/Parser.php(53): Unserialize_Reader_Arr->read('N', ';')
#2 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Helper/UnserializeArray.php(44): Unserialize_Parser->unserialize('a:6:{s:4:"type"...')
#3 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(179): Mage_Core_Helper_UnserializeArray->unserialize('a:6:{s:4:"type"...')
#4 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(353): Mage_Rule_Model_Abstract->getConditions()
#5 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(216): Mage_Rule_Model_Abstract->validate(Object(   Mage_Sales_Model_Quote_Address))
#6 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(242): Mage_SalesRule_Model_Validator->_canProcessRule(Object(  Mage_SalesRule_Model_Rule), Object(Mage_Sales_Model_Quote_Address))
#7 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Quote/Freeshipping.php(74): Mage_SalesRule_Model_Validator->processFreeShipping(Object(  Mage_Sales_Model_Quote_Item))
#8 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote/Address.php(1013): Mage_SalesRule_Model_Quote_Freeshipping->collect(Object(    Mage_Sales_Model_Quote_Address))
#9 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote.php(1331): Mage_Sales_Model_Quote_Address->collectTotals()
#10 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/Model/Cart.php(458): Mage_Sales_Model_Quote->collectTotals()
#11 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/controllers/CartController.php(127): Mage_Checkout_Model_Cart->save()
#12 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_CartController->indexAction()
#13 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#14 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(   Mage_Core_Controller_Request_Http))
#15 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#16 /chroot/home/mywebroot/html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#17 /chroot/home/mywebroot/html/index.php(96): Mage::run('', 'store')
#18 {main}";s:3:"url";s:15:"/checkout/cart/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

Encontré el error anterior cuando instalé el nuevo parche en M 1.8.00 CE La causa específica parece deberse a que con el parche v2 de 8788 hicimos arreglos manuales para la mayoría de los problemas de ese parche, pero nos perdimos las porciones no serializadas.

En lugar de revertir el parche, hice las modificaciones manualmente y ahora el sitio funciona correctamente.

A continuación encontrará el código para el parche 8788

diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
index 423902a..2c01684 100644
--- lib/Unserialize/Parser.php
+++ lib/Unserialize/Parser.php
@@ -34,6 +34,7 @@ class Unserialize_Parser
     const TYPE_DOUBLE = 'd';
     const TYPE_ARRAY = 'a';
     const TYPE_BOOL = 'b';
+    const TYPE_NULL = 'N';

     const SYMBOL_QUOTE = '"';
     const SYMBOL_SEMICOLON = ';';

diff --git lib/Unserialize/Reader/Arr.php lib/Unserialize/Reader/Arr.php
index caa979e..cd37804 100644
--- lib/Unserialize/Reader/Arr.php
+++ lib/Unserialize/Reader/Arr.php
@@ -101,7 +101,10 @@ class Unserialize_Reader_Arr
         if ($this->_status == self::READING_VALUE) {
             $value = $this->_reader->read($char, $prevChar);
             if (!is_null($value)) {
-                $this->_result[$this->_reader->key] = $value;
+                $this->_result[$this->_reader->key] =
+                    ($value == Unserialize_Reader_Null::NULL_VALUE && $prevChar == Unserialize_Parser::TYPE_NULL)
+                        ? null
+                        : $value;
                 if (count($this->_result) < $this->_length) {
                     $this->_reader = new Unserialize_Reader_ArrKey();
                     $this->_status = self::READING_KEY;

diff --git lib/Unserialize/Reader/ArrValue.php lib/Unserialize/Reader/ArrValue.php
index d2a4937..c6c0221 100644
--- lib/Unserialize/Reader/ArrValue.php
+++ lib/Unserialize/Reader/ArrValue.php
@@ -84,6 +84,10 @@ class Unserialize_Reader_ArrValue
                     $this->_reader = new Unserialize_Reader_Dbl();
                     $this->_status = self::READING_VALUE;
                     break;
+                case Unserialize_Parser::TYPE_NULL:
+                    $this->_reader = new Unserialize_Reader_Null();
+                    $this->_status = self::READING_VALUE;
+                    break;
                 default:
                     throw new Exception('Unsupported data type ' . $char);
             }

diff --git lib/Unserialize/Reader/Null.php lib/Unserialize/Reader/Null.php
new file mode 100644
index 0000000..93c7e0b
--- /dev/null
+++ lib/Unserialize/Reader/Null.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to [email protected] so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magento.com for more information.
+ *
+ * @category    Unserialize
+ * @package     Unserialize_Reader_Null
+ * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Class Unserialize_Reader_Null
+ */
+class Unserialize_Reader_Null
+{
+    /**
+     * @var int
+     */
+    protected $_status;
+
+    /**
+     * @var string
+     */
+    protected $_value;
+
+    const NULL_VALUE = 'null';
+
+    const READING_VALUE = 1;
+
+    /**
+     * @param string $char
+     * @param string $prevChar
+     * @return string|null
+     */
+    public function read($char, $prevChar)
+    {
+        if ($prevChar == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            $this->_value = self::NULL_VALUE;
+            $this->_status = self::READING_VALUE;
+            return null;
+        }
+
+        if ($this->_status == self::READING_VALUE && $char == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            return $this->_value;
+        }
+        return null;
+    }
+}

También puede leer más sobre el error de esta publicación SOLUCIONADO: la nueva clase Unserialize_Parser arroja excepciones en valores NULL

danmentzer
fuente
aha! Buen punto, se requiere 8788 V2 para evitar el problema.
Icono
¿Puede decir, en qué páginas de su sitio web vio errores de "tipo de datos no admitidos"? Intentando replicar.
Icono
Pude activarlo en la página de categoría y la página del producto y el carrito mientras había un producto en el carrito.
Danmentzer
@danmentzer cómo puedo solucionar el error, el parche de reversión 9767 v1 :: error: justpaste.it/1e9pn
zus
@zus Acabo de ver tu publicación. ¿Lo resolviste por el aspecto de tu pasta? Me aventuraría a adivinar tres posibles razones diferentes para tu error. 1. Tiene la versión de parche incorrecta (esta es la menos probable) 2. Su parche ya no está aplicado. 3. Tal vez haya solucionado algunos de ellos manualmente y al parche no le gusta cómo lo hizo. Lo siento si esto no es útil
danmentzer
11

Hemos tenido un problema con este parche en el que todas las páginas del sitio comenzaron a mostrar el error "404: Página no encontrada" del errors/directorio. Después de un poco de excavación, resultó que fue causado por una advertencia PHP emitida en Mage_Core_Model_App::init, que luego causa un Mage_Core_Model_Store_Exceptionen las siguientes líneas del parche:

diff --git app/Mage.php app/Mage.php
index 566027d..165928d 100644
--- app/Mage.php
+++ app/Mage.php
@@ -805,7 +805,12 @@ final class Mage
         static $loggers = array();

         $level  = is_null($level) ? Zend_Log::DEBUG : $level;
-        $file = empty($file) ? 'system.log' : $file;
+        $file = empty($file) ? 'system.log' : basename($file);
+
+        // Validate file extension before save. Allowed file extensions: log, txt, html, csv
+        if (!self::helper('log')->isLogFileExtensionValid($file)) {
+            return;
+        }

         try {
             if (!isset($loggers[$file])) {
  1. Una advertencia de PHP ocurre antes de que las tiendas se hayan inicializado
  2. La advertencia es recogida por mageCoreErrorHandler(), que llama Mage::log()para registrar el mensaje en el archivo de registro.
  3. Mage::log() llamadas Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructllama Mage::getStoreConfig(), que llama Mage::app()->getStore(), pero las tiendas aún no se han inicializado y Mage_Core_Model_Store_Exceptionse lanza un
  5. app/Mage.php:647 captura la excepción y devuelve una página 404

Todavía no estoy seguro de cuál es la solución, aparte de corregir la advertencia y / o detectar la excepción al verificar la extensión del archivo de registro. Voy a informar esto a Magento para ver qué piensan.

Tomas Gerulaitis
fuente
¿Qué versión estás usando?
Icono
1
@Icon 1.9.3.6. Me di cuenta de que algunos de nuestros proyectos menos actualizados no tenían el __construct()método Mage_Log_Helper_Data, por lo que no se verían afectados por esto, pero las últimas ediciones comunitarias y empresariales sí.
Tomás Gerulaitis
Parece que magento abordó esta pregunta devdocs.magento.com/guides/m1x/ce19-ee114/…
Ícono
¿Magento mencionó si planean solucionar este problema con el próximo parche?
Icono
1
@Icono Vimos errores en la administración y en la interfaz, porque el problema estaba ocurriendo durante la inicialización de la configuración de Magento.
Tomás Gerulaitis
8

1.Resuelto: problema de clave secreta no válida cuando un usuario carga el administrador

En estos parches, Magento ya no muestra el “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin .

Al cambiar el código en

app/code/core/Mage/Adminhtml/Controller/Action.php

estricta contraseña de todos los clientes a longitud MAX 256:

Ya sabemos que la longitud mínima de la contraseña de magento 1.x es 6 .

pero en este parche, magento tiene un límite de longitud máxima de 256.

En este caso, magento ha realizado cambios en función de la clase de modelovalidate() del Cliente . Por lo tanto, si alguien ha anulado la clase y también anula, entonces debe agregar el siguiente código enthat override class

if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
   $errors[] = Mage::helper('customer')
       ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
}

Add $this->escapeHtml()and Mage :: helper ('core') -> quoteEscape () para algunos archivos donde es posible un ataque XSS

Si alguien anula estos archivos, entonces debe agregar el siguiente código para repetir la clase de anulación 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

reemplazar

$ this -> _ headerText = Mage :: helper ('informes') -> __ ('Revisiones para% s', $ producto-> getName ());

con

$ this -> _ headerText = Mage :: helper ('informes') -> __ ('Comentarios para% s', $ this-> escapeHtml ($ product-> getName ()));

2.app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php

reemplazar

$ this -> _ headerText = Mage :: helper ('informes') -> __ ('Etiquetas enviadas a% s', $ producto-> getName ());

con

$this->_headerText = Mage::helper('reports')->__('Tags submitted to %s', $this->escapeHtml($product->getName()));

3.app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php

reemplazar

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $product->getName() . '</a>'

con

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $this->escapeHtml($product->getName()) . '</a>'

  1. La factura de la vista del pedido de ventas está de acuerdo: app / design / adminhtml / default / default / template / sales / billing / Agreement / view / tab / info.phtml

reemplazar

<?php echo $this->getCustomerEmail() ?>

con

<?php echo $this->escapeHtml($this->getCustomerEmail()) ?>

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / content.phtml por Mage :: helper ('core') -> quoteEscape

reemplazar

this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->jsQuoteEscape($page['label']) ?></option>';

con

$this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->quoteEscape($page['label']) ?></option>';

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / design / image_edit.phtml por Mage :: helper ('core') -> quoteEscape

reemplazar

<option value="<?php echo $page['value']; ?>"><?php echo $page['label']; ?></option>

con

<option value="<?php echo $page['value']; ?>"><?php echo Mage::helper('core')->quoteEscape($page['label']); ?></option>

Amit Bera
fuente
44
Gracias @Amit, me perdí "Resuelto: problema de clave secreta no válida" en mi ans :). +1
Rama Chandran M
1
de nada:) ... has hecho un buen trabajo en esta pregunta
Amit Bera
7

Si ya ha aplicado SUPEE-10358 ^, o parcheado manualmente app/code/core/Mage/Adminhtml/Controller/Action.phppara el problema de " Clave secreta no válida ", deberá eliminar manualmente esa sección del archivo de parche:

diff --git app/code/core/Mage/Adminhtml/Controller/Action.php app/code/core/Mage/Adminhtml/Controller/Action.php
index 2a8e63f..f2ee208 100644
--- app/code/core/Mage/Adminhtml/Controller/Action.php
+++ app/code/core/Mage/Adminhtml/Controller/Action.php
@@ -186,7 +186,7 @@ class Mage_Adminhtml_Controller_Action extends Mage_Core_Controller_Varien_Actio
                 'message' => $_keyErrorMsg
             )));
         } else {
-                if ($_keyErrorMsg != ''){
+                if (!$_isValidFormKey){
                 Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg);
             }
             $this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );

Además, si ya ha corregido el error tipográfico " new-pawwsord " (introducido en SUPEE-10266) app/design/adminhtml/default/default/template/backup/dialogs.phtml, elimine también esa sección del parche:

diff --git app/design/adminhtml/default/default/template/backup/dialogs.phtml app/design/adminhtml/default/default/template/backup/dialogs.phtml
index c5a3f82..2ff57cc 100644
--- app/design/adminhtml/default/default/template/backup/dialogs.phtml
+++ app/design/adminhtml/default/default/template/backup/dialogs.phtml
@@ -158,7 +158,7 @@
                             <td class="value">
                                 <!-- This is a dummy hidden field to trick firefox from auto filling the password -->
                                 <input type="password" class="input-text no-display" name="dummy" id="dummy" />

-                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-pawwsord">
+                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-password">
                             </td>
                         </tr>
                         <tr>

^ MageSupport proporcionó SUPEE-10358 en respuesta a un ticket de soporte EE con respecto al problema InvalidSecretKey

kmdsax
fuente
5

Problema: el parche no funciona en vanilla 1.9.1.1

Edición 1: corrección agregada a continuación.

Edición 2: mi solución ya no es necesaria, Magento proporcionó SUPEE-10497 que soluciona este problema.

Problema:

# file: PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

checking file app/Mage.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Add.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
checking file app/code/core/Mage/Adminhtml/Controller/Action.php
checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
checking file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
checking file app/code/core/Mage/Api/Helper/Data.php
checking file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
checking file app/code/core/Mage/Core/Helper/String.php
checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED
checking file app/code/core/Mage/Core/etc/config.xml
checking file app/code/core/Mage/Core/etc/system.xml
Hunk #1 succeeded at 651 (offset 1 line).
Hunk #2 succeeded at 661 (offset 1 line).
checking file app/code/core/Mage/Customer/Model/Customer.php
checking file app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
checking file app/code/core/Mage/Log/Helper/Data.php
checking file app/code/core/Mage/Rule/Model/Abstract.php
checking file app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
checking file app/code/core/Zend/Form/Decorator/Form.php
checking file app/design/adminhtml/default/default/template/backup/dialogs.phtml
checking file app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
checking file app/locale/en_US/Mage_Adminhtml.csv
checking file app/locale/en_US/Mage_Customer.csv
checking file js/mage/adminhtml/backup.js
checking file lib/Varien/Filter/FormElementName.php

El vainilla Magento 1.9.1.1 se descargó de https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Parches previamente aplicados en este Magento 1.9.1.1:

2017-11-29 07:37:12 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-11-29 07:37:12 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-11-29 07:37:12 UTC | SUPEE-6285 | CE_1.9.1.1 | v2 | 7226d88b1eeb07a5fbc4e62be189a5219457cc14 | Mon Jun 22 16:32:26 2015 +0300 | 202596e441..7226d88b1e
2017-11-29 07:37:12 UTC | SUPEE-6482 | CE_1.9.2.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-11-29 07:37:12 UTC | SUPEE-6788 | CE_1.9.1.1 | v1 | 2349a68440e870cd68dfa81fb982f3b7a42cd099 | Fri Oct 23 14:49:16 2015 +0300 | b240663
2017-11-29 07:37:12 UTC | SUPEE-7405-CE-1-9-1-1 | CE_1.9.1.1 | v1 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e | Tue Jan 19 15:29:35 2016 +0200 | 2349a68440..f1c57f70de
2017-11-29 07:37:12 UTC | SUPEE-7405 | CE_1.9.1.1 | v1.1 | 38d673b4d2b132c6df53becc9d92346aa5d9627e | Fri Feb 5 13:28:39 2016 +0200 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e..38d673b4d2b132c6df53becc9d92346aa5d9627e
2017-11-29 07:37:12 UTC | SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1 | 1609c0d0be86473d357346fa51f93c12b365d7a1 | Tue Dec 8 12:53:31 2015 +0200 | e1fc3c59c9587427b8a9c88655715f27afbfe970..1609c0d0be86473d357346fa51f93c12b365d7a1
2017-11-29 07:37:12 UTC | SUPEE-8167 | EE_1.14.2.0 | v1 | 87bb97f9b0b2871f842b7faabf667a81806f937e | Thu Apr 27 13:31:21 2017 +0300 | 6010eb82..87bb97f9b
2017-11-29 07:37:12 UTC | SUPEE-8788 | CE_1.9.1.1 | v2 | 8d9fad1daf5131de3430ef09b0816d3d133c8412 | Mon Sep 26 14:06:18 2016 +0300 | 38d673b4d2..8d9fad1daf
2017-11-29 07:37:12 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-11-29 07:37:13 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523
2017-11-29 07:37:13 UTC | PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2 | 6566db274beaeb9bcdb56a62e02cc2da532e618c | Thu Jun 22 04:30:03 2017 +0300 | v1.14.3.3..HEAD
2017-11-29 07:37:13 UTC | SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1 | 721708ecf41f0ee745b8f441a4bfe56471b493a7 | Fri Sep 8 17:55:44 2017 +0300 | cc0d87..721708e
2017-11-29 07:37:13 UTC | SUPEE-10266-CE-1.9.1.1 | CE_1.9.1.1 | v1 | f66c6bcd3c16c5ca934823e6a91b5696698e497c | Fri Sep 1 12:15:53 2017 +0300 | 8d9fad1daf5131de3430ef09b0816d3d133c8412..HEAD

Arreglo oficial para el parche SUPEE-10415 para 1.9.1.1:

  • Si lo instaló SUPEE-10266:
    inviértalo usando: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Si lo instaló SUPEE-10415:
    inviértalo usando ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Ahora aplique SUPEE-10497

Arreglo manual para el parche SUPEE-10415 para 1.9.1.1 [en desuso]:

Edite el archivo PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, reemplace las líneas 445- 447.

Antiguo:

         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {

Nuevo:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
Jeroen Vermeulen - MageHost
fuente
También estoy experimentando esto. Parece ser un problema con app/code/core/Mage/Core/Model/File/Validator/Image.php. El parche SUPEE-10415 no parece tener en cuenta la modificación realizada por el parche SUPEE-9767 (v1 o v2)
wr125
1
Arreglo agregado al final de mi respuesta.
Jeroen Vermeulen - MageHost
1
No estoy de acuerdo Tomamos una instalación de vainilla de github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz y pudimos aplicar parches en este orden: SUPEE-7405-CE-1-9-2-2 | CE_1.9.2.2 | v1, SUPEE-7405 | CE_1.9.2.2 | v1.1, SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1, SUPEE-8167 | EE_1.14.2.0 | v1, SUPEE-8788 | CE_1.9.2.2 | v2, SUPEE-8967 | EE_1.13.1.0 | v1, SUPEE-9652 | EE_1.14.3.1 | v1, PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2, SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1, SUPEE-10266-CE-1.9.2.4 | CE_1.9.2.4 | v1, SUPEE-10415-ce-1.9.2.2 | CE_1.9.2.2 | v1
Jeroen Vermeulen - MageHost
1
Necesita aplicar todos los parches anteriores, vea mi comentario anterior. Lo probé
Jeroen Vermeulen - MageHost
44
Utilice SUPEE-10497 en su lugar, se lanzó recientemente para solucionar este problema en 1.9.1.1. Lea las notas de la versión ya que este parche requiere eliminar SUPEE-10266 antes de la instalación.
Piotr Kaminski
3

Aquí está el registro de cambios completo y lo que entiendo con este registro de cambios

Y qué archivos se vieron afectados por qué causa se enumera a continuación

Escape Html change

archivo

app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
js/mage/adminhtml/backup.js

Agregar DS en su lugar '/'

app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php

nuevo archivo agregado

app/code/core/Zend/Form/Decorator/Form.php
lib/Varien/Filter/FormElementName.php

Archivo de cambio completo

app / code / core / Mage / Adminhtml / Model / System / Config / Backend / Filename.php

 class Mage_Adminhtml_Model_System_Config_Backend_Filename extends Mage_Core_Model_Config_Data
 {
+
+ /**
+ * Config path for system log file.
+ */
+ const DEV_LOG_FILE_PATH = 'dev/log/file';
+
+ /**
+ * Config path for exception log file.
+ */
+ const DEV_LOG_EXCEPTION_FILE_PATH = 'dev/log/exception_file';
+
+ /**
+ * Processing object before save data
+ *
+ * @return Mage_Adminhtml_Model_System_Config_Backend_Filename
+ * @throws Mage_Core_Exception
+ */
 protected function _beforeSave()
 {
- $value = $this->getValue();
- $value = basename($value);
+ $value = $this->getValue();
+ $configPath = $this->getPath();
+ $value = basename($value);
+
+ // if dev/log setting, validate log file extension.
+ if ($configPath == self::DEV_LOG_FILE_PATH || $configPath == self::DEV_LOG_EXCEPTION_FILE_PATH) {
+ if (!Mage::helper('log')->isLogFileExtensionValid($value)) {
+ throw Mage::exception('Mage_Core', Mage::helper('adminhtml')->__
+ ('Invalid file extension used for log file. Allowed file extensions: log, txt, html, csv'));
+ }
+ }
+
     $this->setValue($value);
     return $this;
 }

Método agregado getCacheId () y getServiceUrl ()

app/code/core/Mage/Api/Helper/Data.php

Método agregado unserialize ()

app/code/core/Mage/Core/Helper/String.php

Utilice el método getServiceUrl () creado en app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php

Utilice el método getCacheId () creado en app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Wsdl/Config.php

Se utilizó el unserialize()método anterior creado en app / code / core / Mage / Core / Helper / String.php

app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Rule/Model/Abstract.php

Cambio de comentario

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/system.xml

Comentario añadido

app/code/core/Mage/Core/etc/config.xml

Longitud máxima de contraseña agregada

app/code/core/Mage/Customer/Model/Customer.php

Se agregó la extensión de archivo allow // $ _ allowedFileExtensions = array ('log', 'txt', 'html', 'csv');

app/code/core/Mage/Log/Helper/Data.php

No se que cambio

app/design/adminhtml/default/default/template/backup/dialogs.phtml

Lista de problemas

SUPEE-10415 evita el control de la canasta

obtener el código de error # 10415 en paypal en magento

Murtuza Zabuawala
fuente
1

Intentando esto en Magento EE 1.13.0.2 y parece que este parche no funciona bien si está instalado SUPEE-6482.

Checking patch app/code/core/Mage/Api/Model/Server/Adapter/Soap.php...
error: while searching for:
            ->setUseSession(false);

        $wsdlUrl = $params !== null
            ? $urlModel->getUrl('*/*/*', array('_current' => true, '_query' => $params))
            : $urlModel->getUrl('*/*/*');

        if( $withAuth ) {
            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);

error: patch failed: app/code/core/Mage/Api/Model/Server/Adapter/Soap.php:205

SUPEE-6482 cambió la línea $phpAuthUsera

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
DanCarlyon
fuente
No solo la $phpAuthUserlínea era diferente, el espaciado anterior ->setUseSession(false);también era incorrecto
DanCarlyon el