Như đã đề cập, các lỗ hổng được vá được mô tả chi tiết trên trang chính thức này (tài liệu người bán mới): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-release-2015.html
Tóm lược
Gói này bao gồm bảo vệ chống lại các vấn đề liên quan đến bảo mật sau:
- Rò rỉ thông tin khách hàng thông qua RSS và đặc quyền
- Yêu cầu giả mạo trong Magento Kết nối dẫn đến thực thi mã
- Viết kịch bản chéo trang trong Wishlist
- Tập lệnh chéo trang trong giỏ hàng
- Cửa hàng tiết lộ đường dẫn
- Quyền đối với tệp nhật ký quá rộng
- Viết kịch bản chéo trang trong Quản trị viên
- Viết kịch bản chéo trang trong đơn hàng RSS
Sau khi vá một vài cửa hàng, đây là những gì tôi thu thập được:
Bản vá chủ đề
Một số tệp chủ đề đã được vá với thoát bổ sung để ngăn chặn các cuộc tấn công XSS có thể xảy ra:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Nếu (các) chủ đề của bạn chứa bất kỳ mẫu nào trong số các mẫu này hoặc nếu bạn thực hiện sửa đổi trực tiếp base/default
(chúc may mắn, bạn bị vặn), thì bạn cần phải vá chúng theo cách thủ công:
trong các mẫu thanh toán, thay thế tất cả các lần xuất hiện của
$this->getContinueShoppingUrl()
với
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
vào wishlist/email/rss.phtml
, thay thế
$this->helper('wishlist')->getCustomerName()
với
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
Trong rss/order/details.phtml
, thay thế
<?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 />
với
<?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 />
Quyền
.htaccess
các tệp đã được thêm vào downloader/Maged
và downloader/lib
không cho phép truy cập trực tiếp vào các tệp nguồn. Nếu bạn sử dụng nginx, bạn cần thêm các quy tắc này để đạt được điều tương tự (thx thành Ben Lessani cho quy tắc này):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Nhưng tôi khuyên bạn nên loại trừ downloader
khỏi việc triển khai vào một hệ thống trực tiếp, trong trường hợp này bạn không cần phải hành động.
Đặc quyền quản trị viên (ACL)
Nếu bạn sử dụng tài khoản quản trị viên bị hạn chế, một số menu của tiện ích mở rộng bên thứ ba có thể không hoạt động nữa đối với họ. Lý do là giá trị trả về mặc định của Mage_Adminhtml_Controller_Action::_isAllowed()
đã được thay đổi từ true
thành Mage::getSingleton('admin/session')->isAllowed('admin')
. Các tiện ích mở rộng không ghi đè phương thức này trong bộ điều khiển quản trị viên vì chúng không sử dụng ACL, giờ cần đặc quyền "TẤT CẢ" .
Giải pháp duy nhất là vá các phần mở rộng và thêm phương thức này vào tất cả các bộ điều khiển quản trị của chúng:
protected function _isAllowed()
{
return true;
}
Hoặc nếu họ thực sự có tài nguyên ACL được xác định trong etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(bạn có thể thấy rằng bản vá này thực hiện tương tự Phoenix_Moneybookers
trong các phiên bản Magento cũ hơn như 1.7 có phần mở rộng này được bao gồm)
Để có góc nhìn chi tiết hơn về vấn đề này và giải thích cách xác định các tài nguyên ACL bị thiếu, hãy xem: Truy cập các lỗi bị từ chối sau khi cài đặt SUPEE-6285
Lỗi có thể xảy ra trong khi áp dụng bản vá
Thông điệp:
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
Lý do: các default/modern
chủ đề đã bị xóa khỏi quá trình cài đặt
Giải pháp: Thêm app/design/frontend/default/modern
từ bản tải xuống Magento mới (phải là phiên bản giống với cửa hàng của bạn). Bạn cũng có thể sử dụng gương này: https://github.com/firegento/magento . Sau khi áp dụng bản vá thành công, bạn có thể xóa chủ đề một lần nữa.
Thông điệp
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
Lý do: các downloader
thư mục đã bị xóa khỏi quá trình cài đặt
Giải pháp: Thêm downloader
từ bản tải xuống Magento mới (phải là phiên bản giống với cửa hàng của bạn). Bạn cũng có thể sử dụng gương này: https://github.com/firegento/magento . Sau khi áp dụng bản vá thành công, bạn có thể xóa thư mục một lần nữa.
Tin nhắn: Một cái gì đó tương tự như
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
Lý do: các tệp được lưu trữ bằng \r\n
(CRLF, ngắt dòng Windows) hoặc \r
(ngắt dòng CR, Mac) thay vì \n
(ngắt dòng LF, Unix).
Giải pháp: Chỉ cần chuyển đổi các ngắt dòng, trình soạn thảo văn bản hoặc IDE của bạn sẽ có khả năng này.