Patch baru supee-6788 cara menerapkan patch

29

Setelah berminggu-minggu menunggu tambalan hari ini (27.10.2015) dirilis: SUPEE-6788

Banyak hal yang ditambal dan juga dianjurkan untuk meninjau modul yang diinstal untuk kemungkinan kerentanan.

Saya membuka posting ini untuk mendapatkan wawasan tentang cara menerapkan tambalan. Apa langkah-langkah untuk menerapkan tambalan? Untuk pemahaman saya ini adalah langkah-langkahnya:

  1. Perbaiki modul dengan fungsi admin yang tidak di bawah URL admin
  2. Perbaiki modul yang menggunakan pernyataan SQL sebagai nama bidang atau bidang keluar
  3. Daftar putih memblokir atau arahan yang menggunakan variabel seperti {{config path=”web/unsecure/base_url”}}dan{{bloc type=rss/order_new}}
  4. Mengatasi potensi Eksploitasi dengan Jenis File Opsi Kustom (tidak tahu bagaimana melakukan ini)
  5. Terapkan tambalan

Apakah ini prosedur yang benar?

lloiacono
sumber
1
Versi CE yang tercantum saat ini 1.7.0.0 hingga 1.9.2.0
Fiasco Labs
5
Perubahan patch .htaccess.samplejuga .htaccess. Yang terakhir ini dikustomisasi di sebagian besar toko, ini akan membuat tambalan gagal => Anda perlu menggantinya sementara dengan file asli dari Magento, menerapkan tambalan, mengembalikan .htaccess Anda sendiri dan menerapkan perubahan yang melindungi akses ke cron.phpsecara manual (don ' t menggunakan sistem produksi untuk proses ini tentu saja!)
Fabian Schmengler
1
bagaimana dengan mereka yang menggunakan nginx?
lloiacono
4
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena tidak ada pertanyaan. Pindahkan diskusi ke obrolan
7ochem
2
Ada pertanyaan dalam judul posting, juga di paragraf terakhir saya lebih spesifik. Terlepas dari ini, posting semacam ini sangat berguna menurut saya untuk memusatkan komentar dan praktik terbaik saat menerapkan tambalan yang baru dirilis.
lloiacono

Jawaban:

33

Secara umum, Anda dapat menerapkan tambalan seperti yang sebelumnya. Lihatlah dokumentasi resmi dan periksa pos SE ini . Tapi ya, ada beberapa poin tambahan yang harus Anda periksa saat menerapkan tambalan ini. Byte / Hypernode memiliki postingan yang bagus tentang itu.

  1. Periksa apakah tema Anda memiliki kebiasaan template/customer/form/register.phtmlatau kebiasaan template/persistent/customer/form/register.phtml. Jika demikian, pastikan itu termasuk a form_key.
  2. Periksa apakah tema Anda memiliki kebiasaan layout/customer.xml. Jika demikian, pastikan untuk menerapkan perubahan yang diperlukan dari tambalan ( customer_account_resetpasswordtelah diubah menjadi customer_account_changeforgotten).
  3. Apakah Anda menggunakan variabel non-standar di halaman CMS, blok statis atau templat email? Kemudian pastikan Anda memasukkannya ke dalam daftar putih. Lihat pertanyaan SE ini untuk mempelajari cara membuat daftar putih variabel / blok.
  4. Apakah Anda menjalankan cron.phpvia HTTP? Pastikan Anda menggunakan lebih baik cron.sh. Jika ini tidak memungkinkan, setidaknya pastikan Anda memanggil cron.php melalui CLI PHP. Jika karena alasan tertentu Anda tidak dapat mengonfigurasi cronjob nyata dan perlu menjalankannya melalui HTTP, lihat pertanyaan SE ini
  5. Pastikan semua ekstensi Anda menggunakan perutean admin "baru". Anda dapat menggunakan plugin n98-magerun ini untuk memeriksa. Anda juga dapat menggunakan skrip CLI ini . Anda juga dapat melihat pertanyaan SE terkait ini .
    1. Ketika semua ekstensi Anda menggunakan perutean admin yang tepat, pastikan untuk menonaktifkan "Aktifkan mode kompatibilitas perutean Admin" di bawah Sistem - Konfigurasi - Admin - Keamanan.
  6. Jika Anda menggunakan M2ePro, perbarui ke versi terbaru karena versi lama tidak berfungsi dengan tambalan baru.

Saat memperbarui, pastikan Anda menghapus file dev/tests/functional/.htaccess. Tidak ada lagi di Magento 1.9.2.2. Menjaga itu berarti Anda masih rentan.

Bagaimanapun, periksa halaman Anda dengan MageReport setelah memperbarui untuk melihat apakah semuanya berjalan dengan baik.

Ada juga posting blog teknis oleh Piotr , yang menjelaskan perubahan kritis.

Simon
sumber
Hanya sedikit catatan, skrip CLI menyebutkan 'Verifikasi semua baik-baik saja, lalu nonaktifkan mode kompatibilitas pengontrol admin'. Saya pikir mereka berseberangan, untuk memungkinkannya. Apakah itu benar?
Michael
1
@kaska Jika semua ekstensi Anda baik-baik saja, Anda harus menonaktifkan mode kompatibilitas.
Simon
dalam lingkungan produksi tidak harus Anda hapus / dev sepenuhnya?
paj
1
@paj secara teoritis ya. Tetapi dengan versi 1.9.2.2, itu dilindungi dengan .htaccess, jadi tidak apa-apa untuk menyimpannya. Pastikan untuk mengikuti saran .htaccess saya di atas.
Simon
Terima kasih atas kelengkapannya, mereka harus membiarkan Anda menulis catatan rilis yang kental di lain waktu! Sangat membantu!
asherrard
3

Untuk Nginx, pastikan Anda memblokir akses ke cron.php dan folder dev. Kami menggunakan blok ini:

location ~ ^/(app|includes|media/downloadable|pkginfo|report/config.xml|var|magmi|cron.php|dev)/? { deny all; }
Adam L.
sumber
regex Anda tidak akan berfungsi, karena Anda memeriksa direktori saja,. jadi "laporkan / config.xml, cron.php" tidak cocok, dan Anda memiliki bilah vertikal atau simbol pipa pada akhirnya .. salin-tempel? juga jangan mengacaukan regex bersama dengan / app /, jika Anda salah menaruhkan sesuatu, itu akan diretas.
MagenX
Pekerjaan salin dan tempel yang buruk, maaf. Ditambahkan dalam? di akhir sehingga garis miring adalah opsional. Mengujinya sekarang dan berfungsi sebagaimana mestinya.
Adam L.
juga regex ini rentan, Anda memiliki ^ /, pastikan Anda tidak menyalin file sumber Anda ke folder teratas, seperti / old /, / upgrade / etc
MagenX
@MagenX Jadi Anda mengatakan bahwa jika Anda tidak menggunakan kontrol versi atau administrasi sistem BCP standar, bahwa regex ini yang harus disalahkan?
Melvyn
1

Saya baru saja menerapkan tambalan pada 1.10.1 EE saya dan ini menyebabkan efek samping pada layar asli karena intinya tidak sesuai dengan APPSEC-1063:

Contoh:

Di app/code/core/Mage/Customer/Model/Entity/Attribute/Collection.php

Anda dapat menemukan 2 addFieldToFilterpanggilan yang tidak memenuhi persyaratan APPSEC-1063.

Ini melanggar Pelanggan> kisi Atribut, jadi Anda harus menambal tambalan, menggunakan trik yang mereka rekomendasikan di pdf "SUPEE-6788-Teknis% 20Detail% 20.pdf" di bagian APPSEC-1063

Mengubah beberapa

    $this->addFieldToFilter($field, 0);

(di mana $ bidang berisi pernyataan kompleks (KASUS .. KETIKA ...) sql)

ke

    $resultCondition = $this->_getConditionSql($field, 0);
    $this->_select->where($resultCondition);

Supee-6788-toolbox dan gaiterjones baik rhoerr 'tidak mendeteksi masalah seperti ini, saya memeriksa semua yang lain -> addFieldToFilter ($ dan sepertinya tidak ada yang menyebabkan masalah.

File inti 1,10 lainnya yang terkena dampak: (ditemukan oleh rhoerr's supee-6788-toolbox)

app/code/core/Mage/Bundle/Model/Mysql4/Option/Collection.php 

Mungkin ada lebih banyak.

TERAS
sumber