Ditulis oleh usa tanggal 2012-10-12
Diterjemahkan oleh catcyborg
Sebuah kerentanan ditemukan bahwa routine untuk membuat file dapat membuat file lain secara tak sengaja dengan memasukkan NUL di path file secara strategis. Kerentanan ini telah dilaporkan sebagai CVE-2012-4522.
Rincian
Ruby dapat menangani pola binary apapun sebagai String, termasuk berbagai macam karakter NUL. Di lain pihak, sistem operasi dan library lain tidak selalu begitu. Mereka biasanya memperlakukan NUL sebagai penanda akhir String. Jadi, untuk meng-interface mereka dengan Ruby, karakter NUL seharusnya dihindari dengan tepat.
Tetapi, method seperti IO#open tidak mengecek nama file yang diberikan, dan hanya memberikan string nama file itu ke routine di layer lebih bawah. Hal ini menyebabkan pembuatan file tak sengaja seperti berikut:
p File.exists?("foo") #=> false
open("foo\0bar", "w") { |f| f.puts "hai" }
p File.exists?("foo") #=> true
p File.exists?("foo\0bar") #=> raise ArgumentError
Versi yang Terkena Dampak
- Semua Ruby 1.9.3 sebelum patchlevel 286
- Semua branch development Ruby 2.0.0 sebelum revisi r37163
Solusi
Harap meng-upgrade ke salah satu versi terbaru.
Ucapan Terima Kasih
Masalah ini dilaporkan oleh Peter Bex.
Update
- Memperbaiki kesalahan eja pada tanggal 2012-10-19 14:54:49 JST.
- Menambah sebutan nomor CVE pada tanggal 2012-10-16 08:58:51 JST.
- Awalnya diterbitkan pada tanggal 2012-10-12 19:19:55 JST.