SecurityPatch 9652: possibili problemi dopo l'applicazione di SUPEE-9652


16

Magento ha rilasciato la sua patch di sicurezza SUPEE-9652, per Magento 1.x CE ed EE

Voglio solo sapere quali sono i possibili problemi dopo aver applicato questa patch di sicurezza e quali sono le nuove modifiche in questa patch di sicurezza?

Risposte:


25

È una patch super piccola, ecco la diff:

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

Tuttavia, Peter O'Callaghan (l'unico e l'unico) sembra aver trovato un bug. Ha gentilmente condiviso i dettagli con me e ha detto che potrei condividerli con te qui, quindi eccolo qui :

La cosa migliore che posso dire è che il valore di $this->paramssarà sempre prefissato -fnel punto in cui è stata aggiunta la convalida (viene passata al costruttore nel punto in cui viene aggiunto il percorso di ritorno). Pertanto, nel momento in cui viene passato alla convalida, se ho configurato la mia e-mail contact@me.com, il valore che viene effettivamente convalidato è -fcontact@me.com, sembra più un colpo di fortuna che l'intenzione che ciò avvenga come indirizzo e-mail. Se il mio indirizzo e-mail fosse "example"@example.com, questo diventerebbe -f"example"@example.com, il che non verrà convalidato. Per inciso, str_replacesembra completamente ridondante in questa materia dato che AFAIK può essere utilizzato uno spazio solo in combinazione con le virgolette e le e-mail con virgolette non verranno convalidate con il-fprefisso. Infatti se non fosse per il prefisso presente, str_replace e validate non sarebbero utili perché "foo bar"@example.comed "foobar"@example.comentrambi convalidano, poiché quest'ultimo non viene mai assegnato a nulla dopo la sostituzione, l'e-mail verrebbe comunque inviata usando la prima valore, che presumibilmente sarebbe ancora vulnerabile.

Altre due cose da tenere a mente:

Nota a margine

La nuova versione corrispondente di Magento CE 1.9.3.2 include anche l'aggiornamento dell'anno dei commenti sul copyright (dal 2016 al 2017), quindi quasi tutti i file di Magento sono stati aggiornati e il diff sembra enorme


2
"Finché le impostazioni e-mail sono disabilitate" quali impostazioni sono presenti nel pannello di amministrazione, amico? Solo per salvarmi mentre mi immergo in Sys-> Config senza aver preso il caffè :)
Luke Rodgers

2
@LukeRodgers fare riferimento a questo post del blog per i dettagli: magento.com/security/news/…
Raffaello al Pianismo digitale

1
"Aggiornamento dell'anno dei commenti sul copyright (dal 2016 al 2017), quindi quasi tutti i file di Magento sono stati aggiornati" questo è vero @Raphael al Digital Pianism
Amit Bera

1
@Icona bene se controlli il nome del file di patch è già v2 ^^ quindi probabilmente una v3 senza ETA ancora
Raphael at Digital Pianism

1
Per la cronaca, è estremamente improbabile che influisca su qualsiasi uso legittimo e su AFAIK (senza vedere il payload inviato), impedirebbe lo sfruttamento in tutti i casi (anche se il motivo reale di ciò sembra involontario o una scelta estremamente strana). È solo che blocca tutte le e-mail in cui la parte locale è racchiusa tra virgolette, ovvero gli "example"@example.comindirizzi dei moduli, indipendentemente dal fatto che siano tecnicamente pericolosi. Sarei piuttosto sorpreso se ci sono negozi legittimi che utilizzano questo tipo di e-mail, ma volevo le informazioni disponibili nel caso.
Peter O'Callaghan,

8

Piccolo consiglio per l'aggiornamento; dopo aver copiato la nuova versione sull'installazione esistente, esegui git diff -w --stat=400 | grep -v " 2 +”per visualizzare rapidamente le differenze che contengono più modifiche rispetto alla sola modifica dell'avviso sul copyright.


4

La patch di sicurezza 9652 riguarda solo il seguente file:

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

1

Per quelli come me che si chiedono cosa fare senza l'accesso SSH: modifica il file /lib/Zend/Mail/Transport/Sendmail.php

dalla riga 122 in poi, sostituisci questo:

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

con questo:

        // 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, per quelli senza accesso SSH. forse dovresti patchare localmente e caricare il file patchato. ;)
infabo,

Per una guida completa sulle patch senza accesso SSH, vedere questa risposta qui: magento.stackexchange.com/a/63936/3326
7ochem
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.