Como já mencionado, as vulnerabilidades corrigidas são descritas em detalhes nesta página oficial (novos documentos do comerciante): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
Sumário
Este pacote inclui proteção contra os seguintes problemas relacionados à segurança:
- Vazamento de informações do cliente via RSS e escalonamento de privilégios
- Solicitar falsificação no Magento Connect leva à execução de código
- Script entre sites na lista de desejos
- Script entre sites no carrinho
- Divulgação do caminho da loja
- Permissões em arquivos de log muito amplas
- Script entre sites em Admin
- Script entre sites em pedidos RSS
Depois de consertar algumas lojas, é isso que eu reuni:
Patches de tema
Alguns arquivos de tema foram corrigidos com escape adicionado para evitar possíveis ataques XSS:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Se o seu tema contiver algum desses modelos ou se você tiver feito modificações diretamente base/default
(boa sorte, você está ferrado), será necessário corrigi-lo manualmente:
nos modelos de checkout, substitua todas as ocorrências de
$this->getContinueShoppingUrl()
com
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
dentro wishlist/email/rss.phtml
, substitua
$this->helper('wishlist')->getCustomerName()
com
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
Em rss/order/details.phtml
, substitua
<?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 />
com
<?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 />
Permissões
.htaccess
arquivos foram adicionados downloader/Maged
e downloader/lib
proibir o acesso direto aos arquivos de origem. Se você usar o nginx, precisará adicionar essas regras para obter o mesmo (thx para Ben Lessani para este):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Mas eu recomendo excluir downloader
de implantações em um sistema de sistema ativo de qualquer maneira, nesse caso, você não precisa tomar uma ação.
Privilégios de administrador (ACL)
Se você usar contas de administrador restritas, alguns menus de extensões de terceiros poderão não funcionar mais para elas. O motivo é que o valor de retorno padrão de Mage_Adminhtml_Controller_Action::_isAllowed()
foi alterado de true
para Mage::getSingleton('admin/session')->isAllowed('admin')
. Extensões que não substituem esse método em seus controladores administrativos porque não usam a ACL, agora precisam do privilégio "ALL" .
A única solução é corrigir as extensões e adicionar esse método a todos os seus controladores administrativos:
protected function _isAllowed()
{
return true;
}
Ou se eles realmente tiverem um recurso ACL definido em etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(você pode ver que o patch faz o mesmo Phoenix_Moneybookers
nas versões mais antigas do Magento, como 1.7, onde esta extensão foi incluída)
Para obter uma perspectiva mais detalhada sobre esse problema e uma explicação sobre como definir recursos ACL ausentes, consulte: Erros de acesso negado após a instalação do SUPEE-6285
Possíveis erros ao aplicar o patch
Mensagem:
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: o default/modern
tema foi removido da instalação
Solução: adicione a app/design/frontend/default/modern
partir de um novo download do Magento (deve ser a mesma versão da sua loja). Você também pode usar esse espelho: https://github.com/firegento/magento . Depois de aplicar o patch com êxito, você poderá remover o tema novamente.
mensagem
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
Razão: o downloader
diretório foi removido da instalação
Solução: adicione a downloader
partir de um novo download do Magento (deve ser a mesma versão da sua loja). Você também pode usar esse espelho: https://github.com/firegento/magento . Depois de aplicar o patch com êxito, você poderá remover o diretório novamente.
Mensagem: Algo semelhante 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: os arquivos são armazenados com \r\n
(CRLF, quebra de linha do Windows) ou \r
(CR, quebra de linha do Mac) em vez de \n
(LF, quebra de linha do Unix).
Solução: basta converter as quebras de linha, seu editor de texto ou IDE deve ser capaz disso.