Es ist ein super kleiner Patch, hier ist der Unterschied:
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) {
Doch Peter O'Callaghan (das einzige) scheint einen Bug gefunden zu haben. Er teilte mir sanft die Details mit und sagte, ich könnte es hier mit Ihnen teilen, also hier ist es :
Am besten kann ich sagen, dass der Wert von $this->params
immer -f
an dem Punkt vorangestellt wird,
an dem die Validierung hinzugefügt wurde (er wird an dem Punkt an den Konstruktor übergeben, an dem der Rückgabepfad hinzugefügt wird). Daher ist es an dem Punkt, an dem es an die Validierung übergeben wird, wenn ich meine E-Mail konfiguriert habe
[email protected]
, der Wert, der tatsächlich validiert wird [email protected]
, eher ein Zufall als die Absicht, dass dies als E-Mail-Adresse validiert wird. Wenn meine E-Mail-Adresse jedoch "example"@example.com
wäre, würde dies werden -f"example"@example.com
, was nicht validiert werden kann. Im Übrigen str_replace
erscheint das in dieser Angelegenheit völlig überflüssig, da AFAIK ein Leerzeichen nur in Verbindung mit Anführungszeichen verwenden kann und E-Mails mit Anführungszeichen nicht mit dem validieren-f
Präfix. Wäre das Präfix nicht vorhanden, wären str_replace und validate nicht nützlich, da "foo bar"@example.com
und
"foobar"@example.com
beide validieren, da letzteres nach dem Ersetzen niemals zugewiesen wird, die E-Mail weiterhin mit ersteren gesendet werden würde Wert, der vermutlich noch anfällig wäre.
Zwei andere Dinge zu beachten:
Randnotiz
Die entsprechende neue Version von Magento CE 1.9.3.2 enthält auch das Copyright Comment Year-Update (von 2016 bis 2017), sodass fast alle Dateien von Magento aktualisiert wurden und der Unterschied riesig aussieht
"example"@example.com
Formularadressen, unabhängig davon, ob sie technisch gefährlich sind. Ich wäre ziemlich überrascht, wenn es legitime Geschäfte gibt, die diese Art von E-Mail verwenden, aber die Informationen für den Fall verfügbar haben möchten.Kleiner Tipp zum Upgraden; Nachdem Sie die neue Version über Ihre vorhandene Installation kopiert haben, können Sie
git diff -w --stat=400 | grep -v " 2 +”
schnell feststellen, welche Unterschiede mehr Änderungen als nur die Änderung des Urheberrechts enthalten.quelle
Der Sicherheitspatch 9652 betrifft nur die folgende Datei:
quelle
Für diejenigen wie mich, die sich fragen, was sie ohne SSH-Zugriff tun sollen: Bearbeiten Sie die Datei /lib/Zend/Mail/Transport/Sendmail.php
ab Zeile 122 ersetzen Sie dies:
mit diesem:
quelle