RubyRussia 2019. Mikhail Pronyakin: apakah Ruby aman?

Akan ada banyak pembicaraan di konferensi RubyRussia tentang bagaimana menulis kode dan bagaimana melakukannya lebih baik daripada yang lain. Tetapi jika produk yang diluncurkan perusahaan Anda tidak aman, ini dapat menyebabkan masalah besar. Grigory Petrov membahas topik penting ini dengan Mikhail Pronyakin dari perusahaan ONSEK, pengembang platform terintegrasi Valarm .

gambar

Katakan apa yang Anda lakukan dan bagaimana Anda menggunakan Ruby?

Sekali waktu, saya bekerja sebagai spesialis di bidang keamanan informasi. Melakukan sesuatu seperti aplikasi web terbaik dan berbagai perangkat fisik. Sejalan dengan ini, ia terlibat dalam pemrograman sistem dalam C. Pada waktu itu, seperti sekarang, kerangka kerja Metasploit sangat populer, yang dapat diperluas dengan modulnya sendiri untuk mencari dan mengeksploitasi kerentanan. Itu ditulis dalam Ruby - jadi mulai kenalan saya dengan bahasa ini. Kemudian saya bekerja untuk Onsek, di mana pada awalnya saya mempercepat beberapa bagian penting dari proyek backend dengan menulis ulang kode dari Ruby ke C, dan kemudian saya mulai menulis fungsionalitas baru hanya di Ruby. Aktivitas perusahaan kami terkait dengan keamanan informasi, kami melakukan Valarm, platform untuk melindungi dan menguji aplikasi web (dan tidak hanya). Ternyata saya adalah pengembang Ruby dan spesialis keamanan informasi.

Laporan Anda akan terkait dengan topik ini. Ceritakan lebih banyak.

RoR memberi programmer kesempatan yang baik untuk menulis kode, tetapi ada juga poin yang tidak jelas yang dapat menyebabkan masalah keamanan. Pada konferensi tersebut, saya akan berbicara tentang kerentanan khas aplikasi Ruby dan memberikan contoh-contoh praktis yang akan membantu mencegah kesalahan.

Menurut pendapat Anda, bagaimana Rails sekarang dalam hal keamanan?

Dalam filosofi Ruby dan Rails, ada yang namanya "prioritas persetujuan atas konfigurasi." Jika semuanya dipikirkan dalam perjanjian, maka tidak ada masalah keamanan akan muncul. Tetapi jika suatu situasi tiba-tiba muncul bahwa Anda dapat menulis kode rentan secara default, maka ini sudah dapat menyebabkan masalah serius. Terutama untuk pengembang pemula yang baru mulai belajar Rails dan bahkan tidak memikirkan keamanan kode mereka. Melihat ke masa lalu, dulu lebih buruk di mana-mana dengan keamanan daripada sekarang. Ini tidak hanya berlaku untuk Ruby, tetapi juga untuk bahasa dan kerangka kerja lainnya. Setiap tahun, fitur keamanan semakin terintegrasi ke dalam kerangka kerja. Misalnya, Rails sudah memiliki token CSRF di luar kotak di mana-mana, yang sangat bagus. Dan semua ini berfungsi di bawah tenda, tetapi jika Anda tidak tahu bagaimana dan ingin melakukan sesuatu yang khusus, maka keamanan aplikasi mungkin terganggu.

Jika kami mempertimbangkan kerentanan, mereka dapat secara kasar dibagi menjadi 2 jenis: ini adalah kerentanan dalam runtime dan kerentanan bahasa itu sendiri. Sekali waktu di Python ada cerita sedih - ternyata dalam Python hash untuk kamus dihitung tanpa garam. Seseorang bisa dengan berbahaya memprovokasi jumlah tabrakan yang tak terbatas. Akibatnya, kamus meluap, dan server mati karena beberapa megabita permintaan serangan. Katakan, di dunia Rails Anda, dalam pengalaman Anda, berapa banyak kerentanan di Ruby itu sendiri, dan berapa banyak kerentanan di rails?

Jika kita melihat topik kerentanan, maka itu jauh lebih luas daripada hanya Ruby dan Rails. Sebagai contoh, kita memiliki nginx. Jika tidak dikonfigurasi dengan benar, maka Anda cukup membaca beberapa file dari server dan mendapatkan rahasia dari aplikasi Rails. Dan itu saja, aplikasi ini diretas - lakukan apa yang Anda inginkan. Anda perlu memahami bahwa keamanan tidak terbatas pada satu bahasa dan kerangka kerja - ada lingkungan di mana dieksekusi, lingkungan di mana ia dirakit, dan satu juta nuansa yang berbeda.

Dan dalam hal kuantitas, bisakah Anda mencari tahu di mana ada lebih banyak kerentanan? Di luar Ruby dan Rails, dalam bahasa itu sendiri, dalam runtime-nya, di perpustakaan standar, atau di Rails sebagai kerangka kerja yang menggunakan Ruby?

Saya akan mengatakan bahwa sebagian besar kerentanan berada di persimpangan antara logika aplikasi dan Rails sendiri atau fungsi perpustakaan lainnya.

Selama beberapa tahun terakhir, apa kerentanan paling lucu yang Anda atau rekan Anda temukan? Dari serial "Ahh, yah, itu yang harus kamu selesaikan seperti itu."

Kerentanan yang paling mengesankan adalah di permata, memungkinkan teks suara. Anda memberinya teks, dan dia menyuarakannya. Gem disebut utilitas konsol dan memberikan parameter padanya tanpa penyaringan yang tepat. Akibatnya, suntikan ditemukan di Bash, dan Anda bisa mendengar hasil mengeksekusi perintah sewenang-wenang. Anda mengirim perintah "ls /" ke input, dan suara sebagai respons menentukan "slash dev slash etc" dan seterusnya.

Selama beberapa tahun terakhir, ekosistem bahasa tingkat tinggi - Python, Ruby, JavaScript - telah mengandalkan sejumlah besar perpustakaan kecil. Ada banyak dari mereka, dan mereka bergantung satu sama lain sehingga menghilangkan beberapa pad-kiri, dan ini membunuh ekosistem. Penyerang baik mulai membuat perpustakaan mereka atau mengendalikan orang asing dan menambahkan beberapa kode berbahaya kepada mereka yang tidak dapat Anda temukan. Seberapa besar dan mengerikan ini sekarang?

Ada masalah, tetapi sejauh ini tidak ada yang benar-benar memikirkannya, semua orang bergantung "secara acak". Jika penyerang memiliki tujuan untuk menyerang perusahaan tertentu dengan cara tertentu, maka tidak ada yang akan menghentikannya hari ini. Tidak ada yang mencegah membuat permata yang bagus, mendapatkan banyak bintang di GitHub dan menunggu semua orang mulai menggunakannya. Kemudian, diam-diam menanamkan kode berbahaya ke dalamnya, yang sama sekali tidak sulit. Saya pikir pertanyaan dependensi saat ini adalah masalah kepercayaan: masalahnya terbuka dan masih menunggu solusinya.

Sampai jumpa di RubyRussia!

Pertanyaan tentang topik keamanan dapat ditanyakan kepada Mikhail setelah laporan, serta dibahas di stand perusahaannya. Anda dapat melihat topik lain apa yang akan dibahas oleh rubist pada 28 September di situs web .

Dan selain pembicara dan peserta, Anda dapat berkenalan dengan perusahaan hebat yang mendukung konferensi:

Penyelenggara - Evrone
Mitra Umum - Toptal
Mitra Emas - Gett
Mitra Perak - Valarm , JetBrains , Bookmate dan Cashwagon
Mitra Perunggu - InSales

Source: https://habr.com/ru/post/id467369/


All Articles