SecurityPatch 9652: можливі проблеми після застосування SUPEE-9652


16

Magento випустила свій патч безпеки SUPEE-9652для Magento 1.x CE та EE

Мені просто хочеться знати, які можливі проблеми після застосування цього патчу безпеки та які нові зміни у цьому патчі безпеки?

Відповіді:


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

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

Найкраще я можу сказати, що значення $this->paramsзавжди буде префіксом -fу точці додавання валідації (передається в конструктор у точці, коли додається шлях повернення). Тому в момент передачі валідації, якщо я налаштував свою електронну пошту contact@me.com, значення, яке насправді перевіряється, - -fcontact@me.comце, здається, скоріше флюкс, ніж намір, що це трапляється, щоб перевірити як адресу електронної пошти. Якщо моя електронна адреса була префіксом. Насправді, якби не префікс там, str_replace і валідація не були б корисними, оскільки і обидва перевіряють, оскільки останній ніколи не призначається нічим після заміни, електронний лист все одно буде надісланий за допомогою попереднього цінність, яка, імовірно, все ще буде вразливою."example"@example.com , вона стане такою -f"example"@example.com, яка не підтверджується. До речі, str_replaceв цьому питанні здається абсолютно зайвим, враховуючи, що простір AFAIK може використовуватися лише в поєднанні з цитатами, а електронні листи з цитатами не підтверджують-f"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 були оновлені, і розгляд виглядає величезним


2
"Якщо у вас вимкнено налаштування електронної пошти", які ці параметри у патрі адміністратора? Тільки для того, щоб врятувати мене під дайвом через Sys-> Config, не випивши кави :)
Люк Роджерс

2
@LukeRodgers див. Детальну інформацію про цей блог: magento.com/security/news/…
Рафаель у Digital Pianism

1
"оновлення року коментарів щодо авторських прав (з 2016 по 2017 рік), тому майже всі файли Magento були оновлені", що є правдою @Raphael в Digital Pianism
Amit Bera

1
@Icon добре, якщо ви перевірите ім'я файлу патча, це вже v2 ^^, можливо, ще
не V3

1
Для запису це навряд чи вплине на законне використання та AFAIK (не бачивши поданого корисного навантаження), це запобіжить експлуатації у всіх випадках (хоча реальна причина цього здається або ненавмисним, або надзвичайно випадковим вибором). Просто він блокує всі електронні листи, де локальна частина міститься у цитатах, тобто "example"@example.comадреси форм, незалежно від того, чи є вони технічно небезпечними. Я був би дуже здивований, якщо є легальні магазини, що використовують цей тип електронної пошти, але хотів, щоб інформація була доступна на всякий випадок.
Пітер О'Каллаган

8

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


4

Патч безпеки 9652 впливає лише на такий файл:

/lib/Zend/Mail/Transport/Sendmail.php

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
хм, для тих, хто не має доступу до SSH. можливо, вам слід виправити локально і завантажити виправлений файл. ;)
інфабо

Для повного керівництва по латок без доступу SSH см ця відповідь тут: magento.stackexchange.com/a/63936/3326
7ochem
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.