Magento는 Magento 1.x CE 및 EESUPEE-9652
용 보안 패치를 발표했습니다.
난 그냥 알고 싶어 이 보안 패치를 적용한 후 가능한 문제가 무엇이며,이 보안 패치의 새로운 변화는 무엇인가?
Magento는 Magento 1.x CE 및 EESUPEE-9652
용 보안 패치를 발표했습니다.
난 그냥 알고 싶어 이 보안 패치를 적용한 후 가능한 문제가 무엇이며,이 보안 패치의 새로운 변화는 무엇인가?
답변:
그것은 아주 작은 패치입니다, 여기에 차이점이 있습니다 :
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
후자는 교체 후 아무것도 할당되지 않기 때문에 전자 메일은 여전히 이전 값을 사용하여 전송되며 이는 여전히 취약합니다.
명심해야 할 두 가지 사항 :
app/etc/applied.patches.list
하면 약간 이상하게 느껴집니다. (출처 : https://twitter.com/JohnHughes1984/status/829050203139358720 )Magento CE 1.9.3.2의 새 릴리스에는 2016 년부터 2017 년까지의 저작권 의견 연도 업데이트도 포함되어 있으므로 거의 모든 Magento 파일이 업데이트되었으며 diff는 엄청납니다.
"example"@example.com
기술적으로 위험한지 여부에 관계없이 로컬 부분이 인용되어있는 모든 전자 메일 (예 : 양식 주소)을 차단합니다 . 이 유형의 전자 메일을 사용하는 합법적 인 상점이 있지만 정보를 사례별로 사용할 수 있으면 매우 놀랍습니다.
업그레이드를위한 작은 팁; 기존 설치 위에 새 버전을 복사 한 후에 git diff -w --stat=400 | grep -v " 2 +”
는 저작권 표시 변경보다 더 많은 변경 사항이 포함 된 diff를 빠르게 볼 수 있습니다.
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();
}