SecurityPatch 9652: ปัญหาที่เป็นไปได้หลังจากใช้ SUPEE-9652


16

Magento ได้เปิดตัวแพทช์รักษาความปลอดภัยSUPEE-9652สำหรับMagento 1.x CE และ EE

ฉันต้องการรู้ว่าปัญหาที่เป็นไปได้หลังจากใช้โปรแกรมปรับปรุงความปลอดภัยนี้คืออะไรและอะไรคือการเปลี่ยนแปลงใหม่ในโปรแกรมปรับปรุงความปลอดภัยนี้

คำตอบ:


25

มันเป็น patch เล็ก ๆ นี่คือความแตกต่าง:

diff --git lib/Zend/Mail/Transport/Sendmail.php lib/Zend/Mail/Transport/Sendmail.php
index b24026b..9323f58 100644
--- lib/Zend/Mail/Transport/Sendmail.php
+++ lib/Zend/Mail/Transport/Sendmail.php
@@ -119,14 +119,19 @@ class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
                 );
             }

-            set_error_handler(array($this, '_handleMailErrors'));
-            $result = mail(
-                $this->recipients,
-                $this->_mail->getSubject(),
-                $this->body,
-                $this->header,
-                $this->parameters);
-            restore_error_handler();
+            // Sanitize the From header
+            if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
+                throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
+            } else {
+                set_error_handler(array($this, '_handleMailErrors'));
+                $result = mail(
+                    $this->recipients,
+                    $this->_mail->getSubject(),
+                    $this->body,
+                    $this->header,
+                    $this->parameters);
+                restore_error_handler();
+            }
         }

         if ($this->_errstr !== null || !$result) {

อย่างไรก็ตาม Peter O'Callaghan (หนึ่งเดียว) ดูเหมือนว่าจะพบข้อผิดพลาด เขาแชร์รายละเอียดกับฉันเบา ๆ และบอกว่าฉันสามารถแบ่งปันกับคุณที่นี่ดังนั้นนี่คือ :

ดีที่สุดที่ฉันสามารถบอกได้ว่าค่าของ$this->paramsจะถูกนำหน้าอยู่เสมอ -fณ จุดที่มีการเพิ่มการตรวจสอบความถูกต้อง ดังนั้น ณ จุดที่มันถูกส่งไปยังการตรวจสอบถ้าฉันได้กำหนดค่าอีเมลของฉัน contact@me.comค่าที่ถูกตรวจสอบจริง-fcontact@me.comก็ดูเหมือนว่ามีความบังเอิญมากกว่าความตั้งใจที่จะตรวจสอบว่าเป็นที่อยู่อีเมล หากที่อยู่อีเมลของฉันคือคำนำหน้า ในความเป็นจริงถ้าไม่ใช่เพราะคำนำหน้าอยู่ที่นั่น str_replace และการตรวจสอบจะไม่เป็นประโยชน์เพราะและ ทั้งคู่ตรวจสอบตั้งแต่หลังไม่เคยกำหนดให้กับสิ่งใดหลังจากการแทนที่อีเมลจะยังคงถูกส่งโดยใช้อดีต มูลค่าซึ่งน่าจะยังคงมีความเสี่ยง"example"@example.comต้องนี่จะกลายเป็น-f"example"@example.comสิ่งที่ไม่ผ่านการตรวจสอบ อนึ่งstr_replaceดูเหมือนว่าซ้ำซ้อนอย่างสมบูรณ์ในเรื่องนี้เนื่องจาก AFAIK สามารถใช้พื้นที่ร่วมกับเครื่องหมายคำพูดได้เท่านั้นและอีเมลที่มีเครื่องหมายคำพูดจะไม่ตรวจสอบกับ-f"foo bar"@example.com"foobar"@example.com

สิ่งอื่น ๆ ที่ควรทราบ:

  • แพตช์เวอร์ชั่น CE ยังมีรายชื่อ 'EE_1.14.3.1' เป็นเวอร์ชัน ไม่ส่งผลกระทบต่อการใช้งานเพียงแค่เพิ่มเวอร์ชันที่ผิดไปเพื่อให้app/etc/applied.patches.listรู้สึกแปลก ๆ (ที่มา: https://twitter.com/JohnHughes1984/status/829050203139358720 )
  • ตราบใดที่คุณปิดใช้งานการตั้งค่าอีเมล (ดูที่นี่: https://magento.com/security/news/new-zend-framework-1-security-vulnerability ) แต่คุณจะต้องรีบทำเพราะแพทช์ใหม่จะต้องติดตั้งสิ่งนี้ (ที่พวกเขาไปอยู่ด้านบนของกันและกัน)

ข้อความด้านข้าง

Magento CE 1.9.3.2 รุ่นใหม่ที่สอดคล้องกันยังรวมถึงการอัปเดตความคิดเห็นลิขสิทธิ์ปี (จาก 2016 ถึง 2017) ดังนั้นเกือบทุกไฟล์ของ Magento ได้รับการปรับปรุงและ diff ดูใหญ่มาก


2
"ตราบใดที่คุณปิดใช้งานการตั้งค่าอีเมล" การตั้งค่าใดบ้างที่อยู่ในกลุ่มผู้ดูแลระบบ เพียงเพื่อช่วยฉันดำน้ำผ่าน Sys-> Config โดยไม่ต้องมีเครื่องชงกาแฟของฉัน :)
ลุคร็อดเจอร์ส

2
@LukeRodgers อ้างถึงบล็อกนี้สำหรับรายละเอียด: magento.com/security/news/…
Raphael at Digital Pianism

1
"ลิขสิทธิ์ความคิดเห็นปีปรับปรุง (2016-2017) ดังนั้นเกือบทุกไฟล์ของ Magento ได้รับการปรับปรุง" นั่นคือความจริง @ ราฟาเอลที่เปียโนดิจิตอล
Amit Bera

1
@ ดีถ้าคุณตรวจสอบชื่อไฟล์แพทช์มัน v2 อยู่แล้ว ^^ ดังนั้น v3 ยังไม่มี ETA เลย
Raphael ที่ Digital Pianism

1
สำหรับเร็กคอร์ดมันไม่น่าเป็นไปได้อย่างมากที่จะส่งผลกระทบต่อการใช้งานที่ถูกต้องตามกฎหมายและ AFAIK (โดยไม่เห็นส่วนของข้อมูลที่ส่ง) มันจะป้องกันการเอารัดเอาเปรียบในทุกกรณี (แม้ว่าเหตุผลที่แท้จริงสำหรับเรื่องนี้ เป็นเพียงการบล็อกอีเมลทั้งหมดที่ส่วนท้องถิ่นถูกห่อหุ้มคำพูดเช่น"example"@example.comที่อยู่ของฟอร์มโดยไม่คำนึงว่าพวกเขาเป็นอันตรายทางเทคนิคหรือไม่ ฉันค่อนข้างประหลาดใจถ้ามีร้านค้าที่ถูกกฎหมายที่ใช้อีเมลประเภทนี้ แต่ต้องการข้อมูลที่มีอยู่ในกรณี
Peter O'Callaghan

8

ทิปเล็กน้อยสำหรับการอัพเกรด; หลังจากคัดลอกเวอร์ชันใหม่ไปยังการติดตั้งปัจจุบันของคุณแล้วให้เรียกใช้git diff -w --stat=400 | grep -v " 2 +”เพื่อดู diffs ที่มีการเปลี่ยนแปลงมากกว่าเพียงแค่การแจ้งให้ทราบลิขสิทธิ์เท่านั้น



1

สำหรับคนอย่างฉันที่สงสัยว่าจะทำอย่างไรหากไม่มีการเข้าถึง SSH: แก้ไขไฟล์ /lib/Zend/Mail/Transport/Sendmail.php

จากบรรทัดที่ 122 ขึ้นไปให้แทนที่สิ่งนี้:

        set_error_handler(array($this, '_handleMailErrors'));
        $result = mail(
            $this->recipients,
            $this->_mail->getSubject(),
            $this->body,
            $this->header,
            $this->parameters);
        restore_error_handler();

ด้วยสิ่งนี้:

        // Sanitize the From header
        if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
            throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
        } else {
            set_error_handler(array($this, '_handleMailErrors'));
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
            restore_error_handler();
        }

4
hm สำหรับผู้ที่ไม่มีการเข้าถึง SSH บางทีคุณควรแพทช์ในเครื่องและอัปโหลดไฟล์ที่แพทช์ ;)
infabo

สำหรับคำแนะนำทั้งหมดเกี่ยวกับการแพตช์โดยไม่ต้องเข้าถึง SSH ดูคำตอบนี้ได้ที่นี่: magento.stackexchange.com/a/63936/3326
7ochem
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.