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->params
sera toujours préfixée
-f
au 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
[email protected]
, la valeur qui est réellement validée est [email protected]
, 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.com
bien, cela deviendrait -f"example"@example.com
, ce qui ne validera pas. Incidemment , le str_replace
semble 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-f
pré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.com
et les
"foobar"@example.com
deux 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
"example"@example.com
adresses 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ù.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.la source
Le correctif de sécurité 9652 affecte uniquement le fichier suivant:
la source
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:
avec ça:
la source