SUPEE-6285 पैच, क्या बदल दिया गया है?


26

ठीक है, किसी को यह पूछना है: आज, 7/7/2015 मैगेंटो <1.9.2 के लिए एक नया सुरक्षा पैच जारी किया गया है।

अपनी दुकानों ASAP को अपडेट करें!

लेकिन क्या बदला है? क्या कवर किए गए सुरक्षा मुद्दों के ज्ञात कारनामे हैं? सबसे बुरा क्या हो सकता है?

और क्या ऐसा कुछ है जो टूट सकता है? SUPEE-5994 की तरह जहां पैच डाउनलोड करना संभव नहीं था अगर डाउनलोडर निर्देशिका गायब थी ...


4
बहुत। अकेले पैच फ़ाइल लगभग 350 अतिरिक्त और 100 निष्कासन के साथ 1,100 से अधिक लाइनें है। यदि आप उन्हें अपने पैकेज / थीम में ओवरराइड कर चुके हैं तो मैन्युअल टेम्पलेट संपादन ~ 8 फ्रंटएंड टेम्प्लेट में किए जाने की आवश्यकता होगी
बेन लेसानी - सोनासी

5
यहाँ एक अच्छा लेख है blog.philwinkle.com/supee-6285-broken-down
स्टीव रॉबिन्स

जवाबों:


36

जैसा कि पहले ही उल्लेख किया गया है, इस आधिकारिक पृष्ठ (नए मर्चेंट डॉक्स) पर पैच की कमजोरियों का विस्तार से वर्णन किया गया है: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_Uu_Guide.html#magento/patch-releases-2015.html

सारांश

इस बंडल में सुरक्षा से संबंधित समस्याओं के खिलाफ सुरक्षा शामिल है:

  • RSS और विशेषाधिकार वृद्धि के माध्यम से ग्राहक सूचना लीक
  • Magento में क्षमा का अनुरोध कोड निष्पादन की ओर जाता है
  • विशलिस्ट में क्रॉस-साइट स्क्रिप्टिंग
  • क्रॉस-साइट स्क्रिप्टिंग कार्ट में
  • पथ प्रकटीकरण की दुकान
  • लॉग फ़ाइलें पर भी व्यापक
  • क्रॉस-साइट स्क्रिप्टिंग इन एडमिन
  • क्रॉस-साइट स्क्रिप्टिंग ऑर्डर्स आरएसएस में

कुछ दुकानों को पैच करने के बाद, यह वही है जो मैंने इकट्ठा किया:

थीम पैच

संभावित XSS हमलों को रोकने के लिए कुछ बचतों को जोड़ा गया है।

  • checkout/cart.phtml
  • checkout/cart/noItems.phtml
  • checkout/onepage/failure.phtml
  • rss/order/details.phtml
  • wishlist/email/rss.phtml

यदि आपके विषय में इनमें से कोई भी टेम्प्लेट शामिल हैं, या यदि आपने सीधे base/default(अच्छे भाग्य, आप खराब हैं) में संशोधन किए हैं, तो आपको उन्हें मैन्युअल रूप से पैच करने की आवश्यकता है:

  1. चेकआउट टेम्प्लेट में, सभी घटनाओं को बदलें

    $this->getContinueShoppingUrl()

    साथ में

    Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
  2. में wishlist/email/rss.phtml, प्रतिस्थापित करें

    $this->helper('wishlist')->getCustomerName()

    साथ में

    Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
  3. में rss/order/details.phtml, की जगह

    <?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 />

    साथ में

    <?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 />

अनुमतियां

.htaccessफ़ाइलों को स्रोत फ़ाइलों तक सीधी पहुंच को जोड़ने downloader/Magedऔर downloader/libहटाने के लिए जोड़ा गया है । यदि आप नगनेक्स का उपयोग करते हैं, तो आपको इसे प्राप्त करने के लिए इन नियमों को जोड़ने की आवश्यकता है ( इस एक के लिए बेन लेसानी से):

location /downloader/Maged/ { deny all; }
location /downloader/lib/   { deny all; }

लेकिन मैं downloaderकिसी भी तरह एक लाइव सिस्टम सिस्टम में तैनाती से बाहर करने की सलाह देता हूं , इस मामले में आपको कार्रवाई करने की आवश्यकता नहीं है।

व्यवस्थापक विशेषाधिकार (ACL)

यदि आप प्रतिबंधित व्यवस्थापक खातों का उपयोग करते हैं, तो तृतीय पक्ष एक्सटेंशन के कुछ मेनू उनके लिए अब और काम नहीं कर सकते हैं। कारण यह है कि डिफ़ॉल्ट वापसी मूल्य Mage_Adminhtml_Controller_Action::_isAllowed()को से बदल दिया गया trueहै Mage::getSingleton('admin/session')->isAllowed('admin')। एक्सटेंशन जो इस पद्धति को उनके व्यवस्थापक नियंत्रकों में ओवरराइड नहीं करते हैं क्योंकि वे एसीएल का उपयोग नहीं करते हैं, अब "सभी" विशेषाधिकार की आवश्यकता है।

एकमात्र उपाय एक्सटेंशन पैच करना है और इस विधि को उनके सभी व्यवस्थापक नियंत्रकों में जोड़ना है:

protected function _isAllowed()
{
    return true;
}

या अगर वे वास्तव में एक एसीएल संसाधन में परिभाषित हैं etc/adminhtml.xml:

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}

(आप देख सकते हैं कि पैच Phoenix_Moneybookersपुराने Magento संस्करणों के लिए 1.7 की तरह ही है जहां यह विस्तार शामिल था)

इस मुद्दे पर अधिक विस्तृत परिप्रेक्ष्य और गुम एसीएल संसाधनों को परिभाषित करने के तरीके की व्याख्या के लिए, देखें: SUPEE-6285 को स्थापित करने के बाद पहुंच अस्वीकृत

पैच लगाते समय संभावित त्रुटियां

  1. संदेश:

    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

    कारण:default/modern विषय स्थापना से हटा दिया गया था

    समाधान:app/design/frontend/default/modern एक ताजा Magento डाउनलोड से जोड़ें (आपकी दुकान के समान संस्करण होना चाहिए)। : आप भी इस दर्पण का उपयोग कर सकते https://github.com/firegento/magento । फिर पैच को सफलतापूर्वक लागू करने के बाद आप थीम को फिर से हटा सकते हैं।

  2. संदेश

    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

    कारण:downloader निर्देशिका स्थापना से हटा दिया गया था

    समाधान:downloader एक ताजा Magento डाउनलोड से जोड़ें (आपकी दुकान के समान संस्करण होना चाहिए)। : आप भी इस दर्पण का उपयोग कर सकते https://github.com/firegento/magento । फिर पैच को सफलतापूर्वक लागू करने के बाद आप निर्देशिका को फिर से हटा सकते हैं।

  3. संदेश: कुछ इसी तरह का

    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

    कारण: फ़ाइलों को (LF, यूनिक्स लाइन ब्रेक) के बजाय \r\n(CRLF, विंडोज लाइन ब्रेक) या \r(CR, मैक लाइन ब्रेक) के साथ संग्रहीत किया जाता है \n

    समाधान: बस लाइन ब्रेक को कन्वर्ट करें, आपका टेक्स्ट एडिटर या आईडीई इसके लिए सक्षम होना चाहिए।


जैसा कि यह एक प्रमुख पैच लगता है, क्या आप इस बात से सहमत होंगे कि 1.9.x पर चलने वाली दुकानें अब 1.9.2.0 पर अपग्रेड करना बेहतर होगा जिसमें यह पैच शामिल है?
पेज

1
मैंने अभी तक 1.9.2.0 में किसी भी दुकान को अपडेट नहीं किया है, लेकिन कुछ अतिरिक्त नुकसान हो रहे हैं और अपडेट को अधिक सावधानी से परीक्षण किया जाना चाहिए। मैं अभी भी पहले पैच स्थापित करने की सिफारिश करूंगा।
फाबियन शेंगलर

हमारी टीम में हमने केवल अपने उपयोग के लिए एक एक्सटेंशन विकसित किया और इस पैच के बाद मुझे एहसास हुआ कि कुछ प्रशासक नियंत्रक _isAllowedविधि को लागू नहीं कर रहे थे । सौभाग्य से हमारे पास मॉड्यूल में एसीएल था और विधि को जोड़ने से अलग कोई अतिरिक्त कार्रवाई की आवश्यकता नहीं थी। इसके अलावा, मैं उस default/modernविषय के साथ पहला त्रुटि संदेश आया था जिसे स्थानांतरित कर दिया गया था (मैंने गिट के लिए धन्यवाद भी पाया)। इसके लिए +1
विकी

कुछ बेहतरीन सामान यहाँ। जब मैं अपनी कार्ट अपडेट करने के लिए गया ।phtml, मैंने उस आधार में अपने संस्करण की तुलना की और देखा कि आपका संपादन थोड़ा गलत है। पैच फ़ाइल से नई लाइन है: <बटन प्रकार = "बटन" शीर्षक = "<? Php इको मैज :: हेल्पर ('कोर') -> quotEscape ($ यह -> __ ('जारी खरीदारी')?)?" "class =" बटन btn-जारी "onclick =" setLocation ('<? php इको मैसेज :: हेल्पर (' कोर ') -> quotEscape ($ यह-> getContinueShoppingUrl ())?>' ') "> <span>? स्पैन> <? php गूंज $ यह -> __ ('खरीदारी जारी रखें')?> </ अवधि> </ अवधि> </ बटन>। क्या आप स्पष्ट कर सकते हो?
पेड्रोकेटीएफसी

7

वाया @ http://blog.philwinkle.com/supee-6285-broken-down/

आम तौर पर इसमें _isAllowed संरक्षित विधि को जोड़ना शामिल होता है जो एक बूलियन देता है। कभी-कभी यह बूलियन ACL जाँच का एक परिणाम होता है, जैसा कि Adminhtml / नियंत्रकों / कैटलॉग / श्रेणी / WidgetController के अपडेट के साथ होता है। कभी-कभी यह हार्ड-कोडेड टू ट्रू होता है, जैसा कि Adminhtml / नियंत्रकों / AjaxController.php के साथ होता है

मेरे जाने के बाद:

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('system/config');
}

3rd पार्टी कंट्रोलर में से एक को उस एडमिन सेक्शन ने "काम" के लिए फिर से शुरू किया ...

तो हम जल्द ही एक और Magento पैच मिलेगा? यह एक बड़ा मुद्दा लगता है ...


कृपया मेरा उत्तर देखें। प्रतिबंधित भूमिकाओं को "डैशबोर्ड" विशेषाधिकार देने से फिर से एसीएल संसाधन के बिना तीसरे पक्ष के वर्गों तक पहुंच की अनुमति मिल जाएगी।
फेबियन शेंगलर

मैगनेटो 1.8 : चेक किया गया कि (सही है "चालू") - वही कहानी: प्रवेश निषेध । हां, मैंने पहले लॉग आउट किया है और उसके बाद लॉगिन में लॉग इन किया है
पिय्रोट सेजचुक

क्षमा करें, मैंने "व्यवस्थापक" के लिए कॉन्फ़िगरेशन की गलत व्याख्या की, यह वास्तव में केवल सभी प्राइवेटिलिज वाले उपयोगकर्ताओं के लिए सही है। यह सच है कि कई एक्सटेंशन को पैच करना होगा। तदनुसार मेरा उत्तर अपडेट करें।
बजे फैबियन शेंगलर

यह या जैसा कि मैंने @ magento.stackexchange.com/questions/73646/… लिखा है, हमें Mage_Adminhtml_Controller_Action :: _ isAlogged () <प्री> प्रोटेक्टेड फंक्शन _isAllowed () {Mage :: रिटर्न_एज :: के लिए ऐप / कोड / लोकल में ओवरराइड लिखने की आवश्यकता हो सकती है। getSingleton ( 'व्यवस्थापक / सत्र') -> isAllowed ( 'प्रणाली / config'); } </ pre>
पियोट सेजचुक

1
यदि "सिस्टम / कॉन्फिगरेशन" डिफ़ॉल्ट अनुमति के रूप में आपके लिए काम करता है .. तो व्यापारी पर मुझे लगता है कि निर्भर करता है
Fabian Schmengler

3

यदि आपके पास बहुत सारे समुदाय / स्थानीय एक्सटेंशन हैं, तो आप SUPEE-6285 में इस बदलाव पर विशेष ध्यान देना चाहते हैं, जो app/code/core/Mage/Adminhtml/Controller/Action.phpआपके पैच संस्करण के आधार पर लाइन 666 को प्रभावित करता है और होता है (यह EE 1.14.0.1 पैचफ्राइल है):

protected function _isAllowed()
    {
-        return true;
+        return Mage::getSingleton('admin/session')->isAllowed('admin');
    }

सभी कस्टम मॉड्यूल जो अपने स्वयं के व्यवस्थापक संसाधनों को लागू नहीं करते हैं, वे ऊपर के परिवर्तन से प्रभावित होते हैं और जब तक कि प्रश्न में व्यवस्थापक उपयोगकर्ता के पास पूर्ण व्यवस्थापक विशेषाधिकार न हों, तब तक उपयोग से इनकार कर दिया जाएगा।

यदि आप पैच में कहीं और देखते हैं, तो आप देखेंगे कि बहुत सारे शामिल कोर मॉड्यूल को अपडेट किया गया है, लेकिन यह बहुत अधिक तृतीय पक्ष मॉड्यूल को प्रभावित करने की संभावना है, इसलिए अपनी साइट पोस्ट पैच में किसी भी तीसरे पक्ष के एक्सटेंशन की जांच करने के लिए विशेष ध्यान दें। आप अभी भी उन तक पहुँच सकते हैं!


1

ऐसा लगता है कि पैच रिलीज़ पेज को प्रभावित करने वाली जानकारी के साथ अपडेट किया गया है।

मुझे अभी तक एक उत्पादन साइट पर स्थापित करना है और परीक्षण करना है


3
मैंने इसे देव सर्वर पर स्थापित किया है और यह ठीक काम किया है, इसलिए इसे उत्पादन में धकेल दिया है। सब कुछ ठीक काम करने के लिए लग रहा था, जब तक कि हमारे उत्पाद और बिक्री के कुछ व्यवस्थापक ने Magento के व्यवस्थापक का उपयोग करने की कोशिश नहीं की - इन उपयोगकर्ताओं ने Magento में 'उपयोगकर्ता भूमिका संपादक' के माध्यम से भूमिका अनुमतियों को प्रतिबंधित कर दिया है, वे व्यवस्थापक क्षेत्र वेबसाइट के कुछ क्षेत्रों पर पहुंच से इनकार त्रुटियों के साथ थे। जो तृतीय-पक्ष प्लगइन्स का उपयोग करते हैं। मेरा मुख्य व्यवस्थापक खाता अभी भी इन सभी पर ठीक काम करता है ... मैं अभी भी इसे देख रहा हूं
रिकी ओडिन मैथ्यूज

0

पैच लगाने के बाद संशोधित फ़ाइलों की पूरी सूची भी इसमें उपलब्ध है app/etc/applied.patches.list


0

तीसरे पक्ष के मॉड्यूल के लिए मेरे मामले में, नीचे दिए गए कोड को जोड़कर adminhtml नियंत्रकों ने काम किया:

protected function _isAllowed()

{
     return true;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.