Bản vá bảo mật Magento SUPEE-6482, Bản vá là gì?


28

Hôm nay 04.08.2015 đã có một bản vá bảo mật mới được phát hành, một số đồng nghiệp và tôi đang kiểm tra bản vá, và luôn sẵn sàng thảo luận về những gì đã thay đổi, có ai biết những cuộc tấn công nào có thể ảnh hưởng và cửa hàng chưa được vá? Điều tồi tệ nhất có thể xảy ra là gì?

Cập nhật: Tôi chỉ muốn thêm email magento gửi hôm nay để hoàn thành bài viết. Cập nhật email Magento


1
Tôi chắc chắn sẽ có một kết thúc những ngày này. Tuy nhiên, nếu bạn đã kiểm tra nó và muốn có một cuộc thảo luận, hãy tiếp tục! Chia sẻ suy nghĩ và phát hiện của bạn!
mam08ixo

2
Bản vá, không. Cài đặt đầy đủ cho 1.9.2.1 sẽ phải được kiểm tra cho những thay đổi đó, tại thời điểm này dường như chỉ giải quyết được 4 vấn đề bảo mật
Fiasco Labs

2
Bạn sẽ phải thực hiện nâng cấp đầy đủ hoặc backport 1.9.2.0 => Khối CMS và bộ đệm ẩn bộ đệm trong magento-1921/app/code/core/Mage/Cms/Block/Block.phpmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs

2
merch.docs.magento.com/ce/user_guide/ - Tôi chỉ tự hỏi khi nào bản vá tiếp theo sẽ đến sau khi có quá nhiều sự tập trung vào các tiêu đề trong những ngày qua. Và nó đây rồi!
hakre

2
@hakre - Tôi sẽ đọc nội dung bản vá trước khi bao gồm các tiêu đề, trừ khi các tiêu đề đó thực sự nằm trong API. Tải xuống đầy đủ có một số bản vá trong trình điều khiển http và mẫu cookie javascript, nhưng bản vá 6482 thì không.
Phòng thí nghiệm Fiasco

Câu trả lời:


13

Bản vá bảo mật thực tế ( SUPEE-6482 ) chỉ ảnh hưởng đến hai tệp sau và là bản vá API.

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Catalog/Model/Product/Api/V2.php

Cài đặt 1.9.2.1 đầy đủ là một vấn đề hoàn toàn khác. Tôi sẽ tìm mã nguồn khác nhau giữa 1.9.2.0 và 1.9.2.1 để tìm ra hai mục khác đã được vá.

Ghi chú phát hành dành cho trình cài đặt đầy đủ, bạn phải kiểm tra bản vá để xem nó có thực sự bao gồm tất cả các mục được ghi chú trong ghi chú phát hành hay không.

Ý nghĩa của việc chạy một máy chủ chưa được vá:

  1. Viết kịch bản chéo trang bằng cách sử dụng các tiêu đề không được xác thực => Ngộ độc bộ đệm
  2. Tự động tải tệp bao gồm trong API Magento SOAP => Tự động tải mã từ xa
  3. XSS trong Tìm kiếm đăng ký quà tặng => Đánh cắp cookie và mạo danh người dùng
  4. Lỗ hổng SSRF trong Tệp WSDL => Rò rỉ thông tin máy chủ nội bộ và bao gồm tệp từ xa

LƯU Ý: Tập tin được vá trong kho lưu trữ cài đặt đầy đủ không được vá với bản vá, hmm?

diff -r magento-1920/app/code/core/Mage/Core/Controller/Request/Http.php magento-1921/app/code/core/Mage/Core/Controller/Request/Http.php
300a301
>         $host = $_SERVER['HTTP_HOST'];
302,303c303,304
<             $host = explode(':', $_SERVER['HTTP_HOST']);
<             return $host[0];
---
>             $hostParts = explode(':', $_SERVER['HTTP_HOST']);
>             $host =  $hostParts[0];
305c306,313
<         return $_SERVER['HTTP_HOST'];
---
> 
>         if (strpos($host, ',') !== false || strpos($host, ';') !== false) {
>             $response = new Zend_Controller_Response_Http();
>             $response->setHttpResponseCode(400)->sendHeaders();
>             exit();
>         }
> 
>         return $host;

diff -r magento-1920/app/design/frontend/base/default/template/page/js/cookie.phtml magento-1921/app/design/frontend/base/default/template/page/js/cookie.phtml
37,38c37,38
< Mage.Cookies.path     = '<?php echo $this->getPath()?>';
< Mage.Cookies.domain   = '<?php echo $this->getDomain()?>';
---
> Mage.Cookies.path     = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getPath()) ?>';
> Mage.Cookies.domain   = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getDomain()) ?>';

5
Tôi nghĩ rằng các tệp bị thiếu khắc phục sự cố "Tập lệnh chéo trang quan trọng nhất sử dụng tiêu đề không được xác thực". Vấn đề "XSS trong Gift Registry Seaerch" dường như bị thêm nhầm vào tài liệu vá cho phiên bản CE, vì Gift Registry là một tính năng chỉ dành cho EE.
Aad Mathijssen

1
Đúng, tôi nhận ra rằng điều đó đủ quan trọng để áp dụng các thay đổi còn thiếu cho cài đặt CE của tôi và không chờ Magento tìm ra nó và gửi cho chúng tôi bản vá V2 khi chúng tiếp cận nó. Ngộ độc bộ nhớ cache và đầu vào người dùng chưa được lọc được sử dụng trong các thành phần cookie có vẻ như là một vấn đề lớn.
Phòng thí nghiệm Fiasco

1
Magento đã cập nhật tài liệu: cả hai vấn đề "Tập lệnh chéo trang sử dụng tiêu đề không được xác thực" và "XSS trong Tìm kiếm đăng ký quà tặng" được đánh dấu là "Chỉ dành cho phiên bản doanh nghiệp Magento". Nhưng trong thời gian đó, Magento CE 1.9.2.1 có chứa các bản sửa lỗi cho vấn đề "Tập lệnh chéo trang sử dụng tiêu đề không được xác thực" hoặc ít nhất là một phần của nó.
Aad Mathijssen

1
Heh, CE thay đổi ngắn trong hành động. CE không có Wishlist, nhưng chắc chắn cần vấn đề "Tiêu đề chưa được xác thực" để loại bỏ thông qua bản vá, không phải thay đổi tài liệu. Oh, chà ... nhiều hơn những gì chúng ta mong đợi.
Phòng thí nghiệm Fiasco

3
Đối với bản ghi - theo các thử nghiệm của chúng tôi - Tập lệnh chéo trang sử dụng Tiêu đề không có giá trị KHÔNG phải là lỗ hổng CE. Nếu bất cứ ai cũng có thể cung cấp POC rằng có lỗ hổng CE, vui lòng truy cập magento.com/securance và báo cáo.
benmark

9

Tôi nhìn vào những thay đổi chi tiết và những tác dụng phụ nào được mong đợi.

Trong phiên bản dành cho EE 1.13.1.0, các tệp sau đã thay đổi:

2015-08-05 07:14:25 UTC | SUPEE-6482_EE_1.13.1.0 | EE_1.13.1.0 | v2 | 7e38036f94f250514fcc11d066a43c9bdb6a3723 | Tue Jul 28 14:29:35 2015 +0300 | v1.13.1.0..HEAD
patching file app/code/core/Enterprise/PageCache/Model/Processor.php
patching file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
patching file app/code/core/Mage/Catalog/Model/Product/Api/V2.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 294 (offset 7 lines).
patching file app/design/frontend/base/default/template/page/js/cookie.phtml
patching file app/design/frontend/enterprise/default/template/giftregistry/search/form.phtml
  • Trong Adapter/Soap.php, urlencoding được thêm vào dữ liệu xác thực. Điều này sẽ không có tác dụng phụ tiêu cực. Nó đảm bảo rằng kết quả wsdlUrllà hợp lệ. Nếu không có thay đổi này, người ta có thể ảnh hưởng đến URL
  • Product/Api/V2.php: Dưới đây là một số kiểm tra nếu dữ liệu được truyền là một đối tượng. Điều này không nên xảy ra trong trường hợp bình thường.
  • trong Request/Http.phpPageCache/Model/Processor.phpkiểm tra được thêm vào khi nhận HTTP HOST. Điều này dường như bao gồm các tiêm tiêu đề được đề cập. Kiểm tra chỉ áp dụng nếu có ;hoặc ,trong máy chủ HTTP, do đó, điều này không chính xác trong các hệ thống thực tế / không có tác dụng phụ tiêu cực.
  • trong lối cookie.phtmlthoát được thêm vào. Vì vậy, điều này phải được chuyển tiếp đến chủ đề của bạn nếu bạn ghi đè lên tập tin đó
  • tương tự cho giftregistry/search/form.phtml

Tóm lại, tôi sẽ nói rằng việc áp dụng các bản vá không nên có bất kỳ tác dụng phụ tiêu cực nào. Hãy nhớ chuyển tiếp các thay đổi vào .phtmltệp của bạn .


1
Cảm ơn bạn đã xác nhận, việc tiêm tiêu đề và thoát thành phần cookie dễ dàng chuyển sang CE.
Phòng thí nghiệm Fiasco

1
Không cần cổng. Có phiên bản vá cho CE trong khu vực tải xuống.
Alex

5

Điều kỳ lạ là bản vá EE chứa các sửa đổi trên các tệp sau:

app/code/core/Mage/Core/Controller/Request/Http.php
app/design/frontend/base/default/template/page/js/cookie.phtml

Khi CE không, cho một phiên bản tương đương.

Tôi đoán có một cái gì đó còn thiếu trên SUPEE-6482phiên bản CE đó và V2 có thể được phát hành sớm.


Tôi nghĩ điều tương tự!
rob3000

2
Vâng, bạn nhận thấy đúng. Đó là những gì tôi có được bằng cách phân biệt tài liệu lưu trữ cài đặt 1.9.2.0 và 1.9.2.1. Tôi có một bản cài đặt CE được vá hoàn toàn do điều này, tôi đã tiếp tục và tự vá hai tệp được đề cập. Tệp cookie js cũng cần phải được vá trong mẫu tùy chỉnh của bạn nếu bạn có tệp đó trong đó. Có lẽ họ đã bỏ qua bộ điều khiển yêu cầu như một bản vá cho nó sẽ phải vá một tệp đã được vá trước đó và chúng tôi không có tình yêu CE nào đang diễn ra.
Phòng thí nghiệm Fiasco

1
Thêm một lý do để "chờ" vài ngày trước đó để triển khai trên môi trường sản xuất (và sử dụng những ngày này để kiểm tra tốt hơn trước khi đi vào hoạt động). Hôm nay, thêm một thông báo cập nhật trong Magento Backend (chỉ là thông báo về 2 thay vì 4 lỗ hổng bảo mật). Dù sao, tôi sẽ đợi cho đến thứ hai để được sống, ít nhất.
DarkCowboy

1
Magento đã cập nhật ghi chú phát hành của họ: merch.docs.magento.com/ce/user_guide/ Khăn Một số bản vá chỉ có hiệu quả EE. Nhưng tôi vẫn không hiểu tại sao 2 tệp đó, dựa trên lõi, không quan tâm đến bản vá CE, vì chúng được tích hợp trong CE 1.9.2.1 ...
Antoine Kociuba

4

Bản vá phát hành Magento SUPEE-6482 để khắc phục sự cố bên dưới trong phiên bản CE & EE

Dành cho phiên bản cộng đồng Magento:

  • Tự động tải tệp bao gồm trong API Magento SOAP
  • Lỗ hổng SSRF trong tệp WSDL

Dành cho phiên bản doanh nghiệp Magento

  • Tự động tải tệp bao gồm trong API Magento SOAP
  • Lỗ hổng SSRF trong tệp WSDL
  • Viết kịch bản chéo trang bằng cách sử dụng các tiêu đề không có giá trị

XSS trong Tìm kiếm đăng ký quà tặng

Thay đổi ở lớp

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Thay đổi tại Mage_Api_Model_Server_Ad CHƯƠNG_Soap

             : $urlModel->getUrl('*/*/*');

         if ( $withAuth ) {
-            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);
-            $phpAuthPw = $this->getController()->getRequest()->getServer('PHP_AUTH_PW', false);
-            $scheme = $this->getController()->getRequest()->getScheme();
+            $phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
+            $phpAuthPw = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_PW', false));
+            $scheme = rawurlencode($this->getController()->getRequest()->getScheme());

             if ($phpAuthUser && $phpAuthPw) {
                 $wsdlUrl = sprintf("%s://%s:%s@%s", $scheme, $phpAuthUser, $phpAuthPw,

thay đổi tại Mage_Catalog_Model_ Productt_Api_V2

     public function create($type, $set, $sku, $productData, $store = null)
     {
-        if (!$type || !$set || !$sku) {
+        if (!$type || !$set || !$sku || !is_object($productData)) {
             $this->_fault('data_invalid');
         }

@@ -243,6 +243,9 @@ class Mage_Catalog_Model_Product_Api_V2 extends Mage_Catalog_Model_Product_Api
      */
     protected function _prepareDataForSave ($product, $productData)
     {
+        if (!is_object($productData)) {
+            $this->_fault('data_invalid');
+        }
         if (property_exists($productData, 'website_ids') && is_array($productData->website_ids)) {
             $product->setWebsiteIds($productData->website_ids);
         }

Xem thêm tại: http://www.amitbera.com/magento-security-patch-supee-6482/


1
Xin chào Amit Bera (@ amit-bera), tôi có thể lấy bản vá SUPEE-6482 ở đâu dưới dạng một zip riêng biệt của Magento 1.9.2.1?
Andhi I Girls

2
@ Andhi, magento 1.9.2.1 đã được bao gồm mã vá tại cấu trúc mã của nó, vì vậy bạn không cần phải áp dụng SUPEE-6482
Amit Bera

1
@ Amit Bera, Nếu vẫn sử dụng Magento 1.9.1.0 thì có nên nâng cấp lên 1.9.2.1 không? Ý tôi là, chỉ có thể cài đặt bản vá SUPEE-6428?
Andhi I Girls

3
Lưu ý rằng bản vá tiêu đề không có giá trị không có trong các bản vá CE, các tệp sau không bị chạm => app/code/core/Mage/Core/Controller/Request/Http.phpapp/design/frontend/base/default/template/page/js/cookie.phtmlnằm trong số bị thiếu. Có lẽ chúng ta nên thay đổi câu hỏi ở đầu để đọc: Bản vá bảo mật Magento SUPEE-6482, Cái gì không được vá?
Phòng thí nghiệm Fiasco

1
@ Amit Bera, xin lỗi, đã được Magento thêm vào ngày 4 tháng 8 năm 2015 trong magentoc Commerce.com/doad : Tải xuống -> Bản vá lỗi phiên bản cộng đồng Magento -> SUPEE-6482
Andhi I Girls

4

Vui lòng đọc tài liệu của Magento về bản phát hành này, câu trả lời là có: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html


5
Trong khi thông tin xem xét sao chép phần có liên quan vào chủ đề này. Câu trả lời chỉ liên kết không phải là câu trả lời tốt nhất vì các liên kết có thói quen biến mất (đặc biệt là các liên kết tài liệu Magento!)
philwinkle

1
@philwinkle - Heh, yeah tất cả chúng ta đã ở đó. MagEbayVaporation (x_x) liên kết galore.
Phòng thí nghiệm Fiasco

2

Bản vá này, giống như các bản vá khác gần đây, chứa rất nhiều bản sao, giấy phép và sửa lỗi chính tả. Nó cũng giới thiệu một vài lỗi chính tả từ những gì tôi đã thấy.

Phần vá bảo mật thực tế xuất hiện để giải quyết vấn đề vệ sinh đầu vào của người dùng cho 4 cuộc tấn công tiềm năng khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.