보안 패치 SUPEE-10266-가능한 문제?


36

13 개의 APPSEC 문제를 해결하는 새로운 보안 패치가 Magento 1 용으로 제공됩니다

https://magento.com/security/patches/supee-10266

이 패치를 적용 할 때주의해야 할 일반적인 문제는 무엇입니까?

SUPEE-10266, Magento Commerce 1.14.3.6 및 오픈 소스 1.9.3.6에는 CSRF (Cross-Site Request Forgery), 무단 데이터 유출 및 인증 된 Admin 사용자 원격 코드 실행 취약점을 해결하는 데 도움이되는 여러 가지 보안 강화 기능이 포함되어 있습니다. 이 릴리스에는 1 단계 체크 아웃을 사용한 이미지 다시로드 및 결제 관련 문제에 대한 수정 사항도 포함되어 있습니다.


1.9.3.2에 적용 할 때 문제에 직면 - magento.stackexchange.com/questions/193451/...
Shrenik

답변:


13

중요한 정보 중 일부는 여기에서 공유합니다. 대부분의 파일은 Magento 백엔드에서 가져옵니다. 파일은 다음과 같습니다.

app/code/core/Mage/Admin/Model/Session.php
app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Notice.php
app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Adminhtml/controllers/Newsletter/TemplateController.php
app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Core/Model/Email/Template/Abstract.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Rss/Helper/Data.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Zend/Serializer/Adapter/PhpCode.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/file.phtml
app/design/adminhtml/default/default/template/customer/tab/view.phtml
app/design/adminhtml/default/default/template/login.phtml
app/design/adminhtml/default/default/template/notification/toolbar.phtml
app/design/adminhtml/default/default/template/oauth/authorize/form/login.phtml
app/design/adminhtml/default/default/template/resetforgottenpassword.phtml
app/design/adminhtml/default/default/template/sales/order/view/history.phtml
app/design/adminhtml/default/default/template/sales/order/view/info.phtml
app/design/install/default/default/template/install/create_admin.phtml
app/locale/en_US/Mage_Adminhtml.csv
downloader/template/login.phtml

중요한 것은이 세 파일을 확인해야합니다.

app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Mage/Core/Model/File/Validator/Image.php

app / code / core / Mage / Checkout / controllers / CartController.php 추가 조건 확인 고객 ID :

diff --git app/code/core/Mage/Checkout/controllers/CartController.php app/code/core/Mage/Checkout/controllers/CartController.php
index 7c9f28f..bee6034 100644
--- app/code/core/Mage/Checkout/controllers/CartController.php
+++ app/code/core/Mage/Checkout/controllers/CartController.php
@@ -284,14 +284,16 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
     public function addgroupAction()
     {
         $orderItemIds = $this->getRequest()->getParam('order_items', array());
+        $customerId   = $this->_getCustomerSession()->getCustomerId();

-        if (!is_array($orderItemIds) || !$this->_validateFormKey()) {
+        if (!is_array($orderItemIds) || !$this->_validateFormKey() || !$customerId) {
             $this->_goBack();
             return;
         }

         $itemsCollection = Mage::getModel('sales/order_item')
             ->getCollection()
+            ->addFilterByCustomerId($customerId)
             ->addIdFilter($orderItemIds)
             ->load();
         /* @var $itemsCollection Mage_Sales_Model_Mysql4_Order_Item_Collection */
@@ -709,4 +711,14 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
         $this->getResponse()->setHeader('Content-type', 'application/json');
         $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
     }
+
+    /**
+     * Get customer session model
+     *
+     * @return Mage_Customer_Model_Session
+     */
+    protected function _getCustomerSession()
+    {
+        return Mage::getSingleton('customer/session');
+    }
 }

app / code / core / Mage / Sales / Model / Resource / Order / Item / Collection.php 컬렉션addFilterByCustomerId 추가 메소드가 추가되었습니다 .

diff --git app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
index ee83ad48..c02afdf 100644
--- app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
+++ app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
@@ -152,4 +152,20 @@ class Mage_Sales_Model_Resource_Order_Item_Collection extends Mage_Sales_Model_R
         $this->getSelect()->where($resultCondition);
         return $this;
     }
+
+    /**
+     * Filter by customerId
+     *
+     * @param int|array $customerId
+     * @return Mage_Sales_Model_Resource_Order_Item_Collection
+     */
+    public function addFilterByCustomerId($customerId)
+    {
+        $this->getSelect()->joinInner(
+            array('order' => $this->getTable('sales/order')),
+            'main_table.order_id = order.entity_id', array())
+            ->where('order.customer_id IN(?)', $customerId);
+
+        return $this;
+    }
 }

app / code / core / Mage / Core / Model / File / Validator / Image.php

'general / reprocess_images / active'가 false이면 이미지 재 처리를 건너 뜁니다. 참고 : 이미지 재 처리를 끄면 이미지 업로드 프로세스로 인해 보안 위험이 발생할 수 있습니다.

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 9d57202..6a939c3 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -91,6 +91,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

도움이 되길 바랍니다. 나는 생각한다


CartController.php 및 Collection.php 가능한 문제를 얼마나 정확하게 검사해야하는지 지정할 수 있습니까? 웹 사이트에서 가능한 결함을 정확히 어디에서 찾을 수 있습니까?
Icon

보안 패치 3 사이트를 업데이트했으며 세 사이트 모두이 두 파일보다 우선합니다. 이 두 파일을주의 깊게 확인하고 업데이트하십시오. 더 Gitches은 3 개 사이트에서 일어나지있다
라마 CHANDRAN M

10

EE 1.14.2.4

패치 726 번째 줄의 오타 : autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

패치에 2 개의 프론트 엔드 파일이 누락 된 것 같습니다

패치 :

app\design\adminhtml\default\default\template\oauth\authorize\form\login-simple.phtml

패치되지 않음 :

app\design\frontend\base\default\template\oauth\authorize\form\login-simple.phtml app\design\frontend\rwd\default\template\oauth\authorize\form\login-simple.phtml


또한 로컬 재정의를 확인하는 것을 잊지 마십시오 ...의 로컬 코드 풀 재정의를 수동으로 패치해야했습니다. app\design\adminhtml\default\default\template\sales\order\view\info.phtml


한 페이지 체크 아웃 문제에 대해서는 quasiobject 의 답변을 참조하십시오 . Magento의 응답을 기다리는 엔터프라이즈 지원 티켓이 생성되었습니다. 업데이트 된 패치를 기다리지 않으려면 app\design\frontend\enterprise\default\template\giftcardaccount\onepage\payment\scripts.phtml다음과 같이 form_key 요소를 포함하도록 "else" 구문 을 수정하십시오 .
if (($('p_method_' + methodName) && $('p_method_' + methodName).checked) || elements[i].name == 'form_key') { ...


CE 1.9.2.4

패치 694 번째 줄의 오타 : autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

TrueOrderEdit 확장 패치 할 필요가 ... 변화 echo $_groupNameecho $this->escapeHtml($_groupName)다음 파일을 :

app\design\adminhtml\default\default\template\orderedit\sales\order\view\edit.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\history.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\info.phtml


마지막으로이 핵심 템플릿 파일도 동일한 $ _groupName 업데이트로 패치해야합니다.

app\design\adminhtml\default\default\template\sales\order\view\edit.phtml


모든 1.X 버전

코드베이스에서 /downloader폴더 (또는 /downloader/template)를 삭제 한 경우 .sh 패치 파일을 수동으로 편집하고 마지막 섹션을 제거해야합니다.diff --git downloader/template/login.phtml downloader/template/login.phtml

잘못된 비밀 키 오류 와 관련하여 내 대답을 참조하십시오 : Magento 1.9 Invalid Secret Key. 페이지를 새로 고침하십시오


또한 1.7.0.2 패치의 오타도 발견했습니다. autocomplete = "new-pawwsord". 어떤 경우에도 코드 작업에 영향을 줍니까? 그렇다면 아마도 version2의 패치입니까?
Icon

본질적으로 오타는 FireFox 트릭을 담당하는 코드에 있습니다. "이것은 파이어 폭스가 자동으로 암호를 채우지 못하게하는 더미 숨겨진 필드입니다 ..."
Icon

@kmdsax 지원팀에서 문제를 해결하기위한 패치를 받았습니다. 세부 사항으로 답변을 업데이트했습니다.
quasiobject

수 당신은 내 오류 해결하는 데 도움이 PLS magento.stackexchange.com/q/204446/57334을
ZUS

9

우리 MageHost.pro는 젠토 1.9.1.1 패치 파일을 패치에 문제가 발견PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh

오류:

checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED

454-472 줄을 454-471로 바꾸어 고쳤습니다. PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh

이전 코드, 454-472 행 :

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 7f7b9d0..8a28da2 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,7 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {
-                return null;
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
             }
         }
         throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));

새 코드, 454-471 행 :

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 8618bca..d3aba19 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,6 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

다른 버전을 살펴 보셨습니까? 그렇다면 같은 문제가 있습니까?
Icon

1
@Icon 테스트 ce-1.6.0.0 ce-1.6.1.0 ce-1.6.2.0 ce-1.7.0.0 ce-1.7.0.1 ce-1.7.0.2 ce-1.8.0.0 ce-1.8.1.0 ce-1.9.0.0 ce -1.9.0.1 ce-1.9.1.0 ce-1.9.1.1 ce-1.9.2.0 ce-1.9.2.1 ce-1.9.2.2 ce-1.9.2.3 ce-1.9.2.4 ce-1.9.3.0 ce-1.9.3.1 ce -1.9.3.2 ce-1.9.3.3 ce-1.9.3.4. 모든 버전에는 이전 패치가 모두 설치되었습니다. 패치 오류가있는 유일한 것은 ce-1.9.1.1입니다.
Jeroen Vermeulen-MageHost

6

이 패치에는 하나의 양식 키만 추가 된 것으로 보입니다.

diff --git app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
index 8756f3f..1c5cf37 100644
--- app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
+++ app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
@@ -96,7 +96,10 @@ class Mage_Adminhtml_Block_Widget_Form_Container extends Mage_Adminhtml_Block_Wi

     public function getDeleteUrl()
     {
-        return $this->getUrl('*/*/delete', array($this->_objectId => $this->getRequest()->getParam($this->_objectId)));
+        return $this->getUrl('*/*/delete', array(
+            $this->_objectId => $this->getRequest()->getParam($this->_objectId),
+            Mage_Core_Model_Url::FORM_KEY => $this->getFormKey()
+        ));
     }

따라서 관리자 패널에서 위젯을 삭제하기 어려운 경우 블록에서 삭제 URL이 생성되고이 블록을 대체하지 않는지 확인하십시오.


magento.stackexchange.com/q/204446/57334를 어떻게 해결할 수 있습니까?
zus December

5

EE 1.11+에서 체크 아웃 할 수 없음

에서 app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml양식 키 유효성 검사 코드가 제거 된 그리고 여기에 전체 체크 아웃, 더 많은 정보를 나누기 : https://magento.stackexchange.com/a/193442/2380

해결 방법 (이 문제를 해결하기 위해 EE 1.11+ 용 V2가 릴리스 됨) : enterprise/defaultrwd/entreprise테마 모두에 대한 템플리트 파일을 롤백하십시오 .

패치와 버전의 차이점

편집 : 1.9.3.6이 릴리스 되었으므로이 정보는 더 이상 관련이 없습니다

현재 제기 된 주요 문제 중 하나는 1.9.3.5에 패치에서 3 개의 보안 패치가 누락 되었다는 것입니다. 따라서 패치 만 권장하고 아직 1.9.3.5로 업데이트하지 않는 것이 좋습니다.


1.9.3.5의 패치되지 않은 파일의 예와 같이 이에 대한 추가 정보가 있습니까?
Luke Rodgers

CE / 오픈 소스에서도 여전히 진행 중입니까? EE / Commerce의 경우, 1.14.3.5 다운로드가없고 1.14.3.6 만 있습니다.
7ochem

CE / 오픈 소스 다운로드 페이지에는 1.9.3.6 (9 월 14 일 이후로 표시) 만 있고 더 이상 1.9.3.5가 없습니다
7ochem

4
1.9.3.6가 어제 릴리스되었으므로이 정보는 더 이상 관련이 없습니다.
Ryan Hoerr

5

맞춤 템플릿으로 인해 상점에 고유한지 여부를 여전히 확인하려고합니다. 그러나 패치가 적용된 상태에서 깨졌으며 되돌릴 때 깨지지 않았습니다. 다른 사람들이 동일한 것을보고 할 수 있도록 게시하고 싶었습니다.

EE 1.14.2.0에서는 패치가 적용된 결제 정보 결제 단계를 지나서 진행할 수 없습니다. 새 패치를 적용하기 전에 최신 SUPEE-9767 v2를 사용하고 있습니다.

우리의 문제는 다음에서 제거하는 것으로 보입니다 || elements[i].name == 'form_key'.

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

enablePaymentMethods루프 에서 제거되었습니다 . 폼의 숨겨진 form_key 입력을 사용하지 않는 것으로 보이므로 제출시 컨트롤러에 전달되지 않습니다.

<input name="form_key" type="hidden" value="X" disabled="">

그런 다음 $this->_validateFormKey()실패하고 컨트롤러는 아무것도 반환하지 않습니다.


업데이트 1 (2017-09-18) : 금요일에 Magento 지원 티켓을 제출했으며 "아직 판매자가 아직보고하지 않았다"고 들었습니다. 백업을 보내는 대신 적용 가능한 패치를 적용하여 1.14.2.4 및 1.14.3.4를 새로 설치했을 때 복제하려고했습니다. 티켓을 복제하고 응답 할 수있었습니다. 새로운 답변을 기다리고 있습니다.

참고 : 시스템> 구성> 관리> 보안> 체크 아웃시 양식 키 유효성 검증 사용은 "예"여야합니다. "아니오"인 경우 문제가 표시되지 않습니다.


업데이트 2 (2017-09-18) : 1.14.3.6 에서 문제를 복제 할 수 없지만 위의 템플릿 파일을 확인할 때 || elements[i].name == 'form_key'여전히 존재합니다. 패치가 패치를 제거하지 않은 것으로 보입니다. 이 정보도 마 젠토 지원팀에 보냈습니다.


업데이트 3 (2017-09-20) : 1.14.0.0–1.14.3.4 의 문제를 해결하기위한 패치를 받았습니다 form_key. SUPEE-10348에 대한 지원을 요청하십시오.


1.14.2.4에서 동일한 문제
kmdsax

@kmdsax 감사합니다. 또한 티켓을 제출하고 지원팀으로부터 확인을 기다리는 중입니다.
quasiobject

1.9.2.4 CE 버전에서 동일한 오류를 복제하려고 했습니까?
Icon

1
@ 아이콘 나는하지 않았습니다. 나는 단일 상인을 위해 일하고 우리는 EE입니다. 그러나 나는 그것이 EE 기프트 카드 스크립트 블록이기 때문에 영향을받지 않을 것이라고 생각합니다. CE에는 존재하지 않아야합니다.
quasiobject

4

Magento Connect로 이동 한 후 페이지 오른쪽 상단의 "관리자로 돌아 가기"를 클릭 한 후 관리 대시 보드로 돌아 오면 오류 메시지가 표시됩니다

빨간색 오류 메시지 : "잘못된 비밀 키입니다. 페이지를 새로 고치십시오."

페이지를 새로 고치면 사라집니다.


업데이트 날짜 : 2017 년 9 월 15 일

Magento admin에 로그인하면 Dashboard라고 말하십시오. 대시 보드 패널에서 로그 아웃 하지 않고 동일한 브라우저에서 다른 브라우저 창을 열고 example.com/admin으로 이동하면 자동 로그인되어 정확히 동일한 메시지가 표시됩니다.

빨간색 오류 메시지 : "잘못된 비밀 키입니다. 페이지를 새로 고치십시오."

지금까지 내가 찾은 유일한 문제. 새로 고친 후 메시지가 사라지면서 확실한 문제인지 확실하지 않습니다.


어쩌면이 폐쇄 젠토 연결에서 온다 : magento.com/blog/magento-news/...
케빈 크리거

1
@KalvinKlien 나는 또한 1.7.0.2에 있습니다. 관리자와 Magneto Connect (/ downloader) 사이에서왔다 갔다 할 때 마다이 메시지가 나타납니다. 나는 단지 다른 사람들이 그것을 볼 수 있는지 알아 내려고 노력하고 있습니다. 큰 문제는 아닌 것 같습니다.
Icon

3
나는 1.9.2.1에서도 이것을보고있다. 누군가 이미 Magento 버그 추적기 에 버그 보고서를 제출했습니다 .
Michael Thessel

1
그것은 Mage_Adminhtml_Controller_Action :: preDispatch ()에서 오류입니다 : if ($_keyErrorMsg != '') { Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };이어야한다if (!$_isValidFormKey){ Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };
로라

1
흠, 이것은 지금까지 부분 솔루션입니다. 나는 아직도 때때로 오류를 표시하지 않도록이 문제를 가지고 다른 컨트롤러가있는 경우
Kalvin Klien가

4

Magento Support에 다음 문제에 대해 문의했습니다.

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

그들은 오늘 아침 나에게 대답하고 새로운 패치 PATCH_SUPEE-10348을 발표했다 .

Magento는이 파일에서 되돌리기를 수행하여 문제를 해결했습니다.

색인 : app / design / frontend / enterprise / default / template / giftcardaccount / onepage / payment / scripts.phtml
===================================================== =================
--- app / design / frontend / enterprise / default / template / giftcardaccount / onepage / payment / scripts.phtml
+++ app / design / frontend / enterprise / default / template / giftcardaccount / onepage / payment / scripts.phtml
@@ -35,6 +35,7 @@
             if (elements [i] .name == '지불 [방법]'
                 || elements [i] .name == '지불 [use_customer_balance]'
                 || elements [i] .name == '지불 [use_reward_points]'
+ || elements [i] .name == 'form_key'
             ) {
                 methodName = 요소 [i] .value;
                 if ((free && methodName == 'free') || (! free && methodName! = 'free')) {

1
파트너 포털에서이 패치를 사용할 수 있는지 확인할 수 있습니다.
Luke Rodgers

정보 주셔서 감사합니다. 그 정보를 제공하는 것을 잊지이었다
cghisi

3

이메일 템플릿, 사용자 정의 CSS 및 modman에 문제가 발생했습니다. 예를 들어 테마를 기반으로 rwd/default하고 사용자 정의가 skin/frontend/package/theme/css/email-inline.css있고 스킨 파일이 symlink를 통해 modman을 통해 포함 된 경우 SUPEE-10266을 적용한 후 CSS가 메일 템플리트에 추가되지 않습니다. 문제는에서 Mage_Core_Model_Email_Template_Abstract::_getCssFileContent일부 검사가 도입되었다는 것입니다.

                 '_theme' => $theme,
             )
         );
+        $filePath = realpath($filePath);
+        $positionSkinDirectory = strpos($filePath, Mage::getBaseDir('skin'));
+        $validator = new Zend_Validate_File_Extension('css');

-        if (is_readable($filePath)) {
+        if ($validator->isValid($filePath) && $positionSkinDirectory !== false && is_readable($filePath)) {
             return (string) file_get_contents($filePath);
         }

나는 app/code/local/Mage/Core/Model/Email/Template/Abstract.php당분간 재정의 로 더러운 핵으로 해결했습니다 . modman 디렉토리에서 CSS 파일을로드 할 수 있도록 확인을 약화시켜야했습니다.

$filePath = realpath($filePath);
$baseDirectory = Mage::getBaseDir();
$fullSkinDirectory = Mage::getBaseDir('skin');
$relativeSkinDirectory = substr($fullSkinDirectory, strlen($baseDirectory));
$positionSkinDirectory = strpos($filePath, $relativeSkinDirectory);
$validator = new Zend_Validate_File_Extension('css');
$noDirectoryTraversal = strpos($filename, '..') === false;

if ($validator->isValid($filePath) && $positionSkinDirectory !== false && $noDirectoryTraversal
    && is_readable($filePath)) {
    return (string) file_get_contents($filePath);
}

경로에 더 이상 완전한 스킨 디렉토리가 포함되어 있는지 확인하지 않고 경로에 문자열이 포함되어 있고 경로에 포함되어 /skin있지 않은 경우 에만 점검하여 ..디렉토리 탐색 공격을 방지해야합니다.


1
귀하의 답변이 더 완전 해지면서 답변을 삭제했습니다. 내가 사용한 해킹 은 원래 설정된 if (strpos($filename, '..') === false) { $positionSkinDirectory = 1; }행 을 확인하는 것이 었습니다 $positionSkinDirectory. 이것은 디렉토리 탐색을 피하는 데 도움이됩니다.
Peter O'Callaghan

이 경우 약화되면 다시 취약하게
되고이

@ PeterO'Callaghan 좋은 생각입니다! 방금 답변 코드에 수표를 추가했습니다.
사이먼

@Flyingmana 이것은 위험을 극적으로 낮추어야합니다.
Simon

2

autocomplete="new-pawwsord"오타의 영향을받는 전체 패치 목록은 다음과 같습니다 .

CE 1.7.0.0-1.7.0.2      PATCH_SUPEE-10266_CE_1.7.0.2_v1-2017-09-13-06-27-12.sh:664
CE 1.8.0.0-1.8.1.0      PATCH_SUPEE-10266_CE_1.8.1.0_v1-2017-09-13-06-28-08.sh:665
CE 1.9.0.0-1.9.0.1      PATCH_SUPEE-10266_CE_1.9.0.1_v1-2017-09-13-06-31-01.sh:665
CE 1.9.1.0              PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh:733
CE 1.9.1.1              PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh:734
CE 1.9.2.0-1.9.2.4      PATCH_SUPEE-10266_CE_1.9.2.4_v1-2017-09-13-06-37-37.sh:694
CE 1.9.3.0-1.9.3.2      PATCH_SUPEE-10266_CE_1.9.3.2_v1-2017-09-13-06-38-58.sh:694
CE 1.9.3.3-1.9.3.4      PATCH_SUPEE-10266_CE_1.9.3.4_v1-2017-09-13-06-39-58.sh:694
EE 1.12.0.0             PATCH_SUPEE-10266_EE_1.12.0.0_v1-2017-09-13-08-09-14.sh:696
EE 1.12.0.1-1.12.0.2    PATCH_SUPEE-10266_EE_1.12.0.2_v1-2017-09-13-08-06-57.sh:696
EE 1.13.0.0-1.13.1.0    PATCH_SUPEE-10266_EE_1.13.1.0_v1-2017-09-13-08-04-05.sh:696
EE 1.14.0.0-1.14.0.1    PATCH_SUPEE-10266_EE_1.14.0.1_v1-2017-09-13-08-01-04.sh:696
EE 1.14.1.0             PATCH_SUPEE-10266_EE_1.14.1.0_v1-2017-09-13-07-57-59.sh:764
EE 1.14.2.0             PATCH_SUPEE-10266_EE_1.14.2.0_v1-2017-09-13-07-07-14.sh:764
EE 1.14.2.1-1.14.2.4    PATCH_SUPEE-10266_EE_1.14.2.4_v1-2017-09-13-06-57-21.sh:726
EE 1.14.3.0-1.14.3.2    PATCH_SUPEE-10266_EE_1.14.3.2_v1-2017-09-13-06-53-35.sh:716
EE 1.14.3.3-1.14.3.4    PATCH_SUPEE-10266_EE_1.14.3.3_v1-2017-09-13-06-51-06.sh:716

0

Magento 1.8.1에서 다음 파일과 관련된 문제가 발생했습니다.

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/locale/en_US/Mage_Adminhtml.csv

패치가 포함되지 않은 최신 Magento 버전을 다운로드했습니다. 이 경우 마 젠토 1.9.3.4 .

'손상된'파일을 다운로드 파일로 바꾸면 문제가 해결되었습니다. 패치를 성공적으로 적용 할 수있었습니다.

그러나 조심하십시오 : 다시 패치 한 후 3 파일을 되돌리고 파일을 수동으로 편집하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.