Ditulis oleh usa tanggal 2012-10-12
Diterjemahkan oleh catcyborg
Beberapa kerentanan ditemukan pada Exception#to_s, NameError#to_s, dan name_err_mesg_to_s() yang merupakan API internal interpreter Ruby. Kode pengguna jahat dapat mem-bypass cek $SAFE dengan menggunakan salah satu dari beberapa kelemahan keamanan tersebut.
Rincian
Mekanisme $SAFE Ruby memungkinkan kode pengguna yang tak terpercaya untuk berjalan dalam mode $SAFE >= 4. Ini adalah sejenis sandbox, jadi beberapa operasi dibatasi dalam mode itu untuk melindungi data lain di luar sandbox.
Masalahnya ditemukan di sekitar mekanisme ini. API internal interpreter Exception#to_s, NameError#to_s, dan name_err_mesg_to_s() tidak menangani dengan benar bit $SAFE, jadi sebuah object String yang tidak di-taint dapat ditandai secara destruktif sebagai di-taint dengan menggunakan method-method itu. Dengan itu, kode tak terpercaya di sebuah sandbox dapat mengubah string yang tadinya tidak di-taint secara destruktif.
Ruby 1.8 pernah mengalami masalah keamanan yang mirip sekali. Itu telah memperbaiki Exception#to_s dan NameError#to_s, tetapi masalah name_err_mesg_to_str() masih ada pada perbaikan keamanan sebelumnya.
Versi yang Terkena Dampak
- semua Ruby 1.8.7 sebelum patchlevel 371
- semua Ruby 1.9.3 sebelum patchlevel 286
- semua branch development Ruby 2.0 sebelum revisi r37068
Solusi
Harap upgrade ke versi terbaru.
Ucapan Terima Kasih
Kerentanan ini ditemukan oleh Tyler Hickes.
Update
- Awalnya diterbitkan pada tanggal 2012-10-12 19:17:50 JST.