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


24

Magento는 M1에 대한 새로운 보안 패치와 M1 및 M2에 대한 업데이트를 발표했습니다.

이 릴리스에는 중요한 보안 수정 사항이 포함되어 있습니다. "모든 판매자는 가능한 빨리 업그레이드하는 것이 좋습니다."

이 패치를 업그레이드하거나 적용 할 때 어떤 문제를주의해야합니까?

SUPEE-11086

SUPEE-11086, Magento Commerce 1.14.4.1 및 오픈 소스 1.9.4.1에는 원격 코드 실행 (RCE), 사이트 간 스크립팅 (XSS), 사이트 간 요청 위조 (CSRF) 및 기타 취약점을 해결하는 데 도움이되는 여러 가지 향상된 보안 기능이 포함되어 있습니다.

마 젠토 2.3.1, 2.2.8 및 2.1.17 보안 업데이트

이 버전에는 여러 기능 및 보안 업데이트가 포함되어 있습니다. 위험 : 2.1.17, 2.2.8 및 2.3.1 이전의 Magento Commerce 및 Magento Open Source에 중요합니다.


Ryan Hoerr, Magento 2.3.1, 2.2.8 및 2.1.17 보안 업데이트
Amit Bera에

2
1.8.0 / 1.8.1 버전이없는 이유는 무엇입니까?
Jason

답변:


20

발견 된 가장 큰 문제 : Mage::log()제대로 작동하지 않습니다. 사용자 정의 로그 파일을 사용하여이 함수를 호출하면 (아직 존재하지 않는 경우) 추가 검증으로 인해 SUPEE-11086에 추가 된 로그가 파일에 기록되지 않습니다.


이 문제는 Magento CE 1.9.4.1에도 적용됩니다. magento.stackexchange.com/questions/268229/…
Aad Mathijssen

5
내 모든 로그가 완전히 중지되었습니다. 심지어 시스템 및 예외 로그. 이것에 대한 해결책이 있습니까?
Kalvin Klien

Mage :: log가 작성한 모든 로그 파일도 중지되었습니다. M1 EE 1.14.0.2
PromInc

유일한 수정은 Mage::log()
Aswerer

3
6 월 25 일 현재, 마 젠토는 SUPEE-11155, 마 젠토 커머스 1.14.4.2 및 마 젠토 오픈 소스 1.9.4.2를 발표했다 Mage::log().
Aad Mathijssen

11

중요 : 패치 이름에는 패치가 적용되는 최고 버전이 포함됩니다. 따라서 1.9.3.10에 대한 패치는 1.9.3.10, 1.9.3.9, ...에 적용되며 다른 패치에 적용됩니다. 다음 릴리스에서 이름을 개선하려고 노력할 것이며 API를 통해 버전 메타 데이터가 올바르게 표시되므로 https://github.com/steverobbins/magedownload-cli 를 사용할 수도 있습니다 .


5

다른 사람들처럼 로그 파일도 데이터 쓰기를 완전히 중단했습니다.

버그의 원인-데이터를 쓰지 않는 로그 파일

에서 app/Mage.php그들은이 변경을했다 :

         // Validate file extension before save. Allowed file extensions: log, txt, html, csv
         -        if (!self::helper('log')->isLogFileExtensionValid($file)) {
         +        $_allowedFileExtensions = explode(
         +            ',',
         +            (string) self::getConfig()->getNode('dev/log/allowedFileExtensions', Mage_Core_Model_Store::DEFAULT_CODE)
         +        );
         +        $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
         +        $logDir = self::getBaseDir('var') . DS . 'log';
         +        if (!$logValidator->isValid($logDir . DS . $file)) {
                 return;
             }

승인 된 파일 확장자의 쉼표로 구분 된 목록을 구성에서 찾고 있습니다. 그러나 그들은 구성 에이 목록을 추가하지 않았습니다-우리가 직접 구성 할 수있는 마법사 관리자의 옵션조차 없습니다.

버그 해결-데이터를 쓰지 않는 로그 파일

이 문제를 해결하려면 core_config_data테이블 의 데이터베이스에 입력 하십시오.

INSERT INTO core_config_data VALUES ( NULL, 'default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv' );

개체 캐시도 지우면 로그 파일에 데이터 쓰기가 다시 한 번 표시됩니다.

ls -lrt var/log/ | tail


참고로이 문제는 모든 보안 패치가 적용된 EE 1.14.2.0에서 발생했습니다.

이 문제에 대해 Magento Support에서 티켓을 열었지만 아직 기술자로부터 응답을받지 못했습니다. 나는 대기열에 있습니다.


이 버그에 대해 정말로 혼란스러워하는 것은 Magento에 이미 2017 년 말 SUPEE-10415를 통해 추가 한 로그 파일 확장자를 검증하는 방법이 있다는 것입니다.

app/code/core/Mage/Log/Helper/Data.php

    /**
     * Checking if file extensions is allowed. If passed then return true.
     *
     * @param $file
     * @return bool
     */
    public function isLogFileExtensionValid($file)
    {
        $result = false;
        $validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
        if ($validatedFileExtension && in_array($validatedFileExtension, $this->_allowedFileExtensions)) {
            $result = true;
        }

        return $result;
    }

그들은 불완전한 재발 명 로그 휠을 시도하는 대신 그 논리를 재사용하지 않은 이유는 무엇입니까?


3
이것은 정확하지 않습니다. app / etc / config.xml에서 allowedFileExtensions가 구성으로 추가되었습니다. 데이터베이스에 없으면 이것이 사용됩니다. 실제 문제는 새로운 유효성 검사 기능이 먼저 파일이 이미 존재하는지 확인하려고 시도하는 것입니다.
René Schep

@ RenéSchep을 지적 해 주셔서 감사합니다. 지금 패치가 변경되었음을 알 수 있습니다. 더 깊이 살펴보면 config.xml 파일은 나머지 코드베이스와 다른 저장소에 있습니다. 이러한 이유로이 패치에 대한 변경 사항을 적용했을 때 구성 파일이이 변경 사항으로 업데이트되지 않았습니다. 존재하지 않는 파일에 쓰지 않는 것은 개인적으로 서버에서 작동한다는 것을 알게되었습니다. 이것이 파일 시스템 자체의 폴더 권한 문제인지 궁금합니다. 그러나 그 코드를 너무 깊이 들여다 보지 않았습니다.
PromInc

내가 테스트 한 것은 파일이 이미 존재하면 작동한다는 것입니다. isValid가 수행하는 첫 번째 확인은 파일을 읽을 수 있는지 확인하는 것입니다. 파일이 존재하지 않으면 파일을 작성하려고 시도하지 않고 false가 리턴됩니다.
René Schep

@ RenéSchep 어떻게 수정합니까? 마 젠토 지원은 a * h의 고통입니다. 답장이 매우 느립니다.
Adarsh ​​Khatri

@ AdarshKhatri Magento가 파일을 쓰기 전에 파일을 만들어야합니다. /path/to/magento/install/html/var/log/newlogfile.log
PromInc

4

Mage::log()로그 파일이 처음에 존재하지 않으면 로그 파일에 아무것도 쓰지 않습니다. 호출 할 때 찾을 수없는 오류 가 발생하는 isValid기능 때문 입니다. 로그 파일이 실제로 생성 된 후 try / catch로 이동 한 다음 유효성 검사가 실패하면 파일을 제거하여 일시적 으로이 문제를 해결했습니다 .Zend_Validate_File_ExtensionZend_Loader::isReadable($value)isValid

<?php
final class Mage
{
    ...
    public static function log($message, $level = null, $file = '', $forceLog = false)
    {
        ...

        try {
            if (!isset($loggers[$file])) {
                $logFile = $logDir . DS . $file;

                if (!is_dir($logDir)) {
                    mkdir($logDir);
                    chmod($logDir, 0750);
                }

                if (!file_exists($logFile)) {
                    file_put_contents($logFile, '');
                    chmod($logFile, 0640);
                }

                if (!$logValidator->isValid($logFile)) {
                    unlink($logFile);

                    return;
                }

        ...
    }
}

우리가 좀 더 견실 한 것을 가질 때까지 이것은 확실히 임시 해결책입니다.


3

패치 1.9.3.10의 가능한 문제

checking file app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED

패치에는 다음이 있습니다.

diff --git app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
index 8d3c526c280..fde2ef0d45d 100644
--- app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
+++ app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
@@ -57,7 +57,7 @@ class Mage_Adminhtml_Block_Customer_Group_Edit extends Mage_Adminhtml_Block_Widg
                 'form_key' => Mage::getSingleton('core/session')->getFormKey()
             ));
         } else {
-            parent::getDeleteUrl();
+            return parent::getDeleteUrl();
         }
     }

그러나 1.9.3.10 (마법사 LTS를 통해)의 코드를 보면 문제의 코드가 표시되지 않습니다.

https://github.com/OpenMage/magento-lts/blob/1.9.3.x/app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php

그러나 1.9.4에는 존재합니다.

https://github.com/OpenMage/magento-lts/blob/1.9.4.x/app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php

가능한 이유는 누락 된 패치가 이전에 적용되지 않았기 때문입니다.


4
SUPEE-10975 패치가 없습니다.
Richard Feraro

내 패치 세트에 따르면 이미 적용되었습니다 : 2018-12-29 23:16:30 UTC | SUPEE-10975_CE_v1.9.3.10 | CE_1.9.3.10 | v1 | 91395a467666d7381ff4f9629f52a1d406eee65a | 목 11 월 8 일 13:45:47 2018 +0200 | ce-1.9.3.10-dev
ProxiBlue

최신 패치의 파일 이름은 PATCH_SUPEE-10975_CE_v1.9.3.10_v1-2018-11-27-09-14-43.sh이지만 2018 년 11 월 8 일에 발행 된 것 같습니다.
Richard Feraro

1
PATCH_SUPEE-10975를 되돌리고 다시 적용한 다음 최신으로 다시 적용했습니다. 모든 작업이 완료되었습니다
ProxiBlue

SUPEE-10975의 버그로 고객 그룹을 삭제할 수 없습니다. 수동으로 수정 한 것 같습니다.이 새로운 패치가 실패하여이 문제도 해결됩니다.
르네 Schep

3

PATCH_SUPEE-11086_CE_1.9.1.0_v1-2019-03-26-03-03-13.sh를 사용하여 Magento 1.9.0.1에 패치를 설치하려고하면이 오류가 발생했습니다.

Hunk #1 FAILED at 141.
1 out of 1 hunk FAILED

'app / etc / config.xml'에서 다음 코드를 제거한 다음 패치를 다시 실행하여이 문제를 해결했습니다.

<dev>
    <template>
        <allow_symlink>0</allow_symlink>
    </template>
</dev>

3

또한 M1 패치의 이름 지정에 대해 약간 혼란스러워합니다.

이전 패치의 경우 이름이 같 SUPEE-10975 for CE 1.9.3.4-1.9.3.10거나 SUPEE-10888 for CE 1.9.2.0-1.9.2.4 (0.07 MB)지금은 하나의 버전 만 지정 PATCH_SUPEE-11086_CE_1.9.3.10_v1.sh합니다.

현재 패치가 부 릴리스의 모든 릴리스를 해결합니까 아니면 마지막 릴리스 만 해결합니까?

1.9.3.1 상점에서 테스트를했는데 모든 것이 통과되었지만 다른 릴리스에서 정확한지 확실하지 않습니까?


라이언 감사합니다! 그것은 @jason의 질문에 대한 답변입니다. "왜 1.8.0 / 1.8.1 버전이 없는지 아십니까?" 이를 위해 그는 1.7.0.2 패치를 사용해야합니다. 이전에 여러 부 릴리스를 해결하는 패치가 있다는 것을 몰랐습니다.
세바스찬

2
정말 @RyanHoerr? 다른 스레드 magento.stackexchange.com/questions/267576/… 에서 추정되므로 반대가 아닙니다 . 이전 이름 ​​지정 스타일을 추측하면 PATCH_SUPEE-11086_CE_1.7.0.2_v1-2019-03-26-03-02-36.sh를 1.7.0.0에서 1.7.0.2로 적용 할 수있는 것 같습니다. 이 경우 각 패치의 버전 번호가 마지막이 됩니다. Magento의 누구든지 새로운 이름 지정 스타일 의 논리가 무엇인지 확인할 수 있습니까? 미리 Thx ..
Antoine Kociuba

2
@AntoineKociuba와 함께 갈 것입니다. 2 개의 다른 1.8.1 상점에서 1.7.0.2 패치로 4 번 실패합니다. /etc/config.xml Hunk # 1 144 실패-app / locale / en_US / Mage_Widget.csv Hunk # 1 실패 6-lib / Varien / Filter / Template.php Hunk # 2 실패 254에서 1.9.1.0 실행 부드럽게. 1.9.3.1 저장소와 동일 : 1.9.2.4 패치는 작동하지만 1.9.3.10은 작동합니다.
Sebastian

3
@RyanHoerr 이것은 올바르지 않습니다. 이름에는 패치가 적용되는 최신 버전이 포함됩니다. 따라서 1.9.3.10에 대한 패치는 1.9.3.10, 1.9.3.9, ...에 적용되며 다른 패치에 적용됩니다. 우리는 다음 릴리스에서 이름을 개선하려고 노력할 것이며 API를 통해 버전 메타 데이터를 올바르게 볼 수 있으므로 github.com/steverobbins/magedownload-cli 를 사용할 수도 있습니다 .
Piotr Kaminski

내 나쁜 정보를 제거했습니다. 수정 해 주셔서 감사합니다.
Ryan Hoerr

2

Magento 1.9에서 로깅이 중단되었습니다. SUPEE-11086 패치에서 로깅을 수정하려면 다음을 수행하십시오.

앱 /Mage.php에서 :

-        $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
         $logDir = self::getBaseDir('var') . DS . 'log';
-        if (!$logValidator->isValid($logDir . DS . $file)) {
+        $validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
+        if (!$validatedFileExtension || !in_array($validatedFileExtension, $_allowedFileExtensions)) {

자원 : https://gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8f

이게 도움이 되길 바란다!


1

M1 용 패치의 모든 새 PHP 파일에는 처리되지 않은 템플릿 변수가 있습니다.

<?php
/**
 * {license_notice}
 *
 * @copyright   {copyright}
 * @license     {license_link}
 */

문제는 아니지만 부정확 해 보입니다. SUPEE-10975 후에도 같은 느낌이 들었습니다.


1

로그 파일이 더 이상 생성되지 않고 로그 파일이 이미 존재하는 경우에만 기록되는 문제를 발견했습니다. 이것은 선으로 인한 것으로 보입니다.

if (!$logValidator->isValid($logDir . DS . $file)) {

app / Mage.php에서. 나는 오래된 논리를 사용하여 이것을 고쳤다. 따라서 위의 줄을 다음으로 바꿉니다.

if (!self::helper('log')->isLogFileExtensionValid($file)) {

0

파일 app / code / core / Mage / Adminhtml / Block / Customer / Group / Edit.php 점검 57 번 덩어리 실패 1 번 덩어리 실패 1 번 실패

패치 10975에서이 시점에서 오류가 발생했습니다. 반환 문이 없습니다. 패치 10975를 적용한 후이 버그를 수정했거나 변경 사항을 무시했을 수 있습니다. 버그는 11086에서 수정되었습니다.이 코드 줄을 이미 조정 / 무시한 경우 새 패치를 적용 할 때 설명한 오류가 발생합니다. 이미 버그를 직접 수정했다면 패치 파일에서 블록을 제거하고 패치를 다시 실행하십시오.


1
SUPEE-11086이 작동하도록하려면 "공식적인"패치 SUPEE-11043을 되돌려 야했습니다
Jeroen Vermeulen-MageHost

0

SUPEE-11086 사용 | 위의 Ryan Hoerr가 제안한 CE_1.9.1.0.

SUPEE-11086 적용 | CE_1.9.1.0 | v1 | 3f120e6a795eed55267bd2b9164b3984913ddfc9 | 금 3 월 22 일 18:40:11 2019 +0000 | 4f3f369e723fe31212cb5be9adda113f891d7f62..HEAD

CE_1.9.2.1로

각 파일에 실패합니다.

패치를 다른 저장소에 성공적으로 적용했습니다.

핵심 코드는 그대로 유지됩니다.

적용된 패치 목록

SUPEE-6788
SUPEE-7405-CE-1-9-2-2
SUPEE-7405 
SUPEE-8788 
SUPEE-9652 
SUPEE-8967 
PATCH_SUPEE-9767_CE_1.9.3.0_v2
SUPEE-10266-CE-1.9.2.4
SUPEE-10415-ce-1.9.2.1
SUPEE-10570_CE_v1.9.2.2
SUPEE-10570_CE_v1.9.2.2
SUPEE-10570_CE_v1.9.2.2
SUPEE-10752_CE_v1.9.2.4
SUPEE-10888_CE_v1.9.2.4
SUPEE-10975_CE_v1.9.3.3

설명을 해주신 @AntoineKociuba에게 감사드립니다. 이전 패치가 모두 올바른지 확인했지만 1.9.2.1 설치에 대해 아래에 설명 된대로 PATCH_SUPEE-11086_CE_1.9.2.4_v1에 올바른 패치를 적용해도 여전히 하나의 덩어리에 오류가 발생합니다. 수동 패치를 제안 하시겠습니까?
Bevan Holman

어느 덩어리에 실패하고 있습니까?
René Schep

이 문제가 해결되었으므로 새로운 리포지토리 복제본을 얻어야했습니다. 감사합니다 René
Bevan Holman

0

M1.9.3.7 패치 PATCH_SUPEE-11086_CE_1.9.3.10_v1.sh 관련 문제

checking file app/Mage.php
checking file app/code/core/Mage/Admin/Model/Session.php
checking file app/code/core/Mage/Adminhtml/Block/Api/Buttons.php
checking file app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit.php
checking file app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED
checking file app/code/core/Mage/Adminhtml/Block/Permissions/Buttons.php
checking file app/code/core/Mage/Adminhtml/Block/System/Design/Edit.php
checking file app/code/core/Mage/Adminhtml/Block/System/Store/Edit.php
checking file app/code/core/Mage/Adminhtml/Controller/Action.php
checking file app/code/core/Mage/Adminhtml/Helper/Data.php
checking file app/code/core/Mage/Adminhtml/Model/Email/PathValidator.php
checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
Hunk #1 FAILED at 69.
1 out of 1 hunk FAILED

app / code / core / Mage / Adminhtml / Block / Customer / Group / Edit.php로 보는 데 실패했습니다. SUPEE-11086이 아직 완료하지 않았다고 가정하는 패치 SUPEE-11043을 적용했다고 가정합니다.
René Schep

0

SUPEE-11086Admin Dashboard Charts Patch를 포함하여 모든 것을 포함하여 새로 다운로드하여 완전히 패치 된 1.9.1.1 버전에 적용하려고 할 때 문제가 있음을 확인할 수 있습니다 .MPERF-10509-CE-2019-03-13-06-31-24.diff

다음 파일에서 패치가 실패합니다.

app/code/core/Mage/Adminhtml/Block/Api/Buttons.php
app/code/core/Mage/Adminhtml/Block/Permissions/Buttons.php
app/code/core/Mage/Api2/Block/Adminhtml/Roles/Buttons.php

이 파일들은 v1.9.1.1 다운로드 초기 커밋에서 변경된 사항이 없습니다. 1.9.2.4 설치에서 파일을 복사하고 SUPEE-11086을 적용한 다음 v1.9.4.1 소스와 비교하여 파일이 일치하는지 확인하십시오.

Magento v1.9.1.1 조금 문제가있는 아이처럼 보입니다 ...


방금 1.9.2.4 패치와 1.9.1.0 패치를 비교했습니다. 그리고이 패치들 사이의 차이점은 언급 한 3 파일입니다. 따라서 1.9.1.1에서 1.9.1.0 패치를 사용해야하는 것처럼 보입니다.
René Schep

0

SUPEE-11086Admin Dashboard Charts Patch를 포함하여 모든 것을 포함하여 새로 다운로드하여 완전히 패치 된 1.9.3.0 버전에 적용하려고 할 때 문제가 있음을 확인할 수 있습니다 -MPERF-10509-CE-2019-03-13-06-31-24.diff

아래 노드가 없으므로 app / config.xml에서 패치가 실패합니다. SUPEE-11086을 실행하기 전에 노드를 추가하십시오. 아무런 문제가 없습니다.

<config>
    </default>
        <dev>
            <template>
                <allow_symlink>0</allow_symlink>
            </template>
        </dev>
    </default>
</config>

0

모델과 관련된 새로운 문제를 발견했습니다 Mage_Eav_Model_Attribute_Data_File

고객 엔티티에 파일 업로드 속성을 추가했습니다. 이러한 속성은 필요하지 않으며 새 파일을 업로드하지 않고 파일을 삭제하려는 경우 속성 값이 새 방법을 통해 확인되지 않기 때문에 삭제가 작동하지 않습니다.setAttributeValidationAsPassed()

내가 한 빠른 수정은 방법에 있습니다. validateValue($value)

if (!$attribute->getIsRequired() && !$toUpload) {
    $attribute->setAttributeValidationAsPassed(); // this new line is added 
    return true;
}

이 문제는 이후 모든 Magento 1.x 릴리스에 존재하는 것으로 보입니다. SUPEE-11086


0

마 젠토 1.9.3.1

패치 PATCH_SUPEE-11086_CE_1.9.3.10_v1.sh를 사용하여 CE 1.9.3.1을 패치하려고 할 때 문제가 발생했습니다.

checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
Hunk #1 FAILED at 69.
1 out of 1 hunk FAILED
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.