SecurityPatch 9652: problèmes possibles après l'application de SUPEE-9652


16

Magento a publié son correctif de sécurité SUPEE-9652pour Magento 1.x CE et EE

Je veux juste savoir quels sont les problèmes possibles après avoir appliqué ce correctif de sécurité et quelles sont les nouvelles modifications dans ce correctif de sécurité?

Réponses:


25

C'est un patch minuscule, voici la différence:

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) {

Cependant, Peter O'Callaghan (le seul et unique) semble avoir trouvé un bug. Il a gentiment partagé les détails avec moi et a dit que je pouvais le partager avec vous ici, donc le voici :

Le mieux que je puisse dire, c'est que la valeur de $this->paramssera toujours préfixée -fau moment où la validation a été ajoutée (elle est transmise au constructeur au moment où le chemin de retour est ajouté). Par conséquent, au moment où il est passé à la validation, si j'ai configuré mon e-mail contact@me.com, la valeur qui est réellement validée est -fcontact@me.com, il semble plus un coup de chance qu'une intention que cela se vérifie en tant qu'adresse e-mail. Si mon adresse e-mail était "example"@example.combien, cela deviendrait -f"example"@example.com, ce qui ne validera pas. Incidemment , le str_replacesemble complètement redondant dans cette affaire étant donné que un espace AFAIK ne peut être utilisé conjointement avec des citations et des e-mails avec des citations ne validera pas avec le-fpréfixe. En fait, si ce n'était pas pour le préfixe, les str_replace et validate ne seraient pas utiles car "foo bar"@example.comet les "foobar"@example.comdeux valident, puisque ce dernier n'est jamais attribué à quoi que ce soit après le remplacement, l'e-mail serait toujours envoyé en utilisant l'ancien valeur qui serait vraisemblablement encore vulnérable.

Deux autres choses à garder à l'esprit:

Note latérale

La nouvelle version correspondante de Magento CE 1.9.3.2 inclut également la mise à jour de l'année de commentaire sur les droits d'auteur (de 2016 à 2017), de sorte que presque tous les fichiers de Magento ont été mis à jour et que le diff semble énorme


2
"Tant que les paramètres de messagerie sont désactivés", quels sont ces paramètres dans le panneau d'administration? Juste pour me sauver de plonger dans Sys-> Config sans avoir bu mon café :)
Luke Rodgers

2
@LukeRodgers se référer à cet article de blog pour plus de détails: magento.com/security/news/…
Raphael au Digital Pianism du

1
"mise à jour de l'année des commentaires sur les droits d'auteur (de 2016 à 2017), de sorte que presque tous les fichiers de Magento ont été mis à jour" c'est la vérité @Raphael au pianisme numérique
Amit Bera

1
@Icon bien si vous vérifiez le nom du fichier de patch c'est déjà la v2 ^^ donc peut-être une v3 pas encore ETA
Raphael at Digital Pianism

1
Pour mémoire, il est extrêmement improbable d'affecter toute utilisation légitime et AFAIK (sans voir la charge utile soumise), cela empêcherait l'exploitation dans tous les cas (bien que la raison réelle de cela semble soit involontaire, soit un choix extrêmement étrange). C'est juste qu'il bloque tous les e-mails dans lesquels la partie locale est placée entre guillemets, c'est-à-dire les "example"@example.comadresses de formulaire, qu'elles soient techniquement dangereuses ou non. Je serais assez surpris s'il existe des magasins légitimes utilisant ce type de courrier électronique, mais je voulais que les informations soient disponibles au cas où.
Peter O'Callaghan

8

Petit conseil pour la mise à niveau; après avoir copié la nouvelle version sur votre installation existante, exécutez git diff -w --stat=400 | grep -v " 2 +”pour voir rapidement les différences qui contiennent plus de modifications que la seule modification de l'avis de droit d'auteur.


4

Le correctif de sécurité 9652 affecte uniquement le fichier suivant:

/lib/Zend/Mail/Transport/Sendmail.php

1

Pour ceux comme moi qui se demandent quoi faire sans accès SSH: éditer le fichier /lib/Zend/Mail/Transport/Sendmail.php

à partir de la ligne 122, remplacez ceci:

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

avec ça:

        // 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();
        }

4
hm, pour ceux sans accès SSH. vous devriez peut-être patcher localement et télécharger le fichier patché. ;)
infabo

Pour des conseils complets sur l'application de correctifs sans accès SSH, consultez cette réponse ici: magento.stackexchange.com/a/63936/3326
7ochem
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.