Pembangun Perdebatkan Definisi Keselamatan Memori Ketika Kerajaan Menggalakkan Penggunaan

Pasukan Komuniti BigGo
Pembangun Perdebatkan Definisi Keselamatan Memori Ketika Kerajaan Menggalakkan Penggunaan

Galakan kerajaan baru-baru ini untuk bahasa pengaturcaraan yang selamat memori telah mencetuskan perdebatan teknikal yang sengit dalam kalangan pembangun mengenai apa yang sebenarnya membentuk keselamatan memori. Walaupun agensi seperti NSA dan CISA menyokong bahasa seperti Rust , Java , dan C# untuk mengurangkan kelemahan keselamatan, komuniti pengaturcaraan mempersoalkan sama ada definisi rasmi tersebut cukup tepat.

Statistik Keselamatan Utama:

  • 67% daripada kelemahan zero-day yang ditemui pada tahun 2021 berkaitan dengan keselamatan memori
  • Peratusan ini kekal konsisten sepanjang 20 tahun yang lalu
  • Kelemahan keselamatan memori mewakili salah satu kelas terbesar isu keselamatan perisian

Kekeliruan Data Race

Titik perbalahan utama tertumpu kepada sama ada perlindungan data race perlu dianggap sebagai sebahagian daripada keselamatan memori. Pengkritik berhujah bahawa dokumen kerajaan tidak konsisten dalam menangani keperluan ini. Bahasa seperti Java dan C# disenaraikan sebagai selamat memori walaupun membenarkan data race, manakala dokumen kadang-kadang mencadangkan bahawa kebebasan data race diperlukan untuk keselamatan memori yang sebenar.

Perdebatan ini mendedahkan perselisihan asas mengenai keutamaan keselamatan. Sesetengah pembangun berhujah bahawa data race dalam bahasa yang dikumpul sampah jarang membawa kepada kelemahan yang boleh dieksploitasi, menjadikannya kurang kritikal berbanding pepijat kerosakan memori tradisional seperti buffer overflow. Yang lain berpendapat bahawa data race boleh mencipta lubang keselamatan yang serius, menunjukkan contoh seperti kelemahan double-spending dalam aplikasi kewangan di mana operasi serentak boleh merosakkan baki akaun.

Nota: Data race berlaku apabila berbilang thread mengakses memori berkongsi secara serentak tanpa penyegerakan yang betul, berpotensi membawa kepada tingkah laku program yang tidak dapat diramalkan.

Bahasa Pengaturcaraan Selamat Memori yang Disenaraikan dalam Dokumen Kerajaan:

  • Ada
  • C
  • Delphi/Object Pascal
  • Go
  • Java
  • Python
  • Ruby
  • Rust
  • Swift

Penyelesaian Alternatif Diabaikan

Perbincangan komuniti juga menyerlahkan kekecewaan dengan tumpuan sempit kepada bahasa selamat memori arus perdana. Sesetengah pembangun menunjukkan projek eksperimen seperti Fil-C , yang bertujuan untuk menjadikan kod C sedia ada selamat memori melalui pengubahsuaian pengkompil dan pemeriksaan masa jalan. Walaupun projek sedemikian menghadapi cabaran penggunaan disebabkan overhed prestasi dan sokongan institusi yang terhad, penyokong berhujah bahawa mereka layak mendapat lebih pertimbangan untuk pangkalan kod warisan.

Pertukaran prestasi kekal sebagai titik perbalahan. Penyelesaian yang menambah keselamatan memori kepada C biasanya memperkenalkan penalti prestasi 20-50%, menjadikannya tidak sesuai untuk aplikasi kritikal prestasi. Walau bagaimanapun, penyokong berhujah bahawa kebanyakan perisian tidak cukup sensitif prestasi untuk membenarkan risiko keselamatan.

Pertukaran Prestasi:

  • Fil-C (penyelesaian keselamatan memori C eksperimen): 20-50% overhed prestasi
  • Penyelesaian perkakasan seperti CHERI menawarkan overhed yang lebih rendah tetapi memerlukan perkakasan khusus
  • Penyelesaian keselamatan memori berasaskan perisian secara amnya mengorbankan prestasi untuk keselamatan

Cabaran Pelaksanaan Praktikal

Selain definisi teori, pembangun bergelut dengan strategi migrasi dunia sebenar. Komuniti mencadangkan untuk memberi tumpuan kepada pendekatan berperingkat, seperti menggantikan kebergantungan tidak selamat dengan alternatif selamat memori untuk komponen kritikal seperti penghurai fail dan pemproses imej. Pendekatan yang disasarkan ini boleh memberikan faedah keselamatan tanpa memerlukan penulisan semula lengkap pangkalan kod yang besar.

Perbincangan juga mendedahkan keraguan mengenai dakwaan ekonomi dalam cadangan kerajaan. Walaupun pegawai mencadangkan bahawa pelaburan dalam bahasa selamat memori akan membuahkan hasil melalui pengurangan kelemahan dan kos penyelenggaraan, pembangun mempersoalkan sama ada faedah ini dijamin merentas semua jenis projek.

Memandang ke Hadapan

Perdebatan mencerminkan ketegangan yang lebih luas antara ideal keselamatan dan kekangan praktikal dalam pembangunan perisian. Walaupun terdapat persetujuan umum bahawa keselamatan memori adalah penting, komuniti kekal berpecah mengenai jalan terbaik ke hadapan. Cabaran terletak pada mengimbangi penambahbaikan keselamatan dengan keperluan prestasi, kos pembangunan, dan realiti mengekalkan sistem sedia ada.

Ketika agensi kerajaan terus menggalakkan penggunaan selamat memori, maklum balas komuniti teknikal mencadangkan bahawa pendekatan yang lebih bernuansa mungkin diperlukan. Daripada mandat yang luas, strategi yang disasarkan yang mengambil kira kes penggunaan dan kekangan khusus mungkin terbukti lebih berkesan dalam benar-benar meningkatkan keselamatan perisian.

Rujukan: Memory Safe Languages: Reducing Vulnerabilities in Modern Software Development