แพทช์รักษาความปลอดภัยคุณภาพเยี่ยม SUPEE-6482, แพทช์คืออะไร?


28

วันนี้ 04.08.2015 มีแพตช์รักษาความปลอดภัยใหม่เปิดตัวเพื่อนร่วมงานบางคนและฉันกำลังตรวจสอบแพตช์และยินดีที่ได้พูดคุยกันเกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้นและทุกคนก็รู้ว่าการโจมตีที่เป็นไปได้ อะไรที่เลวร้ายที่สุดที่อาจเกิดขึ้นได้?

อัปเดต: ฉันแค่ต้องการเพิ่มอีเมลคุณภาพเยี่ยมที่ส่งวันนี้เพื่อโพสต์ให้เสร็จสมบูรณ์ ปรับปรุงอีเมล์วีโอไอพี


1
ฉันแน่ใจว่าจะมีการสรุปวันนี้ อย่างไรก็ตามหากคุณตรวจสอบแล้วและต้องการมีการสนทนาไปข้างหน้า! แบ่งปันความคิดและข้อค้นพบของคุณ!
mam08ixo

2
แพทช์ตัวเองไม่มี การติดตั้งแบบเต็มสำหรับ 1.9.2.1 จะต้องได้รับการตรวจสอบการเปลี่ยนแปลงเหล่านั้น ณ จุดนี้ดูเหมือนว่าจะแก้ไขปัญหาด้านความปลอดภัยเพียง 4 รายการเท่านั้น
Fiasco Labs

2
คุณจะต้องทำการอัปเกรดแบบเต็มหรือ backport 1.9.2.0 => CMS Block และ Widget แคชในmagento-1921/app/code/core/Mage/Cms/Block/Block.phpและmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs

2
merch.docs.magento.com/ce/user_guide/ … - ฉันเพิ่งสงสัยว่าแพตช์ต่อไปจะมาหลังจากที่มีการมุ่งเน้นไปที่ส่วนหัวในวันสุดท้าย และมันก็เป็น!
hakre

2
@hakre - ฉันจะอ่านเนื้อหาการแก้ไขก่อนที่จะรวมส่วนหัวเว้นแต่ส่วนหัวเหล่านั้นจะอยู่ใน API การดาวน์โหลดแบบเต็มมีแพตช์บางตัวในตัวควบคุม http และแม่แบบคุกกี้ javascript แต่แพทช์ 6482 ไม่มี
Fiasco Labs

คำตอบ:


13

แพตช์ความปลอดภัยที่แท้จริง ( SUPEE-6482 ) มีผลกับไฟล์ต่อไปนี้สองไฟล์เท่านั้นและเป็นแพตช์ API

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

การติดตั้ง 1.9.2.1 เต็มรูปแบบนั้นแตกต่างกันโดยสิ้นเชิง ฉันจะกระจายซอร์สโค้ดระหว่าง 1.9.2.0 และ 1.9.2.1 เพื่อหารายการสองรายการที่ได้รับการแก้ไข

บันทึกประจำรุ่นสำหรับโปรแกรมติดตั้งแบบสมบูรณ์คุณต้องตรวจสอบโปรแกรมแก้ไขเพื่อดูว่าจริง ๆ แล้วรวมรายการทั้งหมดที่ระบุไว้ในบันทึกประจำรุ่น

ผลกระทบของการเรียกใช้เซิร์ฟเวอร์ที่ไม่ได้เปรียบเทียบ:

  1. การเขียนสคริปต์ข้ามไซต์โดยใช้ส่วนหัวที่ไม่ผ่านการทดสอบ => พิษของแคช
  2. การรวมไฟล์อัตโนมัติใน Magento SOAP API => รหัสอัตโนมัติระยะไกล
  3. XSS ในการค้นหาของขวัญ Registry => การขโมยคุกกี้และการแอบอ้างชื่อผู้ใช้
  4. SSRF ช่องโหว่ใน WSDL File => การรั่วไหลของข้อมูลเซิร์ฟเวอร์ภายในและการรวมไฟล์ระยะไกล

หมายเหตุ:ไฟล์ที่ถูกแพทช์ในไฟล์เก็บถาวรการติดตั้งแบบเต็มที่ไม่ได้รับการแพตช์ด้วย 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
ฉันคิดว่าไฟล์ที่หายไปแก้ไขปัญหา "การเขียนสคริปต์ข้ามไซต์ที่สำคัญที่สุดโดยใช้ Unvalidated Headers" ดูเหมือนจะมีการเพิ่มปัญหา "XSS in Gift Registry Seaerch" ลงในเอกสารประกอบการแก้ไขสำหรับรุ่น CE อย่างไม่ถูกต้องเนื่องจาก Gift Registry เป็นคุณลักษณะของ EE-only
Aad Mathijssen

1
ใช่ฉันคิดว่ามันมีความสำคัญพอที่จะใช้การเปลี่ยนแปลงที่ขาดหายไปกับการติดตั้ง CE ของฉันต่อไปและไม่รอให้วีโอไอพีคิดออกและส่งแพตช์ V2 ให้เราเมื่อพวกเขาเข้าใกล้มัน แคชที่เป็นพิษและการป้อนข้อมูลผู้ใช้ที่ไม่กรองซึ่งใช้ในองค์ประกอบคุกกี้ดูเหมือนเป็นเรื่องใหญ่
Fiasco Labs

1
Magento ได้อัปเดตเอกสารประกอบ: ทั้ง "การเขียนสคริปต์ข้ามไซต์โดยใช้ Unvalidated Headers" และ "XSS in Gift Registry Search" ปัญหาถูกทำเครื่องหมายเป็น "สำหรับ Magento Enterprise Edition เท่านั้น" แต่ในระหว่างนี้ Magento CE 1.9.2.1 มีการแก้ไขสำหรับปัญหา "การเขียนสคริปต์ข้ามไซต์โดยใช้ส่วนหัวที่ไม่ผ่านการทดสอบ" หรืออย่างน้อยก็เป็นส่วนหนึ่งของมัน
Aad Mathijssen

1
Heh การเปลี่ยนแปลงสั้น ๆ ของ CE CE ไม่มีรายการสิ่งที่ปรารถนา แต่ต้องมีปัญหา "Unvalidated Headers" อย่างแน่นอนเพื่อให้หายไปผ่านชุดข้อมูลแก้ไขไม่ใช่เอกสารประกอบ โอ้ ... มากกว่าสิ่งที่เราคาดหวัง
Fiasco Labs

3
สำหรับบันทึก - ตามการทดสอบของเรา - การเขียนสคริปต์ข้ามไซต์โดยใช้ส่วนหัวที่ไม่ผ่านการตรวจสอบไม่ใช่ช่องโหว่ CE หากทุกคนสามารถให้ POC ว่ามีช่องโหว่ CE ได้โปรดไปที่magento.com/securityและรายงาน
benmarks

9

ฉันดูการเปลี่ยนแปลงรายละเอียดและผลข้างเคียงที่คาดหวัง

ในเวอร์ชั่นสำหรับ EE 1.13.1.0 ไฟล์ต่อไปนี้เปลี่ยนไป:

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
  • ในAdapter/Soap.phpurlencoding ถูกเพิ่มเข้าไปในข้อมูลการตรวจสอบความถูกต้อง สิ่งนี้ไม่ควรมีผลข้างเคียงเชิงลบ ตรวจสอบให้แน่ใจว่าผลลัพธ์ที่wsdlUrlถูกต้อง หากไม่มีการเปลี่ยนแปลงนี้จะมีผลกับ URL
  • Product/Api/V2.php: นี่คือการตรวจสอบบางอย่างว่าข้อมูลที่ผ่านเป็นวัตถุ สิ่งนี้ไม่ควรเกิดขึ้นภายใต้สถานการณ์ปกติ
  • ในRequest/Http.phpและPageCache/Model/Processor.phpการตรวจสอบจะถูกเพิ่มเมื่อได้รับ HTTP HOST ดูเหมือนว่าจะครอบคลุมการฉีดส่วนหัวที่กล่าวถึง การตรวจสอบใช้เฉพาะในกรณีที่มี;หรือ,ในโฮสต์ HTTP ดังนั้นจึงไม่ควรตรวจสอบในระบบชีวิตจริง / ไม่มีผลข้างเคียงเชิงลบ
  • ในการcookie.phtmlหลบหนีจะถูกเพิ่ม ดังนั้นสิ่งนี้จะต้องถูกส่งต่อไปยังธีมของคุณหากคุณเขียนทับไฟล์นั้น
  • ที่คล้ายกันสำหรับ giftregistry/search/form.phtml

สรุปแล้วฉันจะบอกว่าการใช้โปรแกรมปะแก้ควรไม่มีผลข้างเคียงเชิงลบใด ๆ อย่าลืมส่งต่อการเปลี่ยนแปลงไปยัง.phtmlไฟล์ของคุณ


1
ขอบคุณสำหรับการยืนยันการฉีดส่วนหัวและการหลบหนีคอมโพเนนต์คุกกี้นั้นง่ายต่อการย้อนกลับสู่ CE
Fiasco Labs

1
ไม่จำเป็นต้องพอร์ต มีเวอร์ชั่นแก้ไขสำหรับ CE ในพื้นที่ดาวน์โหลด
Alex

5

สิ่งที่แปลกคือแพทช์ EE มีการแก้ไขไฟล์ต่อไปนี้:

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

เมื่อ CE ไม่มีสำหรับรุ่นที่เทียบเท่า

ฉันคิดว่ามีบางอย่างที่ขาดหายไปในSUPEE-6482เวอร์ชัน CE และ V2 จะวางจำหน่ายในไม่ช้า


ฉันคิดในสิ่งเดียวกัน!
rob3000

2
ใช่คุณสังเกตเห็นถูกต้อง นั่นคือสิ่งที่ฉันได้รับจากการติดตั้งไฟล์เก็บถาวรการติดตั้ง 1.9.2.0 และ 1.9.2.1 ฉันมีการติดตั้ง CE ที่ได้รับการติดตั้งอย่างสมบูรณ์เนื่องจากสิ่งนี้ฉันไปข้างหน้าและทำการแก้ไขไฟล์ทั้งสองที่กล่าวถึงด้วยตนเอง ไฟล์คุกกี้ js ต้องได้รับการปะแก้ในเทมเพลตที่กำหนดเองของคุณเช่นกันหากคุณมีไฟล์นั้นอยู่ พวกเขาอาจข้ามตัวควบคุมการร้องขอเป็นแพทช์เพราะมันจะต้องแก้ไขไฟล์ที่ถูกแก้ไขก่อนหน้านี้และเราไม่ได้รัก CE ที่เกิดขึ้น
Fiasco Labs

1
อีกเหตุผลหนึ่งในการ "รอ" บางวันก่อนที่จะนำไปใช้งานในสภาพแวดล้อมการผลิต (และใช้วันนี้เพื่อทำการตรวจสอบที่ดีขึ้นก่อนที่จะเผยแพร่สด) วันนี้มีอีกหนึ่งการแจ้งเตือนการอัปเดตใน Magento Backend (เพียงการแจ้งเตือนเกี่ยวกับช่องโหว่ความปลอดภัย 2 แทนที่จะเป็น 4) อย่างไรก็ตามฉันจะรอจนถึงวันจันทร์ที่จะมีชีวิตอย่างน้อย
DarkCowboy

1
Magento ได้อัปเดตบันทึกประจำรุ่นของพวกเขา: merch.docs.magento.com/ce/user_guide/… แพทช์บางตัวเป็น EE ที่มีประสิทธิภาพเท่านั้น แต่ฉันก็ยังไม่เข้าใจว่าทำไมไฟล์ทั้งสองที่เป็นคอร์ไม่เกี่ยวข้องกับแพตช์ CE เนื่องจากรวมอยู่ใน CE 1.9.2.1 ...
Antoine Kociuba

4

Magento release patch SUPEE-6482 สำหรับการแก้ไขปัญหาด้านล่างในฉบับ CE & EE

สำหรับ Magento Community Edition:

  • การรวมไฟล์อัตโนมัติใน Magento SOAP API
  • SSRF ช่องโหว่ในไฟล์ WSDL

สำหรับ Magento Enterprise Edition

  • การรวมไฟล์อัตโนมัติใน Magento SOAP API
  • SSRF ช่องโหว่ในไฟล์ WSDL
  • การเขียนสคริปต์ข้ามไซต์โดยใช้ส่วนหัวที่ไม่ผ่านการอนุมัติ

XSS ในการค้นหาของขวัญรีจิสทรี

ทำการเปลี่ยนแปลงในชั้นเรียน

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

การเปลี่ยนแปลงที่ Mage_Api_Model_Server_Adapter_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,

เปลี่ยนที่Mage_Catalog_Model_Product_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);
         }

ดูเพิ่มเติมได้ที่: http://www.amitbera.com/magento-security-patch-supee-6482/


1
สวัสดี Amit Bera (@ amit-bera) ฉันจะได้รับแพตช์ SUPEE-6482 ในรูปแบบซิปแยกต่างหากของ Magento 1.9.2.1 ได้อย่างไร
Andhi Irawan

2
@ Andhi, magento 1.9.2.1 ได้รวมรหัสแพตช์ไว้แล้วในโครงสร้างรหัสดังนั้นคุณไม่จำเป็นต้องสมัคร SUPEE-6482
Amit Bera

1
@ Amit Bera หากยังคงใช้ Magento 1.9.1.0 จะอัพเกรดเป็น 1.9.2.1 หรือไม่ ฉันหมายถึงสามารถติดตั้งแพตช์ SUPEE-6428 ได้หรือไม่
Andhi Irawan

3
โปรดทราบว่าแพทช์ส่วนหัวที่ไม่ผ่านการอนุมัติไม่ได้อยู่ใน CE แพ็ตช์ไฟล์ต่อไปนี้จะไม่ถูกสัมผัส => app/code/core/Mage/Core/Controller/Request/Http.phpและapp/design/frontend/base/default/template/page/js/cookie.phtmlอยู่ในกลุ่มที่ขาดหายไป บางทีเราควรเปลี่ยนคำถามที่ด้านบนเพื่ออ่าน: Magento security patch SUPEE-6482, อะไรที่ไม่ได้รับการแก้ไข?
Fiasco Labs

1
@ Amit Bera ขออภัยเพิ่มโดย Magento เมื่อวันที่ 4 สิงหาคม 2558 ในmagentocommerce.com/download : ดาวน์โหลด -> Magento Community Edition patches -> SUPEE-6482
Andhi Irawan

4

โปรดอ่านเอกสารของ Magento ในรุ่นนี้คำตอบอยู่ที่: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html


5
ในขณะที่ข้อมูลให้พิจารณาคัดลอกส่วนที่เกี่ยวข้องลงในหัวข้อนี้ การเชื่อมโยงเท่านั้นคำตอบไม่ได้เป็นคำตอบที่ดีที่สุดกับการเชื่อมโยงมีนิสัยของการหาย (โดยเฉพาะอย่างยิ่งการเชื่อมโยงเอกสารวีโอไอพี)
philwinkle

1
@philwinkle - เฮ้ใช่เราเคยไปที่นั่นทั้งหมด MagEbay การระเหย (x_x) เชื่อมโยงมากมาย
Fiasco Labs

2

โปรแกรมแก้ไขนี้เช่นเดียวกับโปรแกรมแก้ไขล่าสุดอื่น ๆ ประกอบด้วยสำเนาการอนุญาตและการพิมพ์ผิดจำนวนมาก มันยังแนะนำตัวพิมพ์ผิดเล็กน้อยจากสิ่งที่ฉันได้เห็น

ส่วนแพทช์รักษาความปลอดภัยที่แท้จริงปรากฏขึ้นเพื่อจัดการปัญหาการป้อนข้อมูลของผู้ใช้สำหรับการโจมตีที่อาจเกิดขึ้นได้ 4 แบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.