SUPEE-9767, modman dan symlink

16

Saya ingin menambal toko Magento dengan SUPEE-9767. The dokumentasi untuk supee-9767 memberitahu saya untuk Symlink menonaktifkan pengaturan sebelum menerapkan patch:

Sebelum menerapkan tambalan atau meningkatkan ke rilis terbaru, pastikan untuk menonaktifkan pengaturan Symlinks ... Pengaturan, jika diaktifkan, akan menimpa pengaturan file konfigurasi dan mengubahnya akan memerlukan modifikasi database langsung.

Tetapi saya menggunakan modman untuk mengelola modul dan karena beberapa modul menggunakan file template, pengaturan Symlink diaktifkan sesuai dengan saran dalam README modman. Apakah aman untuk membiarkan pengaturan Symlinks diaktifkan sebagai salah satu posting di Patch Keamanan SUPEE-9767 - Kemungkinan masalah? menyarankan (saya belum bisa mengomentari kiriman karena saya pengguna baru)?

Pengguna yang menggunakan modman untuk mengelola modul Magento 1.x harus memastikan bahwa mereka tidak menonaktifkan symlink karena ini akan menonaktifkan modul modman.

Jika saya membiarkan pengaturan Symlinks diaktifkan, bukankah toko akan terkena APPSEC-1281: Eksekusi kode jarak jauh melalui symlinks , ancaman keamanan yang ingin diperbaiki patch ini?

Apakah ada cara lain menggunakan modman dengan file templat setelah tambalan ini? (Saya tahu opsi "versi Mage / Core / Block / Template.php" yang di-patch yang disebutkan README modman, tetapi menambal file inti sepertinya berbahaya.)

Ehannes
sumber
1
Saya menggunakan Modman dan Komposer dalam proyek saya. Saya tidak percaya selama bertahun-tahun pilihan Symlinks di Magento tidak dianggap sebagai bom. Tiba-tiba itu adalah bom! Perubahan ini tanpa pemberitahuan dan penjelasan apa pun akan membuat banyak masalah bagi banyak orang. Sedih tentang masa depan Modman dan Komposer di Magento.
ADDISON74
1
Itulah tantangannya. Jika Anda bersedia melakukan investasi, membuat proses pembuatan yang menghasilkan artefak yang digabung (tanpa symlink) adalah cara yang sangat baik untuk dilakukan.
Joseph at SwiftOtter
Artikel hebat tentang ini dapat ditemukan di tomlankhorst.nl/… di mana ia juga menjelaskan bagaimana cara menyingkirkan "Symlinks is enabled" - peringatan yang diperkenalkan di Magento 1.9.3.4.
ehannes

Jawaban:

14

Berikut adalah beberapa klarifikasi mengenai perubahan ini:

Pertama baca penjelasan ini dari Peter O'Callaghan ini akan memberi Anda pemahaman yang besar: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

Juga bacaan menarik lainnya adalah posting ini oleh Max Chadwick https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

Modifikasi ini sebenarnya tentang memanggil konten yang dapat diunggah (seperti gambar) melalui arahan template.

Masalah yang terkait dengan symlink hanya dapat dieksploitasi dengan akses admin dan Magento menambahkan beberapa perlindungan di sekitar unggahan gambar juga.

Harap dicatat bahwa mereka adalah beberapa perlindungan terhadap cara yang diketahui untuk mengeksploitasinya selain pengaturan itu sendiri.

Jadi, jika Anda memahami risiko yang terlibat, Anda dapat membiarkan symlink diaktifkan.

Jika Anda perlu mengaktifkannya untuk instalasi baru, Anda dapat menjalankan:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";
Raphael di Digital Pianism
sumber
Jika saya membiarkan symlink diaktifkan, bagaimana saya melindungi toko terhadap "APPSEC-1281: Eksekusi kode jauh melalui symlink"?
ehannes
@hannes dengan melindungi akses ke backend Anda untuk memulainya karena exploit membutuhkan akses backend. Selain itu, pengunggahan gambar sekarang memiliki validasi panggilan balik tambahan.
Raphael di Digital Pianism
3
mendapatkan akses admin berarti Anda memiliki akses ke seluruh antarmuka backend Magento. siapa yang peduli tentang eksploitasi pada tahap ini yang ditemukan dalam skrip gambar yang diunggah? bahwa pengguna jahat dapat menghapus semua produk Anda, dapat melakukan hal-hal yang tak terbayangkan. diskusi harus dimulai dengan "jika pengguna ini mendapatkan hak admin karena admin yang sebenarnya bodoh tidak melindungi backend dalam banyak hal"
ADDISON74
1
@hannes, silakan baca peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks
Raphael di Digital Pianism
2
Peter O'Callaghan menulis: "Karena itu jika seseorang berhasil mendapatkan akses ke panel admin Anda, mereka dapat melakukan tindakan jahat untuk mencapai RCE.". Ini sepertinya menjadi kesimpulan umum dalam diskusi ini. Seperti yang dikatakan sebelumnya, jika pengguna jahat memiliki akses ke panel admin Anda, ada hal lain yang perlu dikhawatirkan daripada RCE. Jika ada yang punya sesuatu untuk ditambahkan ke diskusi, silakan lakukan. Bagaimanapun, saya pikir Anda telah membuat semuanya menjadi lebih jelas @RaphaelatDigitalPianism dan saya akan menerima jawaban ini.
ehannes
6

Masalahnya bukan symlinks, masalahnya adalah jalur yang mencapai tingkat seperti ../../../../../media/tmp/hahaha.png. Jika saya salah dalam hal ini, mohon beri tahu saya. "Memperbaiki" berjudul "Izinkan symlink" dan mengaktifkan ini menonaktifkan pemeriksaan yang diterapkan menggunakan realpath(). Menurut pendapat saya perbaikan yang sama amannya, lebih berkinerja dan masih kompatibel dengan symlink adalah dengan menggunakan strpos($path, '..')dan / atau untuk memeriksa apakah realpath()cocok dengan direktori berisiko seperti mediadan var. Jika diimplementasikan seperti ini tidak perlu dapat dikonfigurasi, itu hanya bisa selalu diaktifkan dan masih tidak menghancurkan ribuan toko.

Apapun itu, pengguna server web Anda seharusnya tidak memiliki akses untuk menulis file di direktori kode sumber (seperti yang dilakukan Magento Connect ...) sehingga itu merupakan cara lain untuk mencegah kode berbahaya ditulis di suatu tempat dan dieksekusi sebagai templat blok.

Jadi, serangan pada symlink ini hanya salah arah dan perbaikan yang lebih baik ada. Bahkan, saya memberikan satu lebih dari setahun yang lalu dan bahkan ada tautan untuk itu di README modman github.

Kolin
sumber
0

Jika di ekstra file komposer Anda, Anda mengatur magento-deploystrategy untuk menyalin file Anda akan disalin dari folder vendor daripada Symlinks.

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

Anda kemudian dapat memodifikasi core_config_data Anda untuk mengatur nilai dev / template / allow_symlink ke 0

Sumberdaya Untuk Informasi

WorkstationB
sumber