Ditulis oleh usa tanggal 2013-02-22
Diterjemahkan oleh catcyborg
Ada kerentanan denial of service dan penciptaan object unsafe pada json dibundel dengan Ruby. Kerentanan ini telah ditetapkan CVE dengan identifier CVE-2013-0269. Kami sangat menyarankan untuk meng-upgrade ruby.
Rincian
Ketika memparse dokumen JSON tertentu, gem JSON (termasuk yang dibundel dengan Ruby) dapat dipaksakan untuk menciptakan simbol Ruby dalam sistem target. Karena simbol Ruby tidak masuk pada GC, hal ini dapat mengakibatkan serangan denial of service.
Teknik yang sama dapat digunakan untuk membuat objek dalam sistem target yang bertindak seperti objek internal. Ini objek "palsu" ini digunakan untuk melewati mekanisme keamanan tertentu dan dapat digunakan untuk serangan injeksi SQL di Ruby on Rails.
Kode yang dapat menyebabkan masalah di atas terlihat seperti ini:
Di mana variabel `user_input` akan memiliki sebuah dokumen JSON seperti di bawah ini.
{"json_class":"foo"}
Gem JSON akan mencoba untuk mencari konstanta "foo". Mencari konstanta itu akan membuat sebuah simbol.
Pada JSON versi 1.7.x, objek dengan berbagai macam attribut dapat dibuat dengan menggunakan dokumen JSON seperti di bawah ini.
{"json_class":"JSON::GenericObject","foo":"bar"}
Dokumen ini akan membuat sebuah instance dari JSON::GenericObject, dengan attribut "foo" yang memiliki nilai "bar". Menginstansi objek ini akan menghasilkan berbagai macam pembuatan simbol dan dalam beberapa kasus dapat digunakan untuk mem-bypass keamanan.
HARAP PERHATIKAN: perilaku ini tidak berubah ketika menggunakan `JSON.load`. `JSON.load` sebaiknya tidak pernah diberikan input dari sumber tak dikenal. Jika Anda memproses JSON dari sumber tak dikenal, selalu gunakan `JSON.parse`.
Semua pengguna menjalankan rilis yang terkena dampak ini harus meng-upgrade atau menggunakan salah satu dari solusi-solusi lain.
Solusi Lain
Untuk para pengguna yang tidak dapat meng-upgrade Ruby atau Gem JSON, ganti kode Anda dari seperti di bawah ini:
menjadi:
Jika Anda tidak dapat mengganti penggunaan `JSON.parse` (contohnya ketika Anda menggunakan gem yang bergantung pada `JSON.parse` seperti multi_json), maka gunakan monkey patch berikut.
Versi yang Terkena Dampak
- Semua ruby versi 1.9 sebelum Ruby 1.9.3 patchlevel 392
- Semua ruby versi 2.0 sebelum Ruby 2.0.0 patchlevel 0
- Sebelum trunk revision 39208
Ucapan Terima Kasih
Terima kasih besar pergi ke orang-orang berikut untuk bertanggung jawab mengungkapkan masalah ini dan bekerja sama dengan tim Rails untuk memperbaiki masalah ini.
- Thomas Hollstegge of Zweitag (www.zweitag.de)
- Ben Murphy
History
- Awalnya diterbitkan pada 2013-02-22 12:00:00 (UTC)