SecurityPatch 9652: Mögliche Probleme nach der Anwendung von SUPEE-9652

16

Magento hat seinen Sicherheitspatch SUPEE-9652für Magento 1.x CE und EE veröffentlicht

Ich möchte nur wissen, welche Probleme nach der Installation dieses Sicherheitspatches auftreten können. Und was sind die neuen Änderungen in diesem Sicherheitspatch?

Murtuza Zabuawala
quelle

Antworten:

25

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->paramsimmer -fan 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.comwäre, würde dies werden -f"example"@example.com, was nicht validiert werden kann. Im Übrigen str_replaceerscheint 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-fPräfix. Wäre das Präfix nicht vorhanden, wären str_replace und validate nicht nützlich, da "foo bar"@example.comund "foobar"@example.combeide 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

Raphael bei Digital Pianism
quelle
2
"Solange Sie die E-Mail-Einstellungen deaktiviert haben" Welche Einstellungen befinden sich im Admin-Panel-Partner? Nur um mir das Tauchen durch Sys-> Config zu ersparen, ohne meinen Kaffee getrunken zu haben :)
Luke Rodgers
2
@ LukeRodgers beziehen sich auf diesen Blog-Beitrag für Details: magento.com/security/news/…
Raphael bei Digital Pianism
1
"Copyright Kommentar Jahr Update (von 2016 bis 2017), so dass fast alle Dateien von Magento aktualisiert wurden", das ist die Wahrheit @Raphael bei Digital Pianism
Amit Bera
1
@Icon gut, wenn Sie den Namen der Patch-Datei überprüfen, ist es bereits v2 ^^, also möglicherweise eine v3, noch keine ETA
Raphael bei Digital Pianism
1
Für das Protokoll ist es äußerst unwahrscheinlich, dass eine legitime Verwendung beeinträchtigt wird, und AFAIK (ohne die übermittelte Nutzlast zu sehen) würde in allen Fällen die Ausbeutung verhindern (obwohl der eigentliche Grund dafür entweder unbeabsichtigt oder eine äußerst seltsame Wahl zu sein scheint). Es ist nur so, dass es alle E-Mails blockiert, bei denen der lokale Teil in Anführungszeichen eingeschlossen ist, dh "example"@example.comFormularadressen, 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.
Peter O'Callaghan
8

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.

Peter Jaap Blaakmeer
quelle
4

Der Sicherheitspatch 9652 betrifft nur die folgende Datei:

/lib/Zend/Mail/Transport/Sendmail.php
DarkCowboy
quelle
1

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:

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

mit diesem:

        // 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
quelle
4
hm, für die ohne SSH zugang. Vielleicht solltest du lokal patchen und die gepatchte Datei hochladen. ;)
Infabo
Eine vollständige Anleitung zum Patchen ohne SSH-Zugriff finden Sie hier: magento.stackexchange.com/a/63936/3326
7ochem