SecurityPatch 9652: SUPEE-9652 लागू होने के बाद संभावित समस्याएं


16

Magento ने अपनी सुरक्षा पैच जारी की है SUPEE-9652, Magento 1.x CE और EE के लिए

मैं सिर्फ यह जानना चाहता हूं कि इस सुरक्षा पैच को लागू करने के बाद क्या समस्याएं हैं और इस सुरक्षा पैच में नए बदलाव क्या हैं?

जवाबों:


25

यह एक सुपर छोटे पैच है, यहाँ का अंतर है:

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) {

हालाँकि, पीटर ओ'कैलाघन (केवल और केवल) को एक बग मिला है। उन्होंने धीरे से मेरे साथ विवरण साझा किया और कहा कि मैं इसे यहां आपके साथ साझा कर सकता हूं इसलिए यह यहां है :

सबसे अच्छा मैं बता सकता हूं कि मान $this->paramsको हमेशा -fजोड़ा जाएगा जिस बिंदु पर सत्यापन जोड़ा गया है (यह उस बिंदु पर कंस्ट्रक्टर में वापस आ गया है जहां वापसी मार्ग जोड़ा गया है)। इसलिए इस बिंदु पर यह सत्यापन के लिए पारित कर दिया गया है, अगर मैंने अपना ई-मेल कॉन्फ़िगर किया है, तो contact@me.comजो मूल्य वास्तव में मान्य किया जा रहा है -fcontact@me.com, यह एक इरादे से अधिक अस्थायी लगता है जो ई-मेल पते के रूप में मान्य होता है। यदि मेरा ई-मेल पता "example"@example.comहालांकि था , तो यह बन जाएगा -f"example"@example.com, जो मान्य नहीं होगा। संयोग से str_replaceइस मामले में पूरी तरह से बेमानी लगता है कि AFAIK एक स्थान केवल उद्धरण के साथ संयोजन में इस्तेमाल किया जा सकता है, और उद्धरण के साथ ई-मेल के साथ मान्य नहीं होगा-fउपसर्ग। वास्तव में अगर यह उपसर्ग वहाँ जा रहा है, str_replace और सत्यापित करें उपयोगी नहीं होगी, क्योंकि के लिए नहीं था "foo bar"@example.comऔर "foobar"@example.comदोनों सत्यापित करें, बाद के बाद से प्रतिस्थापन के बाद कुछ भी करने के लिए सौंपा कभी नहीं किया जाता है, ई-मेल अभी भी पूर्व का उपयोग कर भेज दिया जायेगा मूल्य, जो संभवतः अभी भी असुरक्षित होगा।

दो अन्य बातों का ध्यान रखें:

  • पैच के CE संस्करण में संस्करण के रूप में सूचीबद्ध 'EE_1.14.3.1' भी है। यह लागू करने को प्रभावित नहीं करता है, बस गलत संस्करण जोड़ता है app/etc/applied.patches.listयह थोड़ा अजीब लगता है। (स्रोत: https://twitter.com/JohnHughes1984/status/82905020313139358720 )
  • जब तक आपके पास ईमेल सेटिंग अक्षम होती हैं (यहाँ देखें: https://magento.com/security/news/new-zend-framework-1-security-vulnerability ), इस एक से कोई जल्दी नहीं है, लेकिन आपको इसके लिए कोई जल्दी नहीं करनी होगी ऐसा इसलिए करें क्योंकि किसी भी नए पैच को स्थापित करने की आवश्यकता होगी (क्योंकि वे एक दूसरे के ऊपर जाते हैं)।

पक्षीय लेख

Magento CE 1.9.3.2 की इसी नई रिलीज़ में कॉपीराइट टिप्पणी वर्ष अद्यतन (2016 से 2017 तक) भी शामिल है, इसलिए Magento की लगभग हर फाइल अपडेट की गई है और अंतर बहुत बड़ा है


2
"जब तक आपके पास ईमेल सेटिंग्स अक्षम हैं" कौन-सी सेटिंग्स हैं, तो ये व्यवस्थापक पैनल मेट में हैं? बस मुझे Sys के माध्यम से गोताखोरी को बचाने के लिए-> बिना मेरी कॉफी के विन्यास करें :)
ल्यूक रॉजर्स

2
@LukeRodgers विवरण के लिए इस ब्लॉग पोस्ट को देखें: magento.com/security/news/…
डिजिटल पियानोवाद पर राफेल

1
"कॉपीराइट टिप्पणी साल अद्यतन (2016 से 2017 तक) तो लगभग Magento के हर फ़ाइलें अद्यतन किया गया है" यह है कि डिजिटल Pianism पर सच्चाई @Raphael
अमित बेरा

1
@ अच्छी तरह से अगर आप पैच फ़ाइल नाम की जांच करते हैं तो यह पहले से ही v2 है ^ ^ संभवतः संभवतः एक v3 कोई ईटीए अभी तक नहीं है
राफेल एट डिजिटल पियानोवाद

1
रिकॉर्ड के लिए, यह किसी भी वैध उपयोग और AFAIK (प्रस्तुत पेलोड को देखे बिना) को प्रभावित करने की बहुत संभावना नहीं है, यह सभी मामलों में शोषण को रोक देगा (हालांकि इसके लिए वास्तविक कारण या तो अनजाने में, या एक बहुत ही अजीब विकल्प लगता है)। यह सिर्फ इतना है कि यह सभी ई-मेल को ब्लॉक करता है, जहां स्थानीय भाग को संलग्न किया जाता है, अर्थात "example"@example.comपते पते, चाहे वे तकनीकी रूप से खतरनाक हों। अगर इस तरह के ई-मेल का उपयोग करने वाले कोई कानूनी स्टोर हैं, तो मुझे बहुत आश्चर्य होगा, लेकिन मामले में उपलब्ध जानकारी चाहते थे।
पीटर

8

उन्नयन के लिए थोड़ा टिप; अपने मौजूदा इंस्टॉल पर नए संस्करण की प्रतिलिपि बनाने के बाद, git diff -w --stat=400 | grep -v " 2 +”जल्दी से देखने के लिए चलाएं जिसमें केवल कॉपीराइट सूचना परिवर्तन की तुलना में अधिक परिवर्तन शामिल हैं।


4

सुरक्षा पैच 9652 केवल निम्न फ़ाइल को प्रभावित करता है:

/lib/Zend/Mail/Transport/Sendmail.php

1

मेरे जैसे उन लोगों के लिए जो आश्चर्य करते हैं कि एसएसएच एक्सेस के बिना क्या करना है: फ़ाइल /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
एचएम, एसएसएच पहुंच के बिना उन लोगों के लिए। शायद आपको स्थानीय रूप से पैच करना चाहिए और पैच फ़ाइल अपलोड करनी चाहिए। ;)
infabo

SSH पहुँच के बिना पैचिंग पर पूर्ण मार्गदर्शन के लिए, इस उत्तर को यहाँ देखें: magento.stackexchange.com/a/63936/3326
7ochem
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.