it-swarm-id.com

Eksploitasi atau risiko keamanan lainnya dengan pengunggahan SVG?

Saya memiliki situs, di mana orang dapat mengunggah gambar, Anda mungkin menganggapnya seperti pembuat gambar atau forum untuk gambar.

Sekarang, saya mengizinkan pengunggahan grafik raster ke ukuran tertentu, tetapi belum ada grafik vektor. Saya juga ingin mengizinkan pengunggahan SVG, tetapi ada dua masalah yang melingkari kepalaku:

  1. Bisakah SVG dibangun sedemikian rupa, sehingga ketika membaca meta data itu membuat server tidak responsif. dan dapat digunakan sebagai serangan DoS di server?
  2. Bisakah SVG dibangun sedemikian rupa, sehingga ketika memberikan SVG pada klien, klien menjadi tidak responsif dan berpotensi membuat setiap pengguna browser di situs saya mogok?

Juga, apakah itu praktik yang baik untuk menghasilkan PNG kecil (200x200px) untuk thumbnail, atau lebih baik memanipulasi SVG itu sendiri dengan faktor zoom atau sesuatu?

Jika eksploitasi SVG itu mungkin, bagaimana saya bisa melindungi diri terhadap mereka?

27
polemon

Bisakah SVG dibangun sedemikian rupa, sehingga ketika membaca meta data itu membuat server tidak responsif. dan dapat digunakan sebagai serangan DoS di server?

Apa yang Anda maksud dengan metadata? Jika Anda mencari lebar dan tinggi, Anda harus mem-parsing file SVG setidaknya sebagian untuk mendapatkannya; tidak ada jalan pintas membaca beberapa byte dari header seperti ada banyak format bitmap. Itu membawa risiko parsing XML biasa, seperti:

  • serangan inklusi sub entitas eksternal/DTD terhadap file jarak jauh, sumber daya sensitif jaringan lokal, file sensitif mesin lokal dan file perangkat
  • bom ekspansi entitas bersarang
  • struktur tag bersarang patologis mungkin mencapai batas sumber daya rekursi

sebagai tindakan pencegahan standar Anda akan menonaktifkan semua pemrosesan DTD, XInclude, XSL, XSI dan resolusi entitas.

Bisakah SVG dibangun sedemikian rupa, sehingga ketika memberikan SVG pada klien, klien menjadi tidak responsif dan berpotensi membuat setiap pengguna browser di situs saya mogok?

Mungkin saja, tetapi mungkin saja itu terjadi dengan format bitmap. Lihat misalnya kerentanan file PNG yang rusak beberapa waktu lalu.

Yang lebih memprihatinkan untuk file SVG adalah bahwa mereka dapat menyertakan JavaScript, yang akan beroperasi dalam konteks keamanan situs hosting, sehingga Anda harus mengkhawatirkan scripting lintas-situs.

Sebenarnya semua jenis file yang diunggah rentan terhadap hal ini, meskipun tidak dengan cara yang langsung dan mudah dieksploitasi. Dalam beberapa kasus, peramban (terutama IE) akan mengendusnya, dan jika mereka melihat hal-hal yang terlihat seperti tag, mereka berpotensi menafsirkannya sebagai HTML, termasuk JavaScript. Juga ada beberapa masalah samping dengan memperlakukan file yang diunggah sebagai Java applet dan file kebijakan Flash).

Mitigasi standar untuk semua masalah ini adalah untuk melayani sumber daya Anda yang tidak tepercaya, baik bitmap, SVG atau apa pun, dari domain yang berbeda ke situs utama Anda: domain yang tidak memiliki informasi sesi (cookie/auth) sensitif di dalamnya dan tidak memiliki kemampuan untuk skrip ke domain situs utama Anda.

Juga, apakah itu praktik yang baik untuk menghasilkan PNG kecil (200x200px) untuk thumbnail, atau lebih baik memanipulasi SVG itu sendiri dengan faktor zoom atau sesuatu?

Itu akan menjadi sentuhan yang bagus, tetapi Anda harus menyeret beberapa dependensi untuk membuat bitmap, misalnya Batik jika Anda menggunakan Java. Secara alami membawa perpustakaan baru yang kompleks meningkatkan permukaan serangan; itu mungkin ide yang baik untuk menjalankan thumbnailer sebagai tugas daemon prioritas rendah low-privilege-account terpisah.

19
bobince

Tindakan apa pun yang dilakukan aplikasi web Anda berpotensi berbahaya. Unggah file adalah salah satu fitur yang lebih berbahaya karena dapat menyebabkan eksekusi kode jarak jauh.

Masalah dengan mengunggah file apa pun ke server adalah bahwa itu mungkin bukan file yang Anda inginkan. Saya tidak tahu platform atau metodologi apa yang Anda gunakan, tetapi saya telah menipu sistem unggah file berkali-kali untuk mengunggah file .php atau .asp dan menjalankannya. Tidak terdengar seperti Anda merender SVG di sisi server (itu akan agak aneh), jadi XML mentah dalam SVG tidak terlalu penting bagi server Anda.

Dalam hal # 2, ya kerentanan korupsi memori svg adalah umum dan saya yakin bahwa lebih ada. Tetapi sekali lagi ini akan berlaku untuk hampir semua file yang Anda unggah. Gambar SVG sedikit lebih baru dan sebagian besar kerentanan pada gambar SVG ditemukan pada 2011.

SVG Masking digunakan untuk mengaburkan iframe dalam serangan clickjacking . Tapi saya rasa vektor serangan ini tidak berlaku untuk sistem unggahan svg Anda.

10
rook