Come già accennato, le vulnerabilità patchate sono descritte in dettaglio in questa pagina ufficiale (nuovi documenti commerciali): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
Sommario
Questo pacchetto include la protezione contro i seguenti problemi di sicurezza:
- Perdita di informazioni sul cliente tramite RSS e escalation di privilegi
- La richiesta di falsificazione in Magento Connect porta all'esecuzione del codice
- Scripting tra siti nella lista dei desideri
- Scripting tra siti nel carrello
- Divulgazione del percorso di archiviazione
- Autorizzazioni per i file di registro troppo ampie
- Scripting cross-site in Admin
- Scripting tra siti negli ordini RSS
Dopo aver rattoppato alcuni negozi, questo è quello che ho raccolto:
Patch a tema
Alcuni file di temi sono stati corretti con l'escaping aggiunto per prevenire possibili attacchi XSS:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Se i tuoi temi contengono uno di questi modelli o se hai apportato modifiche direttamente base/default
(buona fortuna, sei fregato), allora devi correggerli manualmente:
nei modelli di checkout, sostituisci tutte le occorrenze di
$this->getContinueShoppingUrl()
con
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
in wishlist/email/rss.phtml
, sostituisci
$this->helper('wishlist')->getCustomerName()
con
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
In rss/order/details.phtml
, sostituisci
<?php echo $this->__('Customer Name: %s', $_order->getCustomerFirstname()?$_order->getCustomerName():$_order->getBillingAddress()->getName()) ?><br />
<?php echo $this->__('Purchased From: %s', $_order->getStore()->getGroup()->getName()) ?><br />
con
<?php $customerName = $_order->getCustomerFirstname() ? $_order->getCustomerName() : $_order->getBillingAddress()->getName(); ?>
<?php echo $this->__('Customer Name: %s', Mage::helper('core')->escapeHtml($customerName)) ?><br />
<?php echo $this->__('Purchased From: %s', Mage::helper('core')->escapeHtml($_order->getStore()->getGroup()->getName())) ?><br />
permessi
.htaccess
i file sono stati aggiunti downloader/Maged
e downloader/lib
per impedire l'accesso diretto ai file di origine. Se usi nginx, devi aggiungere queste regole per ottenere lo stesso risultato (grazie a Ben Lessani per questo):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Ma consiglio comunque di escludere downloader
dalle distribuzioni su un sistema live, in questo caso non è necessario agire.
Privilegi di amministratore (ACL)
Se si utilizzano account di amministratore con restrizioni, alcuni menu di estensioni di terze parti potrebbero non funzionare più per loro. Il motivo è che il valore di ritorno predefinito di Mage_Adminhtml_Controller_Action::_isAllowed()
è stato modificato da true
a Mage::getSingleton('admin/session')->isAllowed('admin')
. Le estensioni che non sostituiscono questo metodo nei loro controller di amministrazione perché non usano l'ACL, ora hanno bisogno del privilegio "TUTTO" .
L'unica soluzione è patchare le estensioni e aggiungere questo metodo a tutti i loro controller di amministrazione:
protected function _isAllowed()
{
return true;
}
O se in realtà hanno una risorsa ACL definita in etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(puoi vedere che la patch fa lo stesso per Phoenix_Moneybookers
le versioni precedenti di Magento come la 1.7 in cui era inclusa questa estensione)
Per una prospettiva più dettagliata su questo problema e una spiegazione su come definire le risorse ACL mancanti, vedere: Accesso agli errori negati dopo l'installazione di SUPEE-6285
Possibili errori durante l'applicazione della patch
Messaggio:
can't find file to patch at input line 899
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/design/frontend/default/modern/template/checkout/cart.phtml app/design/frontend/default/modern/template/checkout/cart.phtml
|index 982ad5a..2bf6b37 100644
|--- app/design/frontend/default/modern/template/checkout/cart.phtml
|+++ app/design/frontend/default/modern/template/checkout/cart.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
Motivo: il default/modern
tema è stato rimosso dall'installazione
Soluzione: aggiungi app/design/frontend/default/modern
da un nuovo download di Magento (dovrebbe essere la stessa versione del tuo negozio). Puoi anche usare questo mirror: https://github.com/firegento/magento . Quindi, dopo aver applicato correttamente la patch, è possibile rimuovere nuovamente il tema.
Messaggio
patching file downloader/Maged/.htaccess
can't find file to patch at input line 915
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Controller.php downloader/Maged/Controller.php
|index aa9d705..32755d7 100644
|--- downloader/Maged/Controller.php
|+++ downloader/Maged/Controller.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
5 out of 5 hunks ignored
can't find file to patch at input line 976
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Model/Session.php downloader/Maged/Model/Session.php
|index 18020eb..7013c94 100644
|--- downloader/Maged/Model/Session.php
|+++ downloader/Maged/Model/Session.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
patching file downloader/lib/.htaccess
can't find file to patch at input line 1020
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages.phtml downloader/template/connect/packages.phtml
|index 9cca5a6..f42e74e 100644
|--- downloader/template/connect/packages.phtml
|+++ downloader/template/connect/packages.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 1049
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages_prepare.phtml downloader/template/connect/packages_prepare.phtml
|index f74c3df..86aa51b 100644
|--- downloader/template/connect/packages_prepare.phtml
|+++ downloader/template/connect/packages_prepare.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1061
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/login.phtml downloader/template/login.phtml
|index 6e4cd2c..dbbeda8 100644
|--- downloader/template/login.phtml
|+++ downloader/template/login.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1073
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/settings.phtml downloader/template/settings.phtml
|index 13551ac..47ab411 100644
|--- downloader/template/settings.phtml
|+++ downloader/template/settings.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
Motivo: la downloader
directory è stata rimossa dall'installazione
Soluzione: aggiungi downloader
da un nuovo download di Magento (dovrebbe essere la stessa versione del tuo negozio). Puoi anche usare questo mirror: https://github.com/firegento/magento . Quindi, dopo aver applicato correttamente la patch, è possibile rimuovere nuovamente la directory.
Messaggio: qualcosa di simile a
checking file app/design/frontend/base/default/template/checkout/cart.phtml
Hunk #1 FAILED at 97 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/cart/noItems.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/onepage/failure.phtml
Hunk #1 FAILED at 29 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/rss/order/details.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/wishlist/email/rss.phtml
Hunk #1 FAILED at 25 (different line endings).
1 out of 1 hunk FAILED
Motivo: i file vengono archiviati con \r\n
(CRLF, interruzione di riga di Windows) o \r
(CR, interruzione di riga di Mac) anziché \n
(LF, interruzione di riga Unix).
Soluzione: converti semplicemente le interruzioni di riga, il tuo editor di testo o IDE dovrebbe essere in grado di farlo.