SecurityPatch 9652: Возможные проблемы после применения SUPEE-9652


Magento выпустила исправление безопасности SUPEE-9652 для Magento 1.x CE и EE

Я просто хочу знать каковы возможные проблемы после применения этого исправления безопасности и каковы новые изменения в этом исправлении безопасности?

Author: Murtuza Zabuawala, 2017-02-08

4 answers

Это супер крошечный патч, вот разница:

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

Однако Питер О'Каллаган (единственный и неповторимый), похоже, обнаружил ошибку. Он мягко поделился со мной деталями и сказал, что я могу поделиться ими с вами здесь, так что вот оно:

Лучшее, что я могу сказать, значение $this->params всегда будет иметь префикс -f в момент добавления проверки (она передается в конструктор в момент добавления пути возврата). Поэтому в тот момент, когда это прошло для проверки, если я настроил свою электронную почту [email protected], значение, которое на самом деле проверяется, равно [email protected], кажется скорее случайностью, чем намерением, чтобы это произошло для проверки в качестве адреса электронной почты. Если бы мой адрес электронной почты был "example"@example.com, то он стал бы -f"example"@example.com, что не подтвердится. Кстати, str_replace кажется совершенно излишним в этом вопросе , учитывая, что пробел AFAIK может использоваться только в сочетании с кавычками, а электронные письма с кавычками не будут подтверждаться с помощью -f префикс. На самом деле , если бы не было префикса, то str_replace и validate не были бы полезны, потому что "foo bar"@example.com и "foobar"@example.com оба проверяют, поскольку последнее никогда ничему не присваивается после замены, электронное письмо все равно будет отправлено с использованием первого значения, которое, по-видимому, все еще будет уязвимым.

Две другие вещи, которые следует иметь в виду:

  • Версия исправления CE также содержит "EE_1.14.3.1", указанную в качестве версии. Это не влияет применяя, просто добавляет неправильную версию в app/etc/applied.patches.list, это кажется немного странным. (источник: https://twitter.com/JohnHughes1984/status/829050203139358720)
  • Если у вас отключены настройки электронной почты (см. Здесь: https://magento.com/security/news/new-zend-framework-1-security-vulnerability ), с этим нет никакой спешки, НО вам придется это сделать, потому что для любого нового исправления потребуется установить это (так как они идут друг на друга).

Сторона примечание

Соответствующий новый выпуск Magento CE 1.9.3.2 также включает обновление года комментариев об авторских правах (с 2016 по 2017 год), поэтому почти все файлы Magento были обновлены, и разница выглядит огромной

 25
Author: Raphael at Digital Pianism, 2017-02-10 17:45:44

Небольшой совет по обновлению; после копирования новой версии поверх существующей установки запустите git diff -w --stat=400 | grep -v " 2 +”, чтобы быстро просмотреть различия, которые содержат больше изменений, чем просто изменение уведомления об авторских правах.

 8
Author: Peter Jaap Blaakmeer, 2017-02-08 08:21:06

Исправление безопасности 9652 влияет только на следующий файл:

/lib/Zend/Mail/Transport/Sendmail.php
 4
Author: DarkCowboy, 2017-02-08 06:59:43

Для таких, как я, кто задается вопросом, что делать без доступа 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();
        }
 1
Author: Ralph, 2017-02-08 22:57:05