Patch keamanan Magento SUPEE-6482, Apa yang ditambal?

28

Hari ini 04.08.2015 ada patch keamanan baru yang dirilis, beberapa rekan dan saya sedang memeriksa patch, dan selalu menyenangkan untuk berdiskusi tentang apa yang berubah, apakah ada yang tahu apa saja kemungkinan serangan yang dapat memengaruhi dan toko yang belum dikirim? Apa hal terburuk yang bisa terjadi?

Pembaruan: Saya hanya ingin menambahkan magento email yang dikirim hari ini untuk menyelesaikan posting. Pembaruan Email Magento

lloiacono
sumber
1
Saya yakin akan ada akhir-akhir ini. Namun, jika Anda sudah memeriksanya dan ingin berdiskusi, silakan! Bagikan pemikiran dan temuan Anda!
mam08ixo
2
Tambalan itu sendiri, tidak. Instalasi lengkap untuk 1.9.2.1 harus diperiksa untuk perubahan-perubahan itu, pada titik ini tampaknya hanya membahas 4 masalah keamanan
Fiasco Labs
2
Anda harus melakukan pemutakhiran penuh, atau backport 1.9.2.0 => CMS Block dan caching Widget di magento-1921/app/code/core/Mage/Cms/Block/Block.phpdanmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs
2
merch.docs.magento.com/ce/user_guide/… - Saya baru saja bertanya-tanya kapan tambalan berikutnya akan datang setelah ada begitu banyak fokus pada header pada hari-hari terakhir. Dan itu dia!
hakre
2
@ hakre - Saya sudah membaca konten tambalan sebelum menyertakan header, kecuali header itu benar-benar ada di API. Unduhan lengkap memiliki beberapa tambalan di pengontrol http dan templat kuki javascript, tetapi tambalan 6482 tidak.
Fiasco Labs

Jawaban:

13

Patch keamanan aktual ( SUPEE-6482 ) hanya memengaruhi dua file berikut dan merupakan patch API.

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Catalog/Model/Product/Api/V2.php

Instalasi lengkap 1.9.2.1 adalah masalah yang berbeda sama sekali. Saya akan membedakan kode sumber antara 1.9.2.0 dan 1.9.2.1 untuk mencari tahu dua item lainnya yang ditambal.

Catatan rilis adalah untuk penginstal lengkap, Anda harus memeriksa tambalan untuk melihat apakah itu benar-benar mencakup semua item yang dicatat dalam catatan rilis.

Implikasi menjalankan server yang belum ditambal:

  1. Script Lintas Situs Menggunakan Header Tidak Divalidasi => Keracunan Cache
  2. Penyertaan File yang Diisi Otomatis dalam Magento SOAP API => Kode otomatis diisoload
  3. XSS dalam Pencarian Pendaftaran Hadiah => Pencurian cookie dan peniruan pengguna
  4. Kerentanan SSRF dalam File WSDL => Info server internal bocor dan inklusi file jarak jauh

CATATAN: File yang ditambal dalam arsip instal lengkap yang tidak ditambal dengan tambalan, hmm?

diff -r magento-1920/app/code/core/Mage/Core/Controller/Request/Http.php magento-1921/app/code/core/Mage/Core/Controller/Request/Http.php
300a301
>         $host = $_SERVER['HTTP_HOST'];
302,303c303,304
<             $host = explode(':', $_SERVER['HTTP_HOST']);
<             return $host[0];
---
>             $hostParts = explode(':', $_SERVER['HTTP_HOST']);
>             $host =  $hostParts[0];
305c306,313
<         return $_SERVER['HTTP_HOST'];
---
> 
>         if (strpos($host, ',') !== false || strpos($host, ';') !== false) {
>             $response = new Zend_Controller_Response_Http();
>             $response->setHttpResponseCode(400)->sendHeaders();
>             exit();
>         }
> 
>         return $host;

diff -r magento-1920/app/design/frontend/base/default/template/page/js/cookie.phtml magento-1921/app/design/frontend/base/default/template/page/js/cookie.phtml
37,38c37,38
< Mage.Cookies.path     = '<?php echo $this->getPath()?>';
< Mage.Cookies.domain   = '<?php echo $this->getDomain()?>';
---
> Mage.Cookies.path     = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getPath()) ?>';
> Mage.Cookies.domain   = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getDomain()) ?>';
Laboratorium Fiasco
sumber
5
Saya pikir file-file yang hilang memperbaiki masalah paling penting "Cross-site Scripting Using Unvalidated Headers". Masalah "XSS di Gift Registry Seaerch" tampaknya keliru ditambahkan ke dokumentasi tambalan untuk versi CE, karena Gift Registry adalah fitur EE-only.
Aad Mathijssen
1
Yap, saya pikir itu cukup penting untuk menerapkan perubahan yang hilang pada instalasi CE saya dan tidak menunggu Magento untuk mengetahuinya dan mengirimkan patch V2 ketika mereka menyiasatinya. Keracunan cache dan input pengguna tanpa filter yang digunakan dalam komponen cookie tampaknya seperti masalah besar.
Fiasco Labs
1
Magento telah memperbarui dokumentasinya: masalah "Scripting Lintas Situs Menggunakan Header yang Tidak Divalidasi" dan "XSS dalam Pencarian Registri Hadiah" ditandai sebagai "Hanya Untuk Edisi Magento Enterprise". Tetapi sementara itu, Magento CE 1.9.2.1 memang berisi perbaikan untuk "Cross-site Scripting Using Unvalidated Headers", atau setidaknya sebagian darinya.
Aad Mathijssen
1
Heh, CE melakukan perubahan singkat dalam aksi. CE tidak memiliki Wishlist, tetapi jelas membutuhkan masalah "Header Tidak Valid" untuk dihapus melalui patch, bukan perubahan dokumentasi. Oh, well ... lebih dari yang kami harapkan.
Fiasco Labs
3
Sebagai catatan - menurut pengujian kami - Scripting Lintas Situs Menggunakan Header yang Tidak Divalidasi BUKAN kerentanan CE. Jika ada yang bisa memberikan POC bahwa ada kerentanan CE, silakan kunjungi magento.com/security dan laporkan.
patokan
9

Saya melihat perubahan detail dan efek samping mana yang diharapkan.

Dalam versi untuk EE 1.13.1.0 file berikut berubah:

2015-08-05 07:14:25 UTC | SUPEE-6482_EE_1.13.1.0 | EE_1.13.1.0 | v2 | 7e38036f94f250514fcc11d066a43c9bdb6a3723 | Tue Jul 28 14:29:35 2015 +0300 | v1.13.1.0..HEAD
patching file app/code/core/Enterprise/PageCache/Model/Processor.php
patching file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
patching file app/code/core/Mage/Catalog/Model/Product/Api/V2.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 294 (offset 7 lines).
patching file app/design/frontend/base/default/template/page/js/cookie.phtml
patching file app/design/frontend/enterprise/default/template/giftregistry/search/form.phtml
  • Dalam Adapter/Soap.php, urlencoding ditambahkan ke data otentikasi. Ini seharusnya tidak memiliki efek samping negatif. Ini memastikan, bahwa hasilnya wsdlUrlvalid. Tanpa perubahan ini, orang dapat memengaruhi URL
  • Product/Api/V2.php: Berikut adalah beberapa pemeriksaan jika data yang dikirimkan adalah objek. Ini seharusnya tidak terjadi dalam keadaan normal.
  • di Request/Http.phpdan PageCache/Model/Processor.phpcek ditambahkan ketika mendapatkan HOST HTTP. Ini sepertinya untuk menutupi suntikan header yang disebutkan. Pemeriksaan hanya berlaku jika ada ;atau ,di host HTTP, jadi ini harus tidak kritis dalam sistem kehidupan nyata / tidak memiliki efek samping negatif.
  • dalam cookie.phtmlpelarian ditambahkan. Jadi ini harus diteruskan porting ke tema Anda jika Anda menimpa file itu
  • mirip untuk giftregistry/search/form.phtml

Singkatnya, saya akan mengatakan bahwa menerapkan tambalan tidak boleh memiliki efek samping negatif. Ingatlah untuk meneruskan porta perubahan ke .phtmlfile Anda .

Alex
sumber
1
Terima kasih atas konfirmasinya, injeksi header dan komponen cookie yang keluar mudah untuk di-backport ke CE.
Fiasco Labs
1
Tidak perlu port. Ada juga versi tambalan untuk CE di area unduhan.
Alex
5

Yang aneh adalah bahwa patch EE berisi modifikasi pada file-file berikut:

app/code/core/Mage/Core/Controller/Request/Http.php
app/design/frontend/base/default/template/page/js/cookie.phtml

Ketika CE tidak, untuk versi yang setara.

Saya kira ada sesuatu yang hilang pada SUPEE-6482versi CE itu, dan V2 dapat segera dirilis.

Antoine Kociuba
sumber
Saya memikirkan hal yang sama!
rob3000
2
Ya, Anda benar. Itulah yang saya dapatkan dengan membedakan arsip instalasi 1.9.2.0 dan 1.9.2.1. Saya memiliki instalasi CE sepenuhnya ditambal karena ini, saya pergi ke depan dan secara manual menambal dua file yang disebutkan. File cookie js perlu ditambal dalam template khusus Anda juga jika Anda memiliki file itu di dalamnya. Mereka mungkin melewatkan pengontrol permintaan sebagai tambalan karena itu harus menambal file yang sebelumnya ditambal dan kami tidak mendapatkan cinta CE yang terjadi.
Fiasco Labs
1
Satu lagi alasan untuk "menunggu" beberapa hari sebelumnya untuk digunakan di lingkungan produksi (dan gunakan hari-hari ini untuk melakukan pemeriksaan yang lebih baik sebelum ditayangkan). Hari ini, satu lagi pemberitahuan pembaruan di Magento Backend (hanya pemberitahuan tentang kerentanan keamanan 2 bukannya 4). Bagaimanapun, saya akan menunggu sampai Senin untuk ditayangkan, setidaknya.
DarkCowboy
1
Magento telah memperbarui catatan rilis mereka: merch.docs.magento.com/ce/user_guide/… Beberapa patch secara efektif hanya EE. Tapi saya masih belum mengerti mengapa 2 file tersebut, berbasiskan inti, tidak terkait dengan patch CE, karena mereka terintegrasi dalam CE 1.9.2.1 ...
Antoine Kociuba
4

Patch rilis Magento SUPEE-6482 untuk perbaikan untuk masalah di bawah ini dalam edisi CE & EE

Untuk Edisi Komunitas Magento:

  • Penyertaan File yang Diisi Otomatis dalam SOAP API Magento
  • Kerentanan SSRF dalam File WSDL

Untuk Edisi Magento Enterprise

  • Penyertaan File yang Diisi Otomatis dalam SOAP API Magento
  • Kerentanan SSRF dalam File WSDL
  • Script Lintas Situs Menggunakan Header Tidak Divalidasi

XSS dalam Pencarian Registri Hadiah

Melakukan perubahan di kelas

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Perubahan di Mage_Api_Model_Server_Adapter_Soap

             : $urlModel->getUrl('*/*/*');

         if ( $withAuth ) {
-            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);
-            $phpAuthPw = $this->getController()->getRequest()->getServer('PHP_AUTH_PW', false);
-            $scheme = $this->getController()->getRequest()->getScheme();
+            $phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
+            $phpAuthPw = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_PW', false));
+            $scheme = rawurlencode($this->getController()->getRequest()->getScheme());

             if ($phpAuthUser && $phpAuthPw) {
                 $wsdlUrl = sprintf("%s://%s:%s@%s", $scheme, $phpAuthUser, $phpAuthPw,

ubah di Mage_Catalog_Model_Product_Api_V2

     public function create($type, $set, $sku, $productData, $store = null)
     {
-        if (!$type || !$set || !$sku) {
+        if (!$type || !$set || !$sku || !is_object($productData)) {
             $this->_fault('data_invalid');
         }

@@ -243,6 +243,9 @@ class Mage_Catalog_Model_Product_Api_V2 extends Mage_Catalog_Model_Product_Api
      */
     protected function _prepareDataForSave ($product, $productData)
     {
+        if (!is_object($productData)) {
+            $this->_fault('data_invalid');
+        }
         if (property_exists($productData, 'website_ids') && is_array($productData->website_ids)) {
             $product->setWebsiteIds($productData->website_ids);
         }

Lihat lebih lanjut di: http://www.amitbera.com/magento-security-patch-supee-6482/

Amit Bera
sumber
1
Hai Amit Bera (@ amit-bera), di mana saya bisa mendapatkan patch SUPEE-6482 dalam bentuk zip yang terpisah dari Magento 1.9.2.1?
Andhi Irawan
2
@ Andhi, magento 1.9.2.1 sudah termasuk kode tambalan di struktur kode itu, Jadi Anda tidak perlu menerapkan SUPEE-6482
Amit Bera
1
@ Amit Bera, Jika masih menggunakan Magento 1.9.1.0 apakah akan meningkatkan ke 1.9.2.1? Maksud saya, hanya dapat menginstal patch SUPEE-6428?
Andhi Irawan
3
Perhatikan bahwa tambalan tajuk yang tidak divalidasi tidak ada dalam tambalan CE, file-file berikut ini tidak disentuh => app/code/core/Mage/Core/Controller/Request/Http.phpdan app/design/frontend/base/default/template/page/js/cookie.phtmltermasuk yang hilang. Mungkin kita harus mengubah pertanyaan di atas untuk membaca: Magento security patch SUPEE-6482, Apa yang tidak ditambal?
Fiasco Labs
1
@ Amit Bera, maaf, telah ditambahkan oleh Magento pada Ditambahkan 4 Agu 2015 di magentocommerce.com/download : Unduh -> Patch Edisi Komunitas Magento -> SUPEE-6482
Andhi Irawan
4

Silakan baca dokumentasi Magento pada rilis ini, jawabannya ada di sana: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html

ChrisB123
sumber
5
Meskipun informatif pertimbangkan untuk menyalin bagian yang relevan ke utas ini. Tautan satu-satunya-jawaban bukanlah jawaban terbaik karena tautan memiliki kebiasaan menghilang (terutama tautan dokumentasi Magento!)
philwinkle
1
@philwinkle - Heh, ya kita semua pernah ke sana. MagEbayVaporation (x_x) menautkan lebih banyak.
Fiasco Labs
2

Patch ini, seperti patch terbaru lainnya, berisi banyak salinan, lisensi, dan perbaikan salah ketik. Ini juga memperkenalkan beberapa kesalahan ketik dari apa yang saya lihat.

Bagian tambalan keamanan yang sebenarnya muncul untuk mengatasi sanitasi input pengguna untuk 4 kemungkinan serangan berbeda.

Daniel Smith
sumber