SecurityPatch 9652 : SUPEE-9652 적용 후 가능한 문제


16

Magento는 Magento 1.x CE 및 EESUPEE-9652 용 보안 패치를 발표했습니다.

난 그냥 알고 싶어 이 보안 패치를 적용한 후 가능한 문제가 무엇이며,이 보안 패치의 새로운 변화는 무엇인가?

답변:


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

그러나 Peter O'Callaghan (단 하나 뿐인)은 버그를 발견 한 것 같습니다. 그는 부드럽게 세부 사항을 나와 공유했으며 여기에 나와 공유 할 수 있다고 말했습니다. .

유효성 검사가 추가 된 시점에서 $this->params항상 값 앞에 접두사가 붙 -f습니다 (반환 경로가 추가 된 시점에서 생성자에 전달됨). 따라서 유효성 검사에 전달 된 시점에서 전자 메일을 구성한 경우 contact@me.com실제로 유효성을 검사하는 값은입니다 -fcontact@me.com. 이는 전자 메일 주소로 유효성을 검사하려는 의도보다 더 우연한 것 같습니다. 내 이메일 주소가 있었다면 "example"@example.com그래도이 될 것 접두사. 사실은 접두사가있는 아니었다 경우 않는 str_replace 및 유효성 검사가 유용하지 않을 것 때문에 하고 -f"example"@example.com 유효하지 않습니다. 덧붙여이 str_replace공간 만 따옴표와 함께 사용할 수 있습니다 AFAIK 주어진이 문제에 완전히 중복 것, 그리고하지 않습니다 유효성을 검증와 따옴표 이메일-f"foo bar"@example.com"foobar"@example.com 후자는 교체 후 아무것도 할당되지 않기 때문에 전자 메일은 여전히 ​​이전 값을 사용하여 전송되며 이는 여전히 취약합니다.

명심해야 할 두 가지 사항 :

사이드 노트

Magento CE 1.9.3.2의 새 릴리스에는 2016 년부터 2017 년까지의 저작권 의견 연도 업데이트도 포함되어 있으므로 거의 모든 Magento 파일이 업데이트되었으며 diff는 엄청납니다.


2
"이메일 설정이 비활성화되어있는 한"관리자 패널 메이트의 설정은 무엇입니까? 그냥 내 커피 :) 있었다하지 않고 나에게 Sys-> 구성을 통해 다이빙을 저장합니다
누가 복음 로저스을

2
@LukeRodgers는 자세한 내용은이 블로그 게시물을 참조하십시오 : magento.com/security/news/…
Digital Pianism의 Raphael

1
"저작권 주석 연도 업데이트 (2016 년부터 2017 년까지) 거의 모든 Magento 파일이 업데이트되었습니다."디지털 피아니즘의 @Raphael
Amit Bera

1
@Icon 잘 패치 파일 이름을 확인하면 그것은 이미 v2입니다 ^^ 그래서 아직 v3는 아직 ETA가 아닙니다
Raphael at Digital Pianism

1
레코드의 경우 합법적 인 사용 및 AFAIK에 영향을 미치지 않을 가능성이 크므로 (제출 된 페이로드를 보지 않고) 모든 경우에 악용되지 않을 것입니다 (실제 이유는 의도하지 않았거나 매우 이상한 선택이지만). "example"@example.com기술적으로 위험한지 여부에 관계없이 로컬 부분이 인용되어있는 모든 전자 메일 (예 : 양식 주소)을 차단합니다 . 이 유형의 전자 메일을 사용하는 합법적 인 상점이 있지만 정보를 사례별로 사용할 수 있으면 매우 놀랍습니다.
피터 오캘 라간

8

업그레이드를위한 작은 팁; 기존 설치 위에 새 버전을 복사 한 후에 git diff -w --stat=400 | grep -v " 2 +”는 저작권 표시 변경보다 더 많은 변경 사항이 포함 된 diff를 빠르게 볼 수 있습니다.



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.