it-swarm-id.com

Apakah X-Content-Type-Options benar-benar mencegah serangan sniffing konten?

Dalam Tangled Web, Michal Zalewski mengatakan:

Jangan menggunakan Content-Type: application/octet-stream dan gunakan application/binary sebagai gantinya, terutama untuk tipe dokumen yang tidak dikenal. Jangan mengembalikan Jenis Konten: teks/polos.

Sebagai contoh, setiap platform hosting kode harus berhati-hati ketika mengembalikan file executable atau sumber sebagai aplikasi/octet-stream, karena ada risiko mereka dapat disalahartikan sebagai HTML dan ditampilkan inline.

Teks/logika polos yang kemudian diterapkan di Internet Explorer dan Safari untuk mendeteksi HTML dalam kasus seperti itu benar-benar berita buruk: Ini merampas kemampuan pengembang web untuk menggunakan jenis MIME ini dengan aman untuk menghasilkan dokumen plaintext khusus pengguna dan tidak menawarkan alternatif. . Ini telah menghasilkan sejumlah besar kerentanan aplikasi web, tetapi hingga hari ini, pengembang Internet Explorer tampaknya tidak menyesal dan belum mengubah perilaku default kode mereka.

Penggunaan situs X-Content-Type-Options:nosniff. Penulis mengatakan yang berikut tentang tajuk ini:

Penggunaan header ini [X-Content-Type-Options] sangat dianjurkan; sayangnya, dukungan untuk itu [...] hanya memiliki dukungan terbatas di browser lain. Dengan kata lain, itu tidak dapat diandalkan sebagai satu-satunya pertahanan terhadap mengendus konten.

Konten apa yang mengendus serangan X-Content-Type-Options:nosniff tidak mencegah? Apa Content-Type harus dikembalikan ke pengguna bukan text/plain?

19
Andrei Botalov

Latar Belakang. X-Content-Type-Options: adalah tajuk yang dirancang untuk bertahan terhadap serangan konten-mengendus MIME . Serangan mengendus konten MIME adalah risiko ketika Anda mengizinkan pengguna untuk mengunggah konten (mis., Gambar, dokumen, file lain) ke situs web Anda, tempat mereka dapat diunduh oleh pengguna lain.

Seperti yang dikatakan @Rook, ini tidak ada hubungannya dengan menguping/menangkap lalu lintas jaringan.

Serangan apa yang tidak dicegah? Karena X-Content-Type-Options: hanya didukung pada beberapa browser, ia tidak melindungi serangan terhadap pengguna yang menggunakan browser lain. Secara khusus, seharusnya di IE, Chrome, dan Firefox 5 . Lihat juga Apa risiko keamanan dari membiarkan pengguna mengunggah konten ke situs saya? untuk beberapa serangan lain yang tidak dicegah, misalnya, mengunggah malware atau konten yang tidak menyenangkan, mengunggah konten yang mengeksploitasi kerentanan. di browser pengguna, dll.

Jenis konten apa yang harus dikembalikan? Anda harus mengembalikan jenis konten yang sesuai untuk file itu. Anda seharusnya tidak mengizinkan pengguna untuk mengunggah konten yang tidak tepercaya dengan tipe konten berbahaya. Untuk detail lebih lanjut, silakan lihat jawaban untuk pertanyaan-pertanyaan berikut:

  1. Apakah aman untuk menayangkan file yang diunggah pengguna di bawah hanya tipe konten MIME yang terdaftar putih?

  2. Apakah aman untuk menyimpan dan memutar ulang tipe mime yang disediakan pengguna?

  3. perlindungan mengendus MIME

  4. Mengapa saya harus membatasi jenis file konten yang diunggah ke situs saya?

  5. Apa risiko keamanan dari membiarkan pengguna mengunggah konten ke situs saya?

  6. Bagaimana saya bisa dilindungi dari kerentanan gambar?

  7. Menggunakan ekstensi file dan tipe MIME (sebagai output dengan file -i -b) kombinasi untuk menentukan file yang tidak aman?

Topik ini telah banyak dibahas dan didokumentasikan di tempat lain di situs ini, jadi saya tidak akan mencoba mengulangi semua saran berguna yang ditemukan di sana.


Pembaruan: Saya baru mengetahui bahwa pengaturan Content-Type dan X-Content-Type-Options header dengan tepat tidak cukup untuk keamanan. Rupanya, Flash mengabaikan header Tipe-Konten , yang dapat memungkinkan memuat SWF jahat, yang kemudian dapat melakukan semua yang Anda lakukan dengan XSS. (Huh, Flash bodoh.) Sayangnya, tidak ada daftar putih jenis konten file yang dapat menghentikan serangan ini. Akibatnya, tampaknya satu-satunya solusi aman adalah Host konten yang diunggah pengguna pada domain terpisah.

23
D.W.

Ini jawaban Michal Zalewski yang diterima melalui email:

Jawaban singkatnya adalah ia bekerja di MSIE, dan hanya dalam beberapa kasus tertentu. Itu tidak akan melindungi Anda terhadap (apalagi semangat) mengendus di sebagian besar browser lain; tetapi yang lebih penting, tidak akan mencegah plugin melakukan hal-hal seperti risiko crossdomain.xml yang diuraikan di atas; dan tidak akan serta merta mencegah muatan sub-sumber daya dengan tipe MIME yang tidak cocok (mis., memuat gambar sebagai aplikasi/x-shockwave-flash melalui <embed>).

6
Andrei Botalov

Apa yang mengendus serangan X-Content-Type-Options: nosniff tidak mencegah?

Sniffing oleh alat yang tidak tahu tentang X-Content-Type-Options: beberapa browser, dan plugin yang dapat mengambil sumber daya jaringan. (Misalnya secara historis Java GIFAR, Flash loadPolicyFile ...)

Jenis Konten apa yang harus dikembalikan kepada pengguna alih-alih teks/polos?

Tidak ada jawaban yang baik untuk itu, jadi jika Anda perlu Host file teks yang tidak dipercaya Anda harus mengambil mitigasi hosting mereka pada nama host yang terpisah (dan idealnya alamat IP).

Alternatif: HTML-encode, tambahkan <pre> dan berfungsi sebagai text/html.

3
bobince