Pengembang Rust menggunakan cargo-geiger untuk menemukan kode unsafe di seluruh crate dan dependensinya sebelum audit dimulai.
Tim Rust menggunakan cargo-geiger untuk menghitung unsafe Rust di seluruh crate dan grafik dependensinya, memberi para pemelihara titik awal untuk audit kode.

Proyek ini berada di bagian yang tegang dari ekosistem Rust. Rust memasarkan keamanan memori sebagai janji inti, tetapi banyak crate yang berguna membutuhkan blok unsafe untuk berbicara dengan sistem operasi, memanggil pustaka C, menyetel performa, atau membangun abstraksi tingkat rendah. Cargo Geiger memberi tim sebuah laporan yang bisa mereka inspeksi sebelum memutuskan di mana menghabiskan waktu peninjauan.
README-nya memposisikan alat ini sebagai masukan audit. Pengembang menjalankan cargo geiger di direktori yang sama dengan Cargo.toml, dan plugin melaporkan statistik untuk crate lokal dan dependensinya. Output itu dapat menjadi bahan kerja tinjauan dalam alat seperti cargo-crev atau safety-dance.
Instalasinya mengikuti pola Cargo yang diharapkan pengguna Rust. Pengembang dapat menjalankan cargo install --locked cargo-geiger dan menggunakan pustaka OpenSSL sistem, atau mereka dapat menambahkan fitur vendored-openssl untuk membangun OpenSSL ke dalam executable. Para pemelihara juga menerbitkan binary siap pakai melalui GitHub releases.

Cargo Geiger juga menyediakan pustaka bagi tim yang ingin mengonsumsi data itu di dalam alat lain. README mencantumkan cargo-geiger, cargo-geiger-serde, dan geiger. Yang pertama mengekspos internals dengan API yang tidak stabil. Yang kedua menyediakan tipe laporan yang dapat diserialisasi. Yang ketiga berisi komponen Cargo yang terpisah yang digunakan oleh alat baris perintah.
Sinyal adopsinya datang dari masalah yang ditargetkannya. Tim Rust telah memperluas grafik dependensi mereka, dan para pemelihara membutuhkan cara cepat untuk melihat risiko sebelum memulai peninjauan manual. Satu crate dapat menarik masuk puluhan paket. Satu blok unsafe dalam dependensi transitif bisa lebih penting daripada kode di repositori aplikasi, tergantung seberapa besar kepercayaan tim pada dependensi itu.
Cargo Geiger tidak memberi tahu pengembang bahwa sebuah crate mengandung kerentanan. Alat ini menghitung penggunaan unsafe. Perbedaan itu penting bagi pengguna Rust karena unsafe menandai batas kontrak, bukan cacat. Blok unsafe yang ditinjau dengan baik dapat melindungi API tingkat tinggi. Pembungkus aman yang ceroboh masih dapat mengekspos ketidakamanan memori melalui abstraksi yang buruk.
Sanggahan datang dari perbedaan yang sama. Beberapa pemelihara khawatir bahwa hitungan unsafe dapat menciptakan stigma terhadap crate yang menangani pekerjaan sistem yang sulit. Sebuah crate dengan lebih banyak kode unsafe mungkin memang layak mendapat lebih banyak peninjauan, tetapi angka itu saja tidak dapat menilai kualitas. Para peninjau tetap perlu memeriksa invarian, batas FFI, pengujian, dan praktik pemelihara.
Alat ini bekerja paling baik ketika tim memperlakukan laporan sebagai peta triase. Anda dapat menjalankannya sebelum mengadopsi dependensi, sebelum merilis crate yang sensitif terhadap keamanan, atau selama audit berkala. Anda dapat membandingkan versi, menemukan penggunaan unsafe yang baru, dan memutuskan dependensi mana yang layak mendapat peninjauan manusia.
Cargo Geiger mencerminkan kebiasaan keamanan Rust yang matang: ukur dulu, lalu inspeksi. Hitungan itu memulai percakapan, dan para insinyur menyelesaikannya dengan membaca kode.

Komentar
Silakan masuk atau daftar untuk bergabung dalam diskusi