Patch Keamanan SUPEE-10415 - Kemungkinan Masalah?

37

Patch Magento 1 baru telah dirilis, SUPEE-10415 .

Patch ini memberikan perlindungan terhadap beberapa jenis masalah terkait keamanan

Halaman info: https://magento.com/security/patches/supee-10415
Halaman unduhan: https://magento.com/tech-resources/download

Apa masalah yang mungkin harus diwaspadai?

Juga, silakan bagikan semua bug dan masalah yang Anda temukan setelah pemasangan patch.


  • Masalah dengan menerapkan SUPEE-10415 pada vanilla 1.9.1.1 , acara tidak dapat diterapkan karena pesan kesalahan hunk di Image.php . EDIT: Pada 7 Desember 2017 perbaikan disediakan di SUPEE-10497

  • Harus memiliki Versi 8788 2 diinstal, jika tidak akan melihat kesalahan "tipe data yang tidak didukung". Info lebih lanjut.

  • Galat "404: Page Not Found" dari direktori error / setelah upgrade ke SUPEE-10415. Masalah ini hanya terjadi pada instalasi Magento yang menjalankan ekstensi pihak ketiga tertentu.
    Penanganan Masalah: Konfirmasikan bahwa tidak ada peringatan PHP yang dihasilkan oleh ekstensi atau penyesuaian mana pun.
Ikon
sumber
5
Dikerjakan tanpa masalah di Magento 1.9.2.4CE di sini - sebagian besar perubahan tampaknya merupakan sanitasi variabel di admin, khususnya penyimpanan file log. Tampaknya ada beberapa perubahan pada api sabun juga dalam hal sanitasi. Ulasan juga disanitasi di area admin, jadi mungkin ada eksploitasi di mana kode berbahaya dapat diposting ke dalam sebuah tinjauan di mo (spekulatif)
Ricky Odin Matthews
2
Dikerahkan ke Magento 1.9.3.0 CE tidak ada masalah di sini. Patch sebelum 10266 diperlukan jika Anda belum menerapkan patch itu.
danmentzer
1
Pada 1.9.1.0 - dalam "Aturan Harga Keranjang Belanja" tambalan menyebabkan kegagalan - kesalahan keras pada aturan tampilan - entri log -a: 5: {i: 0; s: 23: "tipe data N yang tidak didukung"; i: 1; s: 1464: "# 0 /opt/bitnami/apps/magento/htdocs/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue-> read ('N', ';') ---- patch reversion diperbaiki sehingga merupakan sesuatu di SUPEE-10415
Laith
1
Saya tidak memiliki reputasi untuk mengirim jawaban, tetapi Anda tidak dapat memutakhirkan ke Magento 1.9.3.7 dan kemudian menggunakan Git untuk bergabung dengan tambalan ini: konstanta MAXIMUM_PASSWORD_LENGTH akan ditambahkan dua kali jika Anda menggunakan perilaku default Git (tidak tahu jika ada pengaturan yang merupakan solusi untuk ini).
toon81
1
Untuk masalah 1.9.1.1: Silakan gunakan SUPEE-10497 sebagai gantinya, itu baru saja dirilis untuk mengatasi masalah ini pada 1.9.1.1. Harap baca catatan rilis karena tambalan ini mengharuskan Anda menghapus SUPEE-10266 sebelum pemasangan.
Piotr Kaminski

Jawaban:

26

File-file di bawah ini diperbarui / ditambahkan setelah patch SUPEE - 10415 diterapkan.

app/Mage.php
app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Api/Helper/Data.php
app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
app/code/core/Mage/Core/Helper/String.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Customer/Model/Customer.php
app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Log/Helper/Data.php
app/code/core/Mage/Rule/Model/Abstract.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/code/core/Zend/Form/Decorator/Form.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
app/locale/en_US/Mage_Adminhtml.csv
app/locale/en_US/Mage_Customer.csv
js/mage/adminhtml/backup.js
lib/Varien/Filter/FormElementName.php

Beberapa poin penting:

1) Ekstensi file yang diizinkan: log, txt, html, csv. periksa di bawah file

app/Mage.php
app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
app/code/core/Mage/Core/etc/system.xml
app/code/core/Mage/Log/Helper/Data.php

2) Panjang kata sandi maksimum yang ditetapkan adalah 256 karakter dan validasi check in app/code/core/Mage/Customer/Model/Customer.phpfile

@@ -74,6 +74,11 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     const MINIMUM_PASSWORD_LENGTH = 6;

     /**
+     * Maximum Password Length
+     */
+    const MAXIMUM_PASSWORD_LENGTH = 256;
+
+    /**
      * Model event prefix
      *
      * @var string
@@ -876,6 +881,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
@@ -902,7 +911,7 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
     }

     /**
-     * Validate customer attribute values on password reset
+     * Validate customer password on reset
      * @return bool
      */
     public function validateResetPassword()
@@ -916,6 +925,10 @@ class Mage_Customer_Model_Customer extends Mage_Core_Model_Abstract
             $errors[] = Mage::helper('customer')
                 ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
         }
+        if (!Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
+            $errors[] = Mage::helper('customer')
+                ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
+        }
         $confirmation = $this->getPasswordConfirmation();
         if ($password != $confirmation) {
             $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');

Untuk EE Edition Menambahkan empat file tambahan

app/code/community/OnTap/Merchandiser/Block/Adminhtml/Catalog/Product/List.php
app/design/adminhtml/default/default/template/merchandiser/smartmerch/tab.phtml
app/design/frontend/rwd/enterprise/template/giftcardaccount/onepage/payment/scripts.phtml
app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Beberapa poin improtant di EE

Menambahkan kondisi dalam file di bawah ini

app/design/frontend/rwd/enterprise/template/giftcardaccount/onepage/payment/scripts.phtml 
  app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Harap perbarui kondisi di bawah ini di file Tema Anda.

if (elements[i].name == 'form_key') 
{
                continue;
 }

Untuk informasi lebih lanjut:

https://magento.com/security/patches/supee-10415 http://devdocs.magento.com/guides/m1x/ce19-ee114/ee1.14_release-notes.html#ee114-11436 http: // devdocs. magento.com/guides/m1x/ce19-ee114/ce1.9_release-notes.html#ce19-1936

Rama Chandran M
sumber
Setelah menerapkan SUPEE-10415, baik front-end dan back-end mendapatkan 404 kesalahan, bagaimana saya bisa mengatasi masalah ini? magento.stackexchange.com/q/215620/57334
zus
Bisakah Anda membuat tiket terpisah dan menjelaskan dengan log kesalahan dan Tambahkan komentar saya akan membantu Anda. masalah ini karena .htaccess atau menimpa modul di lokal.
Rama Chandran M
20

SUPEE-10415 ...

  1. Mengatasi beberapa masalah panel admin XSS di bidang berikut:

    • Laporan ulasan produk
    • Laporan tag produk
    • Ulasan produk menambah / mengedit antarmuka
    • Perjanjian penagihan
    • xmlconnect tab editor konten
    • Aturan berseri
  2. Membatasi ekstensi file yang dapat digunakan untuk sistem dan file log pengecualian. Diizinkan ekstensi file: .log, .txt, .html,.csv

  3. Menempatkan batas atas 256 karakter pada kata sandi akun pelanggan. Perubahan khusus ini konyol; tidak yakin dari mana mereka mendapat ide cemerlang ini.

Tidak satu pun dari perubahan ini yang tampak sebagai perubahan besar-besaran atau perubahan yang tidak kompatibel ke belakang, kecuali mungkin untuk batasan panjang kata sandi pelanggan.

t-richards
sumber
9
Panjang 256 kata sandi sebenarnya adalah bug di Magento yang tidak ditambal, karena bidang kata sandi basis data ada di customer_entity_varchar.value yang merupakan maxlength = 255. Tidak yakin apa yang terjadi tanpa tambalan jika Anda mencoba menetapkan lebih dari 255, mungkin menyebabkan masalah.
Ricky Odin Matthews
12
Kamu benar; customer_entity_varchar.value memang memiliki ukuran kolom terbatas. Namun, ini bukan bug karena kata sandi tidak disimpan di kolom itu. Kata sandi asin dan hash disimpan di sana. Nilai ini akan selalu memiliki panjang yang tetap, terlepas dari ukuran kata sandi asli. Sebelum tambalan ini, sama sekali tidak ada masalah memasukkan kata sandi lebih dari 255 karakter.
t-richards
3
Saya berasumsi perubahan panjang kata sandi ada hubungannya dengan APPSEC-1330. magento.com/security/patches/supee-10415
quasiobject
7
Mungkin ini yang mereka pikirkan, Rob: stackoverflow.com/a/98857/8199523
RickyMage123
1
@ t-richards poin bagus, Anda ada di sana. Mengapa Anda pikir mereka akan melakukannya, saya pikir mungkin untuk hash kata sandi yang panjang dapat menyebabkan masalah DoS dalam hal penggunaan CPU, tentunya kata sandi yang lebih lama membutuhkan lebih banyak CPU / Memori dalam PHP untuk hash?
Ricky Odin Matthews
12

SUPEE 10415 Membutuhkan 8788 v2 patch

Saya mengalami kesalahan yang sama dengan posting sebelumnya tetapi tampaknya telah dihapus.

a:5:{i:0;s:23:"Unsupported data type N";i:1;s:2942:"#0 /chroot/home/mywebroot/html/lib/Unserialize/Reader/Arr.php(102): Unserialize_Reader_ArrValue->  read('N', ';')
#1 /chroot/home/mywebroot/html/lib/Unserialize/Parser.php(53): Unserialize_Reader_Arr->read('N', ';')
#2 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Helper/UnserializeArray.php(44): Unserialize_Parser->unserialize('a:6:{s:4:"type"...')
#3 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(179): Mage_Core_Helper_UnserializeArray->unserialize('a:6:{s:4:"type"...')
#4 /chroot/home/mywebroot/html/app/code/core/Mage/Rule/Model/Abstract.php(353): Mage_Rule_Model_Abstract->getConditions()
#5 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(216): Mage_Rule_Model_Abstract->validate(Object(   Mage_Sales_Model_Quote_Address))
#6 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Validator.php(242): Mage_SalesRule_Model_Validator->_canProcessRule(Object(  Mage_SalesRule_Model_Rule), Object(Mage_Sales_Model_Quote_Address))
#7 /chroot/home/mywebroot/html/app/code/core/Mage/SalesRule/Model/Quote/Freeshipping.php(74): Mage_SalesRule_Model_Validator->processFreeShipping(Object(  Mage_Sales_Model_Quote_Item))
#8 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote/Address.php(1013): Mage_SalesRule_Model_Quote_Freeshipping->collect(Object(    Mage_Sales_Model_Quote_Address))
#9 /chroot/home/mywebroot/html/app/code/core/Mage/Sales/Model/Quote.php(1331): Mage_Sales_Model_Quote_Address->collectTotals()
#10 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/Model/Cart.php(458): Mage_Sales_Model_Quote->collectTotals()
#11 /chroot/home/mywebroot/html/app/code/core/Mage/Checkout/controllers/CartController.php(127): Mage_Checkout_Model_Cart->save()
#12 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_CartController->indexAction()
#13 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#14 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(   Mage_Core_Controller_Request_Http))
#15 /chroot/home/mywebroot/html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#16 /chroot/home/mywebroot/html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#17 /chroot/home/mywebroot/html/index.php(96): Mage::run('', 'store')
#18 {main}";s:3:"url";s:15:"/checkout/cart/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

Saya Menghadapi kesalahan di atas ketika saya menginstal tambalan baru pada M 1.8.00 CE Penyebab spesifik tampaknya karena memiliki tambalan v2 dari 8788 kami membuat perbaikan manual untuk sebagian besar masalah dari tambalan itu, tetapi kami melewatkan bagian yang tidak terverifikasi.

Alih-alih mengembalikan tambalan saya secara manual membuat modifikasi dan sekarang situs berfungsi dengan baik.

Di bawah ini Anda akan menemukan kode untuk patch 8788

diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
index 423902a..2c01684 100644
--- lib/Unserialize/Parser.php
+++ lib/Unserialize/Parser.php
@@ -34,6 +34,7 @@ class Unserialize_Parser
     const TYPE_DOUBLE = 'd';
     const TYPE_ARRAY = 'a';
     const TYPE_BOOL = 'b';
+    const TYPE_NULL = 'N';

     const SYMBOL_QUOTE = '"';
     const SYMBOL_SEMICOLON = ';';

diff --git lib/Unserialize/Reader/Arr.php lib/Unserialize/Reader/Arr.php
index caa979e..cd37804 100644
--- lib/Unserialize/Reader/Arr.php
+++ lib/Unserialize/Reader/Arr.php
@@ -101,7 +101,10 @@ class Unserialize_Reader_Arr
         if ($this->_status == self::READING_VALUE) {
             $value = $this->_reader->read($char, $prevChar);
             if (!is_null($value)) {
-                $this->_result[$this->_reader->key] = $value;
+                $this->_result[$this->_reader->key] =
+                    ($value == Unserialize_Reader_Null::NULL_VALUE && $prevChar == Unserialize_Parser::TYPE_NULL)
+                        ? null
+                        : $value;
                 if (count($this->_result) < $this->_length) {
                     $this->_reader = new Unserialize_Reader_ArrKey();
                     $this->_status = self::READING_KEY;

diff --git lib/Unserialize/Reader/ArrValue.php lib/Unserialize/Reader/ArrValue.php
index d2a4937..c6c0221 100644
--- lib/Unserialize/Reader/ArrValue.php
+++ lib/Unserialize/Reader/ArrValue.php
@@ -84,6 +84,10 @@ class Unserialize_Reader_ArrValue
                     $this->_reader = new Unserialize_Reader_Dbl();
                     $this->_status = self::READING_VALUE;
                     break;
+                case Unserialize_Parser::TYPE_NULL:
+                    $this->_reader = new Unserialize_Reader_Null();
+                    $this->_status = self::READING_VALUE;
+                    break;
                 default:
                     throw new Exception('Unsupported data type ' . $char);
             }

diff --git lib/Unserialize/Reader/Null.php lib/Unserialize/Reader/Null.php
new file mode 100644
index 0000000..93c7e0b
--- /dev/null
+++ lib/Unserialize/Reader/Null.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to [email protected] so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magento.com for more information.
+ *
+ * @category    Unserialize
+ * @package     Unserialize_Reader_Null
+ * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Class Unserialize_Reader_Null
+ */
+class Unserialize_Reader_Null
+{
+    /**
+     * @var int
+     */
+    protected $_status;
+
+    /**
+     * @var string
+     */
+    protected $_value;
+
+    const NULL_VALUE = 'null';
+
+    const READING_VALUE = 1;
+
+    /**
+     * @param string $char
+     * @param string $prevChar
+     * @return string|null
+     */
+    public function read($char, $prevChar)
+    {
+        if ($prevChar == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            $this->_value = self::NULL_VALUE;
+            $this->_status = self::READING_VALUE;
+            return null;
+        }
+
+        if ($this->_status == self::READING_VALUE && $char == Unserialize_Parser::SYMBOL_SEMICOLON) {
+            return $this->_value;
+        }
+        return null;
+    }
+}

Anda juga dapat membaca lebih lanjut tentang kesalahan dari posting ini ASK: kelas Unserialize_Parser baru melempar pengecualian pada nilai NULL

danmentzer
sumber
aha! Poin baiknya, 8788 V2 diperlukan untuk mencegah masalah ini!
Ikon
Bisakah Anda memberi tahu, pada halaman apa situs web Anda Anda melihat kesalahan "Tipe data tidak didukung"? Mencoba meniru.
Ikon
Saya dapat memicunya pada halaman kategori dan halaman produk serta kereta sementara produk ada di kereta.
danmentzer
@danmentzer bagaimana saya bisa mengatasi kesalahan, kembalikan patch 9767 v1 :: error: justpaste.it/1e9pn
zus
@zus Saya baru saja melihat posting Anda apakah Anda mengetahui hal ini dari tampilan tempel Anda, saya berani menebak tiga alasan berbeda yang mungkin untuk kesalahan Anda. 1. Anda memiliki versi patch yang salah (Ini adalah yang paling tidak mungkin) 2. Patch Anda sudah tidak diterapkan. 3. Mungkin Anda secara manual memperbaiki beberapa dari mereka dan tambalan tidak suka bagaimana Anda melakukannya. Maaf jika ini tidak membantu
danmentzer
11

Kami memiliki masalah dengan tambalan ini di mana setiap halaman di situs mulai menunjukkan kesalahan "404: Page Not Found" dari errors/direktori. Setelah sedikit menggali ternyata disebabkan oleh Peringatan PHP yang dikeluarkan Mage_Core_Model_App::init, yang kemudian menyebabkan a Mage_Core_Model_Store_Exceptionpada baris berikut dari tambalan:

diff --git app/Mage.php app/Mage.php
index 566027d..165928d 100644
--- app/Mage.php
+++ app/Mage.php
@@ -805,7 +805,12 @@ final class Mage
         static $loggers = array();

         $level  = is_null($level) ? Zend_Log::DEBUG : $level;
-        $file = empty($file) ? 'system.log' : $file;
+        $file = empty($file) ? 'system.log' : basename($file);
+
+        // Validate file extension before save. Allowed file extensions: log, txt, html, csv
+        if (!self::helper('log')->isLogFileExtensionValid($file)) {
+            return;
+        }

         try {
             if (!isset($loggers[$file])) {
  1. Peringatan PHP terjadi sebelum toko diinisialisasi
  2. Peringatan itu diambil oleh mageCoreErrorHandler(), yang memanggilMage::log() untuk mencatat pesan ke dalam file log.
  3. Mage::log() panggilan Mage::helper('log')
  4. Mage_Log_Helper_Data::__constructpanggilan Mage::getStoreConfig(), panggilan mana Mage::app()->getStore(), tetapi toko belum diinisialisasi dan aMage_Core_Model_Store_Exception dilemparkan
  5. app/Mage.php:647 menangkap pengecualian dan mengembalikan halaman 404

Belum benar-benar yakin apa solusinya, selain memperbaiki peringatan dan / atau menangkap pengecualian saat memeriksa ekstensi file log. Akan melaporkan ini ke Magento untuk melihat apa yang mereka pikirkan.

Tomas Gerulaitis
sumber
versi apa yang Anda gunakan?
Ikon
1
@Icon 1.9.3.6. Saya memang memperhatikan bahwa beberapa proyek kami yang kurang mutakhir tidak memiliki __construct()metode ini Mage_Log_Helper_Data, jadi tidak akan terpengaruh oleh hal ini, tetapi baik edisi komunitas dan perusahaan terbaru melakukannya.
Tomas Gerulaitis
Sepertinya magento
Ikon
Apakah Magento menyebutkan apakah mereka berencana untuk memperbaiki masalah ini dengan tambalan berikutnya?
Ikon
1
@Icon Kami melihat kesalahan di admin dan juga frontend, karena masalah terjadi saat inisialisasi konfigurasi Magento.
Tomas Gerulaitis
8

1.Resolved: Masalah Kunci Rahasia tidak valid saat ketika pengguna memuat Admin

Di tambalan ini, Magento tidak lagi menampilkan “Invalid Secret Key. Please refresh the page.” message when a user loads the Admin .

Dengan mengubah kode di

app/code/core/Mage/Adminhtml/Controller/Action.php

ketat semua kata sandi pelanggan untuk panjang MAX 256:

Kita sudah tahu bahwa panjang minimum magento 1.x kata sandi adalah 6 .

tetapi dalam patch ini Magento membatasi panjang maks ke 256.

Kasus ini, Magento memiliki dilakukan perubahan pada fungsi validate() dari kelas model Pelanggan Jadi, jika seseorang memiliki menimpa kelas dan juga menimpa maka mereka harus menambahkan di bawah kode padathat override class

if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
   $errors[] = Mage::helper('customer')
       ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
}

Tambah $this->escapeHtml()dan Mage :: helper ('core') -> quoteEscape () untuk beberapa file yang memungkinkan serangan XSS

Jika ada yang menimpa file-file ini maka Anda harus menambahkan kode di bawah ini untuk repeciev kelas overrider 1.app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php

menggantikan

$ this -> _ headerText = Mage :: helper ('laporan') -> __ ('Ulasan untuk% s', $ product-> getName ());

dengan

$ this -> _ headerText = Mage :: helper ('laporan') -> __ ('Ulasan untuk% s', $ this-> escapeHtml ($ product-> getName ()));

2.app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php

menggantikan

$ this -> _ headerText = Mage :: helper ('laporan') -> __ ('Tag dikirimkan ke% s', $ product-> getName ());

dengan

$this->_headerText = Mage::helper('reports')->__('Tags submitted to %s', $this->escapeHtml($product->getName()));

3.app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php

menggantikan

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $product->getName() . '</a>'

dengan

'text' => '<a href="' . $this->getUrl('*/catalog_product/edit', array('id' => $product->getId())) . '" onclick="this.target=\'blank\'">' . $this->escapeHtml($product->getName()) . '</a>'

  1. Penagihan tampilan pesanan penjualan setuju: aplikasi / desain / adminhtml / default / default / template / penjualan / penagihan / perjanjian / tampilan / tab / info.phtml

menggantikan

<?php echo $this->getCustomerEmail() ?>

dengan

<?php echo $this->escapeHtml($this->getCustomerEmail()) ?>

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / content.phtml oleh Mage :: helper ('core') -> quoteEscape

menggantikan

this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->jsQuoteEscape($page['label']) ?></option>';

dengan

$this.pageOptions += '<option value="<?php echo $helper->jsQuoteEscape($page['value']) ?>"><?php echo $helper->quoteEscape($page['label']) ?></option>';

  1. app / design / adminhtml / default / default / template / xmlconnect / edit / tab / design / image_edit.phtml oleh Mage :: helper ('core') -> quoteEscape

menggantikan

<option value="<?php echo $page['value']; ?>"><?php echo $page['label']; ?></option>

dengan

<option value="<?php echo $page['value']; ?>"><?php echo Mage::helper('core')->quoteEscape($page['label']); ?></option>

Amit Bera
sumber
4
Terima kasih @Amit saya melewatkan "Terselesaikan: Masalah Kunci Rahasia Tidak Valid" di ans saya :). +1
Rama Chandran M
1
Anda menyambut:) ... Anda telah melakukan pekerjaan dengan baik pada pertanyaan ini
Amit Bera
7

Jika Anda sudah menerapkan SUPEE-10358 ^, atau ditambal secara manual app/code/core/Mage/Adminhtml/Controller/Action.phpuntuk masalah " Kunci Rahasia Tidak Valid ", maka Anda perlu menghapus bagian itu secara manual dari file tambalan:

diff --git app/code/core/Mage/Adminhtml/Controller/Action.php app/code/core/Mage/Adminhtml/Controller/Action.php
index 2a8e63f..f2ee208 100644
--- app/code/core/Mage/Adminhtml/Controller/Action.php
+++ app/code/core/Mage/Adminhtml/Controller/Action.php
@@ -186,7 +186,7 @@ class Mage_Adminhtml_Controller_Action extends Mage_Core_Controller_Varien_Actio
                 'message' => $_keyErrorMsg
             )));
         } else {
-                if ($_keyErrorMsg != ''){
+                if (!$_isValidFormKey){
                 Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg);
             }
             $this->_redirect( Mage::getSingleton('admin/session')->getUser()->getStartupPageUrl() );

Selain itu, jika Anda telah memperbaiki kesalahan ketik " new-pawwsord " (diperkenalkan pada SUPEE-10266) di app/design/adminhtml/default/default/template/backup/dialogs.phtmlkemudian hapus bagian itu dari patch juga:

diff --git app/design/adminhtml/default/default/template/backup/dialogs.phtml app/design/adminhtml/default/default/template/backup/dialogs.phtml
index c5a3f82..2ff57cc 100644
--- app/design/adminhtml/default/default/template/backup/dialogs.phtml
+++ app/design/adminhtml/default/default/template/backup/dialogs.phtml
@@ -158,7 +158,7 @@
                             <td class="value">
                                 <!-- This is a dummy hidden field to trick firefox from auto filling the password -->
                                 <input type="password" class="input-text no-display" name="dummy" id="dummy" />

-                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-pawwsord">
+                                    <input type="password" name="ftp_pass" id="ftp_pass" autocomplete="new-password">
                             </td>
                         </tr>
                         <tr>

^ MageSupport menyediakan SUPEE-10358 sebagai tanggapan atas tiket dukungan EE mengenai masalah InvalidSecretKey

kmdsax
sumber
5

Masalah: tambalan tidak berfungsi pada vanilla 1.9.1.1

Sunting 1: perbaikan ditambahkan di bawah.

Sunting 2: perbaikan saya tidak lagi diperlukan, Magento menyediakan SUPEE-10497 yang memperbaiki masalah ini.

Masalah:

# file: PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

checking file app/Mage.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Add.php
checking file app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
checking file app/code/core/Mage/Adminhtml/Controller/Action.php
checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
checking file app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Filename.php
checking file app/code/core/Mage/Api/Helper/Data.php
checking file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config.php
checking file app/code/core/Mage/Api/Model/Wsdl/Config/Base.php
checking file app/code/core/Mage/Core/Helper/String.php
checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED
checking file app/code/core/Mage/Core/etc/config.xml
checking file app/code/core/Mage/Core/etc/system.xml
Hunk #1 succeeded at 651 (offset 1 line).
Hunk #2 succeeded at 661 (offset 1 line).
checking file app/code/core/Mage/Customer/Model/Customer.php
checking file app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
checking file app/code/core/Mage/Log/Helper/Data.php
checking file app/code/core/Mage/Rule/Model/Abstract.php
checking file app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
checking file app/code/core/Zend/Form/Decorator/Form.php
checking file app/design/adminhtml/default/default/template/backup/dialogs.phtml
checking file app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
checking file app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
checking file app/locale/en_US/Mage_Adminhtml.csv
checking file app/locale/en_US/Mage_Customer.csv
checking file js/mage/adminhtml/backup.js
checking file lib/Varien/Filter/FormElementName.php

Vanilla Magento 1.9.1.1 diunduh dari https://github.com/OpenMage/magento-mirror/archive/1.9.1.1.tar.gz

Tambalan yang sebelumnya diterapkan pada Magento 1.9.1.1 ini:

2017-11-29 07:37:12 UTC | SUPEE-5994 | CE_1.6.0.0 | v1 | _ | n/a | SUPEE-5994_CE_1.6.0.0_v1.patch
2017-11-29 07:37:12 UTC | SUPEE-6237 | EE_1.14.2.0 | v1 | 8b216c42e2e5d2cb5d8e500fcb6690abede9df52 | Fri Jun 12 13:39:59 2015 +0300 | v1.14.2.0..HEAD
2017-11-29 07:37:12 UTC | SUPEE-6285 | CE_1.9.1.1 | v2 | 7226d88b1eeb07a5fbc4e62be189a5219457cc14 | Mon Jun 22 16:32:26 2015 +0300 | 202596e441..7226d88b1e
2017-11-29 07:37:12 UTC | SUPEE-6482 | CE_1.9.2.0 | v1 |  | Tue Jul 14 14:17:04 2015 +0300 |
2017-11-29 07:37:12 UTC | SUPEE-6788 | CE_1.9.1.1 | v1 | 2349a68440e870cd68dfa81fb982f3b7a42cd099 | Fri Oct 23 14:49:16 2015 +0300 | b240663
2017-11-29 07:37:12 UTC | SUPEE-7405-CE-1-9-1-1 | CE_1.9.1.1 | v1 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e | Tue Jan 19 15:29:35 2016 +0200 | 2349a68440..f1c57f70de
2017-11-29 07:37:12 UTC | SUPEE-7405 | CE_1.9.1.1 | v1.1 | 38d673b4d2b132c6df53becc9d92346aa5d9627e | Fri Feb 5 13:28:39 2016 +0200 | f1c57f70de3fc2bea64bbe3ddf3bdf076b750f8e..38d673b4d2b132c6df53becc9d92346aa5d9627e
2017-11-29 07:37:12 UTC | SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1 | 1609c0d0be86473d357346fa51f93c12b365d7a1 | Tue Dec 8 12:53:31 2015 +0200 | e1fc3c59c9587427b8a9c88655715f27afbfe970..1609c0d0be86473d357346fa51f93c12b365d7a1
2017-11-29 07:37:12 UTC | SUPEE-8167 | EE_1.14.2.0 | v1 | 87bb97f9b0b2871f842b7faabf667a81806f937e | Thu Apr 27 13:31:21 2017 +0300 | 6010eb82..87bb97f9b
2017-11-29 07:37:12 UTC | SUPEE-8788 | CE_1.9.1.1 | v2 | 8d9fad1daf5131de3430ef09b0816d3d133c8412 | Mon Sep 26 14:06:18 2016 +0300 | 38d673b4d2..8d9fad1daf
2017-11-29 07:37:12 UTC | SUPEE-8967 | EE_1.13.1.0 | v1 | 1fa53e9533f6f3a16f24d9b64dabef0ab7f965d7 | Thu Aug 18 16:32:48 2016 +0300 | 97d160644..1fa53e9533
2017-11-29 07:37:13 UTC | SUPEE-9652 | EE_1.14.3.1 | v1 | 4038f0785d828794083f53f10c01aaa6af403523 | Tue Jan 24 15:03:12 2017 +0200 | 9586981e6ca8b255014b242d50b68b88525b0754..4038f0785d828794083f53f10c01aaa6af403523
2017-11-29 07:37:13 UTC | PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2 | 6566db274beaeb9bcdb56a62e02cc2da532e618c | Thu Jun 22 04:30:03 2017 +0300 | v1.14.3.3..HEAD
2017-11-29 07:37:13 UTC | SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1 | 721708ecf41f0ee745b8f441a4bfe56471b493a7 | Fri Sep 8 17:55:44 2017 +0300 | cc0d87..721708e
2017-11-29 07:37:13 UTC | SUPEE-10266-CE-1.9.1.1 | CE_1.9.1.1 | v1 | f66c6bcd3c16c5ca934823e6a91b5696698e497c | Fri Sep 1 12:15:53 2017 +0300 | 8d9fad1daf5131de3430ef09b0816d3d133c8412..HEAD

Perbaikan resmi untuk tambalan SUPEE-10415 untuk 1.9.1.1:

  • Jika Anda menginstal SUPEE-10266:
    Kembalikan menggunakan: ./PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh --revert
  • Jika Anda menginstal SUPEE-10415:
    Kembalikan menggunakan ./PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh --revert
  • Sekarang terapkan SUPEE-10497

Perbaikan manual untuk tambalan SUPEE-10415 untuk 1.9.1.1 [usang]:

Edit file PATCH_SUPEE-10415_CE_1.9.1.1_v1-2017-11-27-05-47-08.sh, ganti baris 445- 447.

Tua:

         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {

Baru:

         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
Jeroen Vermeulen - MageHost
sumber
Saya juga mengalami ini. Tampaknya menjadi masalah dengan app/code/core/Mage/Core/Model/File/Validator/Image.php. Patch SUPEE-10415 tampaknya tidak mempertimbangkan modifikasi yang dilakukan oleh Patch SUPEE-9767 (v1 atau v2)
wr125
1
Perbaiki ditambahkan ke bagian bawah jawaban saya.
Jeroen Vermeulen - MageHost
1
Saya tidak setuju. Kami mengambil pemasangan vanili dari github.com/OpenMage/magento-mirror/archive/1.9.2.2.tar.gz dan dapat menerapkan tambalan dalam urutan ini: SUPEE-7405-CE-1-9-2-2 | CE_1.9.2.2 | v1, SUPEE-7405 | CE_1.9.2.2 | v1.1, SUPEE-7616 | CE_1.9.2.2-CE_1.8.0.0 | v1, SUPEE-8167 | EE_1.14.2.0 | v1, SUPEE-8788 | CE_1.9.2.2 | v2, SUPEE-8967 | EE_1.13.1.0 | v1, SUPEE-9652 | EE_1.14.3.1 | v1, PATCH_SUPEE-9767_CE_1.9.3.0_v2 | CE_1.9.3.0 | v2, SUPEE-10336_v1.14.2.4 | CE_1.9.2.4 | v1, SUPEE-10266-CE-1.9.2.4 | CE_1.9.2.4 | v1, SUPEE-10415-ce-1.9.2.2 | CE_1.9.2.2 | v1
Jeroen Vermeulen - MageHost
1
Anda perlu menerapkan semua tambalan sebelumnya, lihat komentar saya sebelumnya. Saya mengujinya.
Jeroen Vermeulen - MageHost
4
Silakan gunakan SUPEE-10497 sebagai gantinya, itu baru saja dirilis untuk mengatasi masalah ini pada 1.9.1.1. Harap baca catatan rilis karena tambalan ini mengharuskan Anda menghapus SUPEE-10266 sebelum pemasangan.
Piotr Kaminski
3

Berikut adalah log perubahan lengkap dan apa yang saya pahami dengan changelog ini

Dan file mana yang terpengaruh oleh penyebab apa yang tercantum di bawah ini

Escape perubahan HTML

mengajukan

app/code/core/Mage/Adminhtml/Block/Report/Review/Detail.php
app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Detail.php
app/code/core/Mage/Adminhtml/Block/Review/Add.php
app/code/core/Mage/Adminhtml/Block/Review/Edit/Form.php
app/code/core/Mage/Sales/Block/Adminhtml/Billing/Agreement/Grid.php
app/design/adminhtml/default/default/template/sales/billing/agreement/view/tab/info.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/content.phtml
app/design/adminhtml/default/default/template/xmlconnect/edit/tab/design/image_edit.phtml
js/mage/adminhtml/backup.js

Tambahkan DS sebagai gantinya '/'

app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php

file baru ditambahkan

app/code/core/Zend/Form/Decorator/Form.php
lib/Varien/Filter/FormElementName.php

Lengkapi perubahan file

app / code / core / Mage / Adminhtml / Model / Sistem / Config / Backend / Filename.php

 class Mage_Adminhtml_Model_System_Config_Backend_Filename extends Mage_Core_Model_Config_Data
 {
+
+ /**
+ * Config path for system log file.
+ */
+ const DEV_LOG_FILE_PATH = 'dev/log/file';
+
+ /**
+ * Config path for exception log file.
+ */
+ const DEV_LOG_EXCEPTION_FILE_PATH = 'dev/log/exception_file';
+
+ /**
+ * Processing object before save data
+ *
+ * @return Mage_Adminhtml_Model_System_Config_Backend_Filename
+ * @throws Mage_Core_Exception
+ */
 protected function _beforeSave()
 {
- $value = $this->getValue();
- $value = basename($value);
+ $value = $this->getValue();
+ $configPath = $this->getPath();
+ $value = basename($value);
+
+ // if dev/log setting, validate log file extension.
+ if ($configPath == self::DEV_LOG_FILE_PATH || $configPath == self::DEV_LOG_EXCEPTION_FILE_PATH) {
+ if (!Mage::helper('log')->isLogFileExtensionValid($value)) {
+ throw Mage::exception('Mage_Core', Mage::helper('adminhtml')->__
+ ('Invalid file extension used for log file. Allowed file extensions: log, txt, html, csv'));
+ }
+ }
+
     $this->setValue($value);
     return $this;
 }

Menambahkan metode getCacheId () dan getServiceUrl ()

app/code/core/Mage/Api/Helper/Data.php

Metode yang ditambahkan unserialize ()

app/code/core/Mage/Core/Helper/String.php

Gunakan metode getServiceUrl () yang dibuat di app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Api/Model/Wsdl/Config/Base.php

Gunakan metode getCacheId () yang dibuat di app / code / core / Mage / Api / Helper / Data.php

app/code/core/Mage/Api/Model/Wsdl/Config.php

unserialize()Metode yang digunakan di atas dibuat di app / code / core / Mage / Core / Helper / String.php

app/code/core/Mage/Eav/Model/Entity/Attribute/Backend/Serialized.php
app/code/core/Mage/Rule/Model/Abstract.php

Perubahan komentar

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/system.xml

Komentar ditambahkan

app/code/core/Mage/Core/etc/config.xml

Menambahkan Panjang kata sandi maksimum

app/code/core/Mage/Customer/Model/Customer.php

Ditambahkan memungkinkan ekstensi file // $ _ allowFileExtensions = array ('log', 'txt', 'html', 'csv');

app/code/core/Mage/Log/Helper/Data.php

Tidak tahu perubahan apa

app/design/adminhtml/default/default/template/backup/dialogs.phtml

Daftar Masalah

SUPEE-10415 mencegah kontrol keranjang

dapatkan kode kesalahan # 10415 di paypal di magento

Murtuza Zabuawala
sumber
1

Mencoba ini di Magento EE 1.13.0.2 dan tampaknya tambalan ini tidak berfungsi dengan baik jika SUPEE-6482 diinstal.

Checking patch app/code/core/Mage/Api/Model/Server/Adapter/Soap.php...
error: while searching for:
            ->setUseSession(false);

        $wsdlUrl = $params !== null
            ? $urlModel->getUrl('*/*/*', array('_current' => true, '_query' => $params))
            : $urlModel->getUrl('*/*/*');

        if( $withAuth ) {
            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);

error: patch failed: app/code/core/Mage/Api/Model/Server/Adapter/Soap.php:205

SUPEE-6482 mengubah baris dengan $phpAuthUsermenjadi

$phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
DanCarlyon
sumber
Tidak hanya $phpAuthUserperbedaan garis spasi sebelumnya ->setUseSession(false);juga tidak benar
DanCarlyon