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?
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:
È 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->params
sarà sempre prefissato-f
nel 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-mailcontact@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_replace
sembra 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-f
prefisso. Infatti se non fosse per il prefisso presente, str_replace e validate non sarebbero utili perché"foo bar"@example.com
ed"foobar"@example.com
entrambi 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:
app/etc/applied.patches.list
, sembra un po 'strano. (fonte: https://twitter.com/JohnHughes1984/status/829050203139358720 )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
"example"@example.com
indirizzi 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.
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.
La patch di sicurezza 9652 riguarda solo il seguente file:
/lib/Zend/Mail/Transport/Sendmail.php
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();
}