SecurityPatch 9652: posibles problemas después de aplicar SUPEE-9652

16

Magento ha lanzado su parche de seguridad SUPEE-9652, para Magento 1.x CE y EE

Solo quiero saber cuáles son los posibles problemas después de aplicar este parche de seguridad y ¿Cuáles son los nuevos cambios en este parche de seguridad?

Murtuza Zabuawala
fuente

Respuestas:

25

Es un parche súper pequeño, aquí está la diferencia:

diff --git lib/Zend/Mail/Transport/Sendmail.php lib/Zend/Mail/Transport/Sendmail.php
index b24026b..9323f58 100644
--- lib/Zend/Mail/Transport/Sendmail.php
+++ lib/Zend/Mail/Transport/Sendmail.php
@@ -119,14 +119,19 @@ class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
                 );
             }

-            set_error_handler(array($this, '_handleMailErrors'));
-            $result = mail(
-                $this->recipients,
-                $this->_mail->getSubject(),
-                $this->body,
-                $this->header,
-                $this->parameters);
-            restore_error_handler();
+            // Sanitize the From header
+            if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
+                throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
+            } else {
+                set_error_handler(array($this, '_handleMailErrors'));
+                $result = mail(
+                    $this->recipients,
+                    $this->_mail->getSubject(),
+                    $this->body,
+                    $this->header,
+                    $this->parameters);
+                restore_error_handler();
+            }
         }

         if ($this->_errstr !== null || !$result) {

Sin embargo, Peter O'Callaghan (el único) parece haber encontrado un error. Gentilmente compartió los detalles conmigo y dijo que podría compartirlo aquí, así que aquí está :

Lo mejor que puedo decir es que el valor de $this->paramssiempre estará prefijado -fen el punto en que se agregó la validación (se pasa al constructor en el punto en que se agrega la ruta de retorno). Por lo tanto, en el momento en que se pasa a la validación, si configuré mi correo electrónico [email protected], el valor que realmente se está validando es [email protected]que parece más una casualidad que una intención de que esto valide como una dirección de correo electrónico. Sin embargo, si mi dirección de correo electrónico fuera "example"@example.com, esto se convertiría -f"example"@example.com, lo que no se validará. Por cierto, str_replaceparece completamente redundante en este asunto dado que AFAIK un espacio solo se puede usar junto con comillas, y los correos electrónicos con comillas no se validarán con el-fprefijo. De hecho, si no fuera porque el prefijo está allí, str_replace y validate no serían útiles porque "foo bar"@example.comy "foobar"@example.comambos validan, ya que este último nunca se asigna a nada después del reemplazo, el correo electrónico aún se enviaría usando el primero. valor, que presumiblemente aún sería vulnerable.

Otras dos cosas a tener en cuenta:

Nota al margen

La nueva versión correspondiente de Magento CE 1.9.3.2 también incluye la actualización del año de comentarios de copyright (de 2016 a 2017), por lo que casi todos los archivos de Magento se han actualizado y la diferencia parece enorme

Raphael en Digital Pianism
fuente
2
"Mientras tenga la configuración de correo electrónico deshabilitada", ¿qué configuración se encuentra en el panel de administración? Solo para salvarme de sumergirme en Sys-> Config sin haber tomado mi café :)
Luke Rodgers
2
@LukeRodgers consulte esta publicación de blog para obtener más detalles: magento.com/security/news/…
Raphael en Digital Pianism
1
"Actualización del año de comentarios de copyright (de 2016 a 2017), por lo que casi todos los archivos de Magento se han actualizado", eso es verdad @Raphael en Digital Pianism
Amit Bera
1
@Icono bien si revisas el nombre del archivo de parche ya es v2 ^^, así que posiblemente sea un v3 sin ETA todavía
Raphael en Digital Pianism
1
Para el registro, es extremadamente improbable que afecte cualquier uso legítimo y AFAIK (sin ver la carga útil presentada), evitaría la explotación en todos los casos (aunque la razón real de esto parece no intencional o una elección extremadamente extraña). Es solo que bloquea todos los correos electrónicos donde la parte local está encerrada en una cita, es decir "example"@example.com, direcciones de formularios, independientemente de si son técnicamente peligrosos. Me sorprendería bastante si hay tiendas legítimas que utilizan este tipo de correo electrónico, pero quisiera la información disponible en el caso.
Peter O'Callaghan
8

Pequeño consejo para actualizar; después de copiar la nueva versión sobre su instalación existente, ejecute git diff -w --stat=400 | grep -v " 2 +”para ver rápidamente las diferencias que contienen más cambios que solo el cambio de aviso de copyright.

Peter Jaap Blaakmeer
fuente
4

El parche de seguridad 9652 afecta solo al siguiente archivo:

/lib/Zend/Mail/Transport/Sendmail.php
Vaquero oscuro
fuente
1

Para aquellos como yo que se preguntan qué hacer sin acceso SSH: edite el archivo /lib/Zend/Mail/Transport/Sendmail.php

desde la línea 122 en adelante, reemplace esto:

        set_error_handler(array($this, '_handleMailErrors'));
        $result = mail(
            $this->recipients,
            $this->_mail->getSubject(),
            $this->body,
            $this->header,
            $this->parameters);
        restore_error_handler();

con este:

        // Sanitize the From header
        if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
            throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
        } else {
            set_error_handler(array($this, '_handleMailErrors'));
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
            restore_error_handler();
        }
Ralph
fuente
44
hm, para aquellos sin acceso SSH. tal vez deberías parchar localmente y subir el archivo parcheado ;)
infabo
Para obtener una guía completa sobre parches sin acceso SSH, consulte esta respuesta aquí: magento.stackexchange.com/a/63936/3326
7ochem