Farih.co.id
Home Programming Apa itu Karat yang Tidak Aman?

Apa itu Karat yang Tidak Aman?

rust foundation

Jaminan keamanan memori adalah salah satu nilai jual Rust; namun, Rust tidak kebal terhadap bug dan kerentanan. Karena pemeriksa pinjaman Rust memberlakukan model kepemilikan, ada sedikit trade-off dalam waktu kompilasi selama pemeriksaan keamanan.


Rust menyediakan fungsionalitas untuk melewati pemeriksaan keselamatan dalam fitur yang disebut “Karat Tidak Aman” yang memungkinkan Anda menghindari pemeriksaan keselamatan ini untuk tujuan kinerja. Unsafe Rust adalah alat yang ampuh untuk menulis perangkat lunak sistem tingkat rendah yang efisien dengan Rust.


Memahami Karat yang Tidak Aman

Unsafe Rust adalah serangkaian fitur yang dapat Anda gunakan untuk melewati jaminan keamanan Rust dengan imbalan kontrol yang lebih besar atas memori. Fitur Rust yang tidak aman mencakup petunjuk mentah, fungsi yang tidak aman, dan sifat yang tidak aman.

Tujuan dari Rust yang tidak aman adalah untuk memberi pengembang kemampuan untuk menulis kode sistem tingkat rendah tanpa mengorbankan kinerja. Anda dapat mengakses dan memanipulasi sumber daya memori secara langsung dan meningkatkan kinerja aplikasi Anda dengan Rust yang tidak aman.

Karat yang Tidak Aman sangat berguna dalam pengembangan sistem operasi, pemrograman jaringan, dan pengembangan game, di mana kinerja sangat penting. Dalam konteks ini, Anda memerlukan kontrol yang cermat atas tata letak memori dan perilaku kode program. Unsafe Rust memungkinkan Anda mencapainya dengan menyediakan abstraksi tingkat rendah untuk mengimplementasikan algoritme dan struktur data yang kompleks.

Bekerja Dengan Karat yang Tidak Aman

Blok tidak aman menyediakan fungsionalitas untuk menggunakan fitur Rust yang tidak aman. Anda akan menggunakan tidak aman kata kunci untuk menentukan blok tidak aman yang berisi kode Rust yang valid.

Inilah cara Anda dapat menggunakan blok yang tidak aman untuk akses langsung ke memori untuk modifikasi nilai:

 fn main() {
    let mut x = 10;

    unsafe {
        let raw = &mut x as *mut i32;
        *raw = 20;
    }

    println!("x is now {}", x);
}

Itu X variabel adalah bilangan bulat yang bisa berubah. Dalam tidak aman blok, pointer mentah ke X memberikan nilai baru untuk X. Kode di tidak aman blok valid tetapi tidak aman, dan tidak berada di blok yang tidak aman; program macet.

hasil dari.  Kode karat yang tidak aman

Selain itu, Anda dapat menentukan fungsi yang tidak aman dengan menambahkan tidak aman kata kunci sebelum fn kata kunci dalam deklarasi fungsi Anda.

 unsafe fn perform_unsafe_operation() {
    
}

Anda memerlukan blok yang tidak aman untuk memanggil fungsi yang tidak aman di bagian lain dari program Anda.

 fn main() {
    unsafe {
        perform_unsafe_operation();
    }
}

Menandai fungsi dengan tidak aman kata kunci tidak berarti fungsinya secara inheren berbahaya. Ini menunjukkan bahwa fungsi tersebut berisi kode yang memerlukan kehati-hatian ekstra dalam penggunaannya.

Risiko Terkait Dengan Penggunaan Karat yang Tidak Aman

peringatan malware merah di laptop

Penggunaan Rust yang tidak aman secara tidak benar dapat menyebabkan kesalahan memori, kecepatan data, dan kerentanan keamanan lainnya. Oleh karena itu, sangat penting untuk memahami risiko sambil mengikuti praktik terbaik yang terkait dengan Rust yang tidak aman untuk menulis kode yang aman dan berkinerja baik.

Risiko utama yang terkait dengan Rust yang tidak aman adalah potensi bug terkait memori yang dapat menyebabkan crash, kerentanan keamanan, dan perilaku kode yang tidak terdefinisi.

Kesalahan memori terjadi ketika program mencoba mengakses memori secara tidak normal; program akhirnya macet atau berperilaku tidak terduga.

Perlombaan data terjadi ketika dua atau lebih utas program mengakses memori yang sama secara bersamaan, dan setidaknya salah satu utas mengubah nilai dalam memori, sehingga menyebabkan program berperilaku tidak terduga.

Anda dapat memicu luapan buffer dengan menggunakan Rust yang tidak aman secara tidak benar. Buffer overflows terjadi ketika sebuah program menulis data di luar akhir buffer. Buffer overflow dapat menyebabkan program macet atau memungkinkan penyerang mengeksekusi kode arbitrer.

Kerentanan lainnya adalah use-after-free (UAF) yang terjadi saat program mengakses memori setelah de-alokasi nilai. UAF dapat menyebabkan program berperilaku tidak terduga dan berpotensi menimbulkan kerentanan keamanan.

Karena kerentanan ini, saat bekerja dengan Rust yang tidak aman, penting untuk memahami secara mendalam kepemilikan Rust dan cara kerja model peminjaman di Rust sembari mengikuti praktik terbaik.

Manajemen Memori Rust Fleksibel

Model kepemilikan Rust mengelola memori secara otomatis, mengurangi risiko bug terkait memori. Meminjam memungkinkan banyak variabel untuk mengakses sumber daya memori yang sama tanpa konflik secara bersamaan.

Manajemen memori Rust memberikan fleksibilitas, keamanan, dan kinerja yang diperlukan untuk pengembangan perangkat lunak modern, menjadikan Rust alat yang ampuh untuk menulis kode yang efisien dan andal.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad