SecurityPatch 9652: SUPEE-9652 uygulandıktan sonra olası sorunlar


16

Magento, Magento 1.x CE ve EESUPEE-9652 için güvenlik yamasını yayınladı

Bu güvenlik düzeltme ekini uyguladıktan sonra olası sorunların neler olduğunu ve bu güvenlik düzeltme ekinde yeni değişiklikler neler olduğunu bilmek istiyorum.

Yanıtlar:


25

Süper küçük bir yama, işte fark:

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

Ancak, Peter O'Callaghan (tek ve tek) bir hata bulmuş gibi görünüyor. Detayları nazikçe benimle paylaştı ve burada sizinle paylaşabileceğimi söyledi, işte burada :

En iyi değeri $this->paramsher zaman -fdoğrulama eklenmiştir noktada önek olacak söyleyebilir (bu dönüş yolu eklendi noktada kurucu geçirilir). Bu nedenle, doğrulamaya geçtiği noktada, e-postamı yapılandırdıysam contact@me.com, gerçekte doğrulanmakta olan değer -fcontact@me.com, bunun bir e-posta adresi olarak doğrulanma niyetinden çok bir şans gibi görünüyor. E-posta adresim "example"@example.comolsa, bu -f"example"@example.comdoğrulanmayacaktı. Bu arada, str_replaceAFAIK'in bir alanın yalnızca tırnaklarla birlikte kullanılabileceği ve tırnaklı e-postaların-fönek. Aslında bu, çünkü önek, str_replace ve validate yararlı olmayacağı orada olmak için değildi "foo bar"@example.comve "foobar"@example.comikincisi beri değişiminden sonra herhangi bir şey atanan asla, hem validate, e-posta hala eski kullanılarak gönderilecek muhtemelen savunmasız olabilecek bir değerdir.

Akılda tutulması gereken iki şey:

Kenar notu

Magento CE 1.9.3.2'nin ilgili yeni sürümü, telif hakkı yorumu yıl güncellemesini de (2016'dan 2017'ye kadar) içeriyor, bu nedenle Magento'nun neredeyse tüm dosyaları güncellendi ve fark çok büyük görünüyor


2
"E-posta ayarlarınızı devre dışı bıraktığınız sürece" yönetici panelindeki ayarlar hangileridir? Sadece benim kahve olmadan Sys-> Config ile dalış kurtarmak için :)
Luke Rodgers

2
@LukeRodgers ayrıntılar için bu blog gönderisine bakın: magento.com/security/news/…
Raphael at Digital

1
"telif hakkı yorumu yılı güncellemesi (2016'dan 2017'ye kadar) bu yüzden Magento'nun hemen hemen her dosyası güncellendi", bu gerçek @Raphael Digital Pianism
Amit Bera

1
@Icon iyi yama dosyası adını kontrol ederseniz zaten v2 ^^ yani muhtemelen bir v3 henüz ETA yok
Raphael at Digital Pianism

1
Kayıt için, herhangi bir meşru kullanımı ve AFAIK'i (gönderilen yükü görmeden) etkilemesi son derece olası değildir, tüm durumlarda sömürüyü önleyecektir (bunun gerçek nedeni kasıtsız veya son derece garip bir seçim gibi görünmesine rağmen). Sadece, "example"@example.comteknik olarak tehlikeli olup olmadıklarına bakılmaksızın , yerel bölümün tırnak içine alındığı tüm e-postaları engeller . Bu tür e-postaları kullanan yasal mağazalar varsa, çok şaşırırdım, ancak bilgilerin mevcut olmasını istedim.
Peter O'Callaghan

8

Yükseltme için küçük ipucu; yeni sürümü mevcut yüklemeniz üzerine kopyaladıktan sonra, git diff -w --stat=400 | grep -v " 2 +”yalnızca telif hakkı bildirimi değişikliğinden daha fazla değişiklik içeren farkları hızlı bir şekilde görmek için çalıştırın .


4

Güvenlik Düzeltme Eki 9652 yalnızca aşağıdaki dosyayı etkiler:

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

1

Benim gibi SSH erişimi olmadan ne yapacağını merak edenler için: edit file /lib/Zend/Mail/Transport/Sendmail.php

122. satırdan itibaren, şunu değiştirin:

        set_error_handler(array($this, '_handleMailErrors'));
        $result = mail(
            $this->recipients,
            $this->_mail->getSubject(),
            $this->body,
            $this->header,
            $this->parameters);
        restore_error_handler();

Bununla:

        // 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 erişimi olmayanlar için. belki yerel olarak yama yapmalı ve yamalı dosyayı yüklemelisiniz. ;)
infabo

SSH erişimi olmadan yama ile ilgili tam rehberlik için şu yanıta bakın: magento.stackexchange.com/a/63936/3326
7ochem
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.