Kerentanan DoS Hash-flooding untuk Ruby 1.9 (CVE-2012-5371)

Serangan DoS Hash-flooding dilaporkan untuk seri fungsi Hash Ruby 1.9 yang kita pakai. Kelemahan ini berbeda dengan CVE-2011-4815 untuk Ruby 1.8.7. Semua pengguna Ruby 1.9 disarankan untuk meng-upgrade ke ruby-1.9.3 patchlevel 327 untuk mendapatkan perbaikan keamanan ini.

Dampak

Urutan string yang dibuat hati-hati dapat menyebabkan serangan denial of service pada layanan yang mem-parse urutan itu untuk membuat sebuah object Hash dengan menggunakan string sebagai key. Contohnya, kerentanan ini mempengaruhi aplikasi web yang mem-parse data JSON dari entitas tak terpercaya.

Rincian

Kerentanan ini mirip dengan CVE-2011-4815 untuk Ruby 1.8.7. Versi-versi Ruby 1.9 versions telah menggunakan MurmurHash function yang termodifikasi tetapi dilaporkan ada cara untuk membuat urutan string yang saling membentur nilai hash mereka. Perbaikan ini mengubah fungsi Hash dari object String dari MurmurHash ke SipHash 2-4.

Solusi

Harap update ke ruby-1.9.3 patchlevel 327 jika Anda menggunakan versi-versi Ruby 1.9. Harap update ke trunk revisi 37575 atau yang lebih baru jika Anda menggunakan Ruby 2.0.0 preview1 atau Ruby trunk. Sebagai tambahan, semua aplikasi Ruby yang menerima data input dari entitas tak terpercaya untuk mem-parse harus memmbatasi ukuran data input ke ukuran yang sesuai. Kami tidak yakin jika kami dapat menyediakan perlindungan untuk kerentanan semacam ini di tingkat bahasa pemrograman untuk ke depannya.

Versi yang Terkena Dampak

  • Semua versi Ruby 1.9 sebelum Ruby 1.9.3 patchlevel 327
  • Semua versi Ruby 2.0 (termasuk 2.0.0 preview1) sebelum trunk revision 37575

Ucapan Terima Kasih

Kerentanaan ini dilaporkan oleh Jean-Philippe Aumasson, salah satu desainer SipHash. Implementasi SipHash awal untuk perbaikan ini disajikan oleh Martin Boßlet, salah satu committer Ruby.

Update

  • Sebuah kesalahan pengejaan diperbaiki pada tanggal 2012-11-21 22:16:00
  • Awalnya diterbitkan pada tanggal 2012-11-10 04:23:00