5 poin oleh GN⁺ 2024-09-27 | 1 komentar | Bagikan ke WhatsApp

Menghilangkan akar kerentanan keamanan memori

Hasil yang tampak paradoks

  • Ketika codebase yang ditulis dalam bahasa yang tidak aman terhadap memori terus bertambah, memindahkan pengembangan fitur baru ke bahasa yang aman terhadap memori dapat secara signifikan mengurangi kerentanan keamanan memori
  • Ini karena kerentanan berkurang secara eksponensial seiring waktu

Penjelasan matematis

  • Umur kerentanan mengikuti distribusi eksponensial
  • Kerentanan terutama muncul pada kode baru, dan seiring waktu kode menjadi lebih aman
  • Kepadatan kerentanan pada kode berusia 5 tahun 3,4 hingga 7,4 kali lebih rendah dibandingkan kode baru

Kasus nyata di Android

  • Sejak 2019, tim Android mulai mengalihkan pengembangan baru ke bahasa yang aman terhadap memori
  • Pada 2024, kerentanan keamanan memori turun dari 76% menjadi 24%
  • Seiring menurunnya kerentanan keamanan memori, risiko keamanan secara keseluruhan juga menurun

Evolusi strategi keamanan memori

  • Generasi 1: patch reaktif - pendekatan menemukan lalu memperbaiki kerentanan
  • Generasi 2: mitigasi proaktif - pendekatan yang mempersulit eksploitasi kerentanan
  • Generasi 3: penemuan kerentanan proaktif - pendekatan menemukan kerentanan lebih awal
  • Generasi 4: pencegahan dengan keyakinan tinggi - pendekatan mencegah terjadinya kerentanan dengan beralih ke bahasa yang aman terhadap memori

Keunggulan pencegahan dengan keyakinan tinggi

  • Memutus persaingan tanpa akhir antara pihak bertahan dan penyerang
  • Meningkatkan keamanan dan menurunkan biaya melalui bahasa yang aman terhadap memori
  • Meningkatkan ketepatan kode dan produktivitas pengembang

Dari pelajaran ke praktik

  • Tidak perlu membuang atau menulis ulang seluruh kode lama yang tidak aman terhadap memori
  • Mempercepat transisi ke bahasa yang aman terhadap memori dengan meningkatkan interoperabilitas
  • Mengembangkan alat untuk meningkatkan interoperabilitas antara Rust dan C++, serta Rust dan Kotlin

Peran generasi sebelumnya

  • Penggunaan mitigasi dan deteksi proaktif secara selektif
  • Saat beralih ke kode yang aman terhadap memori, kebutuhan akan mitigasi dan deteksi berkurang

Kesimpulan

  • Menggunakan bahasa yang aman terhadap memori untuk kode baru membuat kerentanan menurun secara eksponensial
  • Lebih dari 6 tahun hasil yang konsisten di Android membuktikan efektivitas pendekatan ini

Ringkasan GN⁺

  • Beralih ke bahasa yang aman terhadap memori penting untuk mengurangi kerentanan keamanan memori
  • Dari kasus tim Android, terlihat bahwa kerentanan keamanan memori menurun secara signifikan
  • Meningkatkan interoperabilitas lebih praktis daripada menulis ulang seluruh kode yang ada
  • Menggunakan bahasa yang aman terhadap memori seperti Rust dapat meningkatkan keamanan dan produktivitas sekaligus

1 komentar

 
GN⁺ 2024-09-27
Komentar Hacker News
  • Beralih ke bahasa yang aman terhadap memori untuk pengembangan baru dapat membawa peningkatan yang berarti
    • Jauh lebih mudah dan murah daripada mem-porting semuanya
  • Grafik dalam artikel jelas dan ringkas
    • Pemilihan data dan pelabelan yang cermat dapat menyampaikan ide yang dimaksud dengan mudah
  • Kerentanan menurun secara eksponensial
    • Penting untuk berfokus pada kode baru
    • Proyek RiiR yang membabi buta adalah pemborosan sumber daya
    • Strategi yang direkomendasikan para ahli Rust paling efektif untuk meminimalkan kerentanan memori
  • Tim Android mengamati bahwa rasio rollback perubahan Rust kurang dari setengah C++
  • Ada korelasi antara kode baru dan kerentanan memori
    • Kode yang terkait fitur baru lebih terkonsentrasi kerentanannya
    • Kode lama menemukan edge case melalui penggunaan nyata
  • Sulit untuk menyimpulkan bahwa kode baru menyebabkan kerentanan memori
    • Ada kerentanan berdampak tinggi seperti bug Heartbleed
  • Kerentanan menurun secara eksponensial
    • Menghentikan penambahan fitur baru mungkin lebih baik untuk keamanan
    • Windows LTSC mungkin merupakan versi yang paling aman
  • Penulisan kode yang aman meningkatkan ketepatan kode dan produktivitas pengembang
    • Penemuan bug dimajukan ke sebelum code check-in
    • Tim Android mengamati bahwa rasio rollback perubahan Rust kurang dari setengah C++
  • Setelah menemukan Rust, semangat terhadap pemrograman kembali pulih
  • Hanya Rust yang disebut sebagai bahasa aman terhadap memori (MSL)
    • Kotlin juga disebut, tetapi fitur keamanan memorinya tidak sekuat Rust
  • Umur kerentanan terdistribusi secara eksponensial
    • Sangat bernilai untuk memastikan keamanan memori pada kode baru
    • Berguna bahkan pada codebase legacy berskala besar
  • Kode lama mungkin tidak ditinjau dengan cukup
    • Lebih sering meninjau log commit terbaru
  • Perbedaan bahasa penulisan kode antara Mac dan Windows
    • Mac menggunakan Swift yang aman terhadap memori, sedangkan Windows terutama menggunakan C atau C++
  • Semakin langka kerentanan, semakin tinggi nilainya
    • Kerentanan yang tersisa kemungkinan digunakan oleh aktor negara terhadap target bernilai tinggi
    • Fitur seperti Lockdown Mode di iOS mungkin diperlukan
    • Pengguna yang sadar keamanan dapat mencentang kotak keamanan sebagai pertukaran dengan penurunan performa
    • Mendeteksi serangan dan mengirimkannya ke tim keamanan untuk dianalisis
    • Mengirim peringatan kepada pengguna dan memberi tahu bahwa serangan telah terdeteksi
    • Memberi tahu pengguna ketika serangan terdeteksi alih-alih memantau aktivitas pengguna secara pasif