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
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.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