Kerentanan Hilangnya $SAFE terkait Exception#to_s / NameError#to_s (CVE-2012-4464, CVE-2012-4466)
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.
Berita Baru
Ruby 3.3.0-preview3 Dirilis
Kami dengan senang hati mengumumkan rilis dari Ruby 3.3.0-preview3. Ruby 3.3 menambahkan sebuah parser baru yang bernama Prism, menggunakan Lrama sebagai parser generator, menambahkan pure-Ruby...
Ditulis oleh naruse tanggal 2023-11-12
Ruby 3.3.0-preview2 Dirilis
Ditulis oleh naruse tanggal 2023-09-14
Ruby 3.3.0-preview1 Dirilis
Ditulis oleh naruse tanggal 2023-05-12
Ruby 3.2.2 Dirilis
Ruby 3.2.2 telah dirilis.
Ditulis oleh naruse tanggal 2023-03-30