Comme déjà mentionné, les vulnérabilités corrigées sont décrites en détail sur cette page officielle (nouveaux documents marchands): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
Sommaire
Cet ensemble comprend une protection contre les problèmes de sécurité suivants:
- Fuite d'informations client via RSS et escalade de privilèges
- La demande de contrefaçon dans Magento Connect mène à l'exécution de code
- Script intersite dans la liste de souhaits
- Script intersite dans le panier
- Divulgation du chemin d'accès au magasin
- Autorisations sur les fichiers journaux trop larges
- Script intersite dans Admin
- Scriptage intersites dans les commandes RSS
Après avoir patché quelques boutiques, voici ce que j'ai rassemblé:
Patchs thématiques
Certains fichiers de thème ont été corrigés avec des échappements supplémentaires pour empêcher d'éventuelles attaques XSS:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Si vos thèmes contiennent l'un de ces modèles, ou si vous avez apporté des modifications directement dans base/default
(bonne chance, vous êtes foutu), vous devez les corriger manuellement:
dans les modèles de paiement, remplacez toutes les occurrences de
$this->getContinueShoppingUrl()
avec
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
dans wishlist/email/rss.phtml
, remplacer
$this->helper('wishlist')->getCustomerName()
avec
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
Dans rss/order/details.phtml
, remplacer
<?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 />
avec
<?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 />
Autorisations
.htaccess
des fichiers ont été ajoutés downloader/Maged
et downloader/lib
interdisent l'accès direct aux fichiers source. Si vous utilisez nginx, vous devez ajouter ces règles pour obtenir le même résultat (merci à Ben Lessani pour celui-ci):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Mais je recommande d'exclure downloader
des déploiements vers un système système en direct de toute façon, dans ce cas, vous n'avez pas besoin d'agir.
Privilèges d'administrateur (ACL)
Si vous utilisez des comptes d'administrateur restreints, certains menus d'extensions tierces peuvent ne plus fonctionner pour eux. La raison en est que la valeur de retour par défaut de Mage_Adminhtml_Controller_Action::_isAllowed()
a été modifiée de true
à Mage::getSingleton('admin/session')->isAllowed('admin')
. Les extensions qui ne remplacent pas cette méthode dans leurs contrôleurs d'administration car elles n'utilisent pas l'ACL, ont désormais besoin du privilège "ALL" .
La seule solution est de patcher les extensions et d'ajouter cette méthode à tous leurs contrôleurs d'administration:
protected function _isAllowed()
{
return true;
}
Ou s'ils ont réellement une ressource ACL définie dans etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(vous pouvez voir que le patch fait la même chose Phoenix_Moneybookers
dans les anciennes versions de Magento comme 1.7 où cette extension était incluse)
Pour une perspective plus détaillée sur ce problème et une explication sur la façon de définir les ressources ACL manquantes, voir: Erreurs d'accès refusé après l'installation de SUPEE-6285
Erreurs possibles lors de l'application du patch
Message:
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
Raison: le default/modern
thème a été supprimé de l'installation
Solution: ajoutez à app/design/frontend/default/modern
partir d'un nouveau téléchargement Magento (devrait être la même version que votre boutique). Vous pouvez également utiliser ce miroir: https://github.com/firegento/magento . Ensuite, après avoir appliqué le correctif avec succès, vous pouvez à nouveau supprimer le thème.
Message
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
Raison: le downloader
répertoire a été supprimé de l'installation
Solution: ajoutez à downloader
partir d'un nouveau téléchargement Magento (devrait être la même version que votre boutique). Vous pouvez également utiliser ce miroir: https://github.com/firegento/magento . Ensuite, après avoir appliqué le patch avec succès, vous pouvez à nouveau supprimer le répertoire.
Message: quelque chose de similaire à
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
Raison: les fichiers sont stockés avec \r\n
(CRLF, saut de ligne Windows) ou \r
(CR, saut de ligne Mac) au lieu de \n
(LF, saut de ligne Unix).
Solution: Convertissez simplement les sauts de ligne, votre éditeur de texte ou IDE devrait en être capable.