Ternyata C/C++ Terdapat Bug Besar Dan Mengapa?

0
810

Bugs dan eksploitasi seperti Heartbleed, WannaCry, dan Zero-Day mungkin tampak tidak berhubungan pada pandangan pertama, tetapi semuanya berasal dari masalah yang umum dalam bahasa pengkodean populer seperti C dan C ++.

Menurut laporan oleh Motherboard , masalah ini termasuk kategori kesalahan yang disebut “ketidaksamanan memori,” yang ada dalam bahasa pemrograman lama seperti C / C ++.

Apa itu Memory Unsafety dalam bahasa pemrograman?

Alex Gaynor memberi contoh program yang memiliki daftar 10 angka. Secara teoritis, dalam acara di mana seseorang meminta elemen ke-11, program ini diharapkan untuk menampilkan kesalahan semacam itu, atau setidaknya itulah yang bahasa pemrograman “memori aman” (seperti Python atau Java) akan lakukan.

Namun, dalam kasus bahasa yang tidak aman memori seperti C / C ++, program mencari elemen ke-11 di mana pun seharusnya (jika ada) dan mengakses isinya. Ini disebut kerentanan “buffer-overflow” yang dieksploitasi oleh bug seperti HeartBleed untuk mengakses hingga 60 KB data melewati akhir daftar – yang sering kali menyertakan kata sandi dan data sensitif lainnya.

Dan ini bukan satu-satunya. Ada berbagai jenis kerentanan keamanan tidak aman dengan C / C ++ seperti:

  • Ketik kebingungan: itu mencampur jenis nilai yang ada di suatu tempat di memori
  • Gunakan setelah gratis: ia menggunakan sepotong memori bahkan setelah Anda selesai menggunakannya
  • Penggunaan memori yang tidak terinisialisasi: menggunakan sepotong memori bahkan sebelum Anda menyimpan sesuatu di dalamnya.

Bagian terburuknya adalah kerentanan ini lazim dalam perangkat lunak yang banyak digunakan seperti Firefox, Chrome, Windows, Android, dan iOS.

Jadi mengapa kita masih menggunakan C/C ++?

Saat ini, kami memiliki bahasa pemrograman baru yang aman seperti Python, Java, Rust, dan Swift. Tetapi mereka digunakan dalam sejumlah proyek dan perangkat lunak yang relatif lebih kecil.

Proyek-proyek perangkat lunak penting Linux, OpenSSL, dan server web Apache sudah berumur puluhan tahun, dan mereka telah berkembang secara besar-besaran seiring waktu. Menulis ulang mereka dalam bahasa baru adalah tugas yang sangat sulit.

Proyek raksasa semacam itu perlu dimigrasi secara bertahap, tetapi sekali lagi, itu membutuhkan banyak waktu dan uang. Ini juga berarti bahwa perubahan radikal akan diperlukan dalam tim pengembangan perangkat lunak di seluruh perusahaan di seluruh dunia – yang merupakan kendala lain.

Tetapi di atas semua, alasan utama adalah bahwa tidak ada calon coder yang menganggap aspek keamanan suatu bahasa saat memilih bahasa pemrograman untuk belajar. Itu tidak diajarkan di lembaga pendidikan juga.

Di sisi lain, pengembang tidak ingin berurusan dengan itu juga, karena banyak dari mereka percaya bahwa itu bukan bahasa itu sendiri, yang salah, melainkan para insinyur lain yang menulis kode buggy.