SecurityPatch 9652: Kemungkinan masalah setelah SUPEE-9652 diterapkan

16

Magento telah merilis tambalan keamanannya SUPEE-9652, untuk Magento 1.x CE dan EE

Saya hanya ingin tahu apa saja masalah yang mungkin terjadi setelah menerapkan tambalan keamanan ini dan Apa saja perubahan baru dalam tambalan keamanan ini?

Murtuza Zabuawala
sumber

Jawaban:

25

Ini adalah patch yang sangat kecil, inilah perbedaannya:

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

Namun, Peter O'Callaghan (satu-satunya) tampaknya telah menemukan bug. Dia dengan lembut membagikan detailnya dengan saya dan berkata saya bisa membagikannya kepada Anda di sini jadi ini dia :

Terbaik yang saya tahu nilai $this->paramsakan selalu diawali -fpada titik validasi telah ditambahkan (itu diteruskan ke konstruktor pada titik jalur pengembalian ditambahkan). Oleh karena itu pada titik itu diteruskan ke validasi, jika saya telah mengkonfigurasi email saya [email protected], nilai yang sebenarnya divalidasi adalah [email protected], tampaknya lebih merupakan kebetulan daripada niat bahwa ini terjadi untuk memvalidasi sebagai alamat email. Jika alamat e-mail saya adalah "example"@example.com, ini akan menjadi -f"example"@example.com, yang tidak akan divalidasi. Kebetulan, hal itu str_replacesepenuhnya berlebihan dalam hal ini mengingat bahwa AFAIK a space hanya dapat digunakan bersama dengan kutipan, dan email dengan kutipan tidak akan divalidasi dengan-fawalan. Bahkan jika bukan karena awalan berada di sana, str_replace dan memvalidasi tidak akan berguna karena "foo bar"@example.comdan "foobar"@example.comkeduanya memvalidasi, karena yang terakhir tidak pernah ditugaskan untuk apa pun setelah penggantian, e-mail akan tetap dikirim menggunakan yang sebelumnya nilai, yang mungkin masih rentan.

Dua hal lain yang perlu diingat:

Catatan samping

Rilis baru yang sesuai dari Magento CE 1.9.3.2 juga mencakup pembaruan tahun komentar hak cipta (dari 2016 hingga 2017) sehingga hampir setiap file Magento telah diperbarui dan perbedaannya terlihat besar

Raphael di Digital Pianism
sumber
2
"Selama Anda menonaktifkan pengaturan email", pengaturan apa yang ada pada pasangan panel admin? Hanya untuk menyelamatkan saya menyelam melalui Sys-> Config tanpa minum kopi saya :)
Luke Rodgers
2
@LukeRodgers merujuk ke posting blog ini untuk perincian: magento.com/security/news/…
Raphael di Digital Pianism
1
"pembaruan tahun komentar hak cipta (dari 2016 hingga 2017) sehingga hampir setiap file Magento telah diperbarui" itu adalah kebenaran @Raphael di Digital Pianism
Amit Bera
1
@Icon baik jika Anda memeriksa nama file tambalan itu sudah v2 ^^ jadi mungkin v3 belum ETA
Raphael di Digital Pianism
1
Sebagai catatan, itu sangat tidak mungkin untuk mempengaruhi penggunaan yang sah dan AFAIK (tanpa melihat muatan yang diajukan), itu akan mencegah eksploitasi dalam semua kasus (meskipun alasan sebenarnya untuk ini tampaknya entah tidak disengaja, atau pilihan yang sangat aneh). Hanya saja ia memblokir semua e-mail di mana bagian lokal dilampirkan dengan kutipan, yaitu "example"@example.comalamat formulir, terlepas dari apakah mereka secara teknis berbahaya. Saya akan sangat terkejut jika ada toko yang sah menggunakan jenis email ini, tetapi menginginkan informasi yang tersedia dalam kasus ini.
Peter O'Callaghan
8

Sedikit tip untuk peningkatan; setelah menyalin versi baru dari pemasangan yang ada, jalankan git diff -w --stat=400 | grep -v " 2 +”untuk melihat dengan cepat perbedaan yang mengandung lebih banyak perubahan daripada sekadar perubahan pemberitahuan hak cipta.

Peter Jaap Blaakmeer
sumber
4

Patch Keamanan 9652 hanya mempengaruhi file berikut:

/lib/Zend/Mail/Transport/Sendmail.php
DarkCowboy
sumber
1

Bagi mereka seperti saya yang bertanya-tanya apa yang harus dilakukan tanpa akses SSH: edit file /lib/Zend/Mail/Transport/Sendmail.php

dari baris 122 dan seterusnya, ganti ini:

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

dengan ini:

        // 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();
        }
Muntah
sumber
4
hm, bagi mereka yang tidak memiliki akses SSH. mungkin Anda harus menambal secara lokal dan mengunggah file yang ditambal. ;)
infabo
Untuk panduan lengkap tentang penambalan tanpa akses SSH, lihat jawaban ini di sini: magento.stackexchange.com/a/63936/3326
7ochem