Bahasa pemrograman mana yang paling tidak aman?



Sebuah tinjauan dari WhiteSource menunjukkan bahasa pemrograman mana yang memiliki lubang keamanan terbesar. Pemenang anti-rating adalah C. Tapi ini baru permulaan cerita.

Teknologi secara keseluruhan diisi dengan bug keamanan. Pada level rendah, ini adalah kesalahan pada perangkat keras. Begitu pula dengan kesalahan kerentanan dan momok Intel. Sedikit lebih tinggi adalah lubang dalam keamanan bahasa pemrograman. Dan ada banyak dari mereka!

Baru-baru ini, OpenSource WhiteSource, sebuah perusahaan keamanan, melakukan penelitian kerentanan dalam tujuh bahasa pemrograman paling umum dalam sepuluh tahun terakhir. Perusahaan menggunakan basis data keamanan bahasa untuk mendeteksi kesalahan. Ini berisi kerentanan sumber terbuka dari beberapa sumber, seperti National Vulnerability Database (NVD), instruksi keamanan, pelacak GitHub`a, dan proyek sumber terbuka.

Perusahaan mengidentifikasi bahasa berikut: C, Java, JavaScript, Python, Ruby, PHP, dan C ++. Dan ini tidak mengejutkan. Seperti bahasa mana yang memiliki kesalahan keamanan paling banyak. Dengan margin lebar, ini adalah X. Lebih dari 50% kerentanan yang terdeteksi ada di dalamnya.

Sebagai Kees β€œCase” Cook, seorang insinyur keamanan kernel Linux Linux di Google, baru-baru ini mencatat: β€œC adalah assembler yang ditingkatkan. Hampir sebuah kode mesin. " Selain itu, "C membawa bagasi yang merepotkan, perilaku yang tidak jelas, dan kelemahan lainnya yang menyebabkan kesenjangan dalam kerentanan keamanan dan infrastruktur."

Namun, WhiteSource mengklaim bahwa β€œAnda tidak bisa mengatakan bahwa C kurang aman daripada bahasa lain. Sejumlah besar kerentanan dalam kode C sumber terbuka dapat dijelaskan oleh sejumlah faktor. Sebagai permulaan, C telah digunakan lebih lama dari bahasa lain yang kami jelajahi. Ini memiliki jumlah kode terbesar yang ditulis. Ini juga salah satu bahasa di balik infrastruktur penting seperti OpenSSL dan kernel Linux. Kombinasi volume dan posisi tengah ini menjelaskan sejumlah besar kerentanan sumber terbuka yang dikenal. "

WhiteSource memahami maksudnya. Tetapi, meskipun sudah puluhan tahun pemrograman dan berurusan dengan C, sebenarnya ada beberapa cara dalam bahasa ini untuk membuat kesalahan keamanan yang terlalu mudah. Misalnya, ada sejumlah besar contoh perilaku tidak terdefinisi dalam C, yang membuka peluang untuk semua jenis masalah.

Pada saat yang sama, C ++ menjadi terkenal karena kerentanan tingkat bahaya tertinggi selama lima tahun terakhir. Kesalahan penyangga yang mewabah C untuk waktu yang lama sering terdeteksi di C ++.


Angka-angka tidak mencerminkan keseluruhan gambar, jika kita berbicara tentang bahasa mana yang paling atau paling tidak dilindungi.
(Gambar WhiteSource)

Yang sedang berkata, JavaScript mungkin bahasa yang paling populer. Dan satu-satunya yang menunjukkan "peningkatan terus-menerus dalam jumlah kerentanan selama 10 tahun terakhir."

WhiteSource menekankan bahwa sebelum mengejek JavaScript, harap perhatikan bahwa hasil ini menyesatkan. Sebagian besar Pencacahan Kelemahan Umum dalam JavaScript terdiri dari melampaui direktori yang ditentukan dan lubang-lubang dalam perlindungan kriptografis dari paket JavaScript yang jarang digunakan dan didukung.

Lalu mengapa ini dan masalah bahasa lainnya terlihat? Program otomatis baru, seperti Alat Analisis Kode Sumber, menemukan kerentanan yang jika tidak akan diabaikan.

Satu-satunya bahasa yang telah menunjukkan dirinya dengan baik mengenai lubang keamanan adalah (drum roll!) - Python. Ya, Python tua yang baik sering diejek

Hampir semua bahasa berkontribusi pada Daftar Kerentanan Umum. Dua kesalahan dari daftar memimpin dan dilaporkan dalam 70% kasus: Crossite Scripting (XSS), juga dikenal sebagai CWE-79 dan Validasi Input Tidak Memadai (CWE-20).

Kesalahan umum lainnya: Kebocoran / Pengungkapan (CWE-200), direktori Out of bounds (CWE-22) dan CWE-264 - Izin, hak istimewa dan kontrol akses. Yang terakhir baru-baru ini telah digantikan oleh kerabat yang lebih spesifik dan dekat - Kontrol Akses yang Tidak Benar (CWE-284).

Tapi apakah C benar-benar yang terburuk dan Python yang terbaik? WhiteSource percaya bahwa ini adalah kesimpulan yang terlalu sederhana: "Meskipun permainan" Bahasa pemrograman saya lebih aman daripada milik Anda "jelas merupakan cara yang menyenangkan untuk menghabiskan waktu ... jawabannya tampaknya tidak membantu Anda membuat perangkat lunak yang lebih inovatif atau aman."

Sebaliknya, Anda harus menghabiskan lebih banyak waktu "tetap berada di ujung tombak kerentanan sumber terbuka, memahami kekuatan dan kelemahan bahasa pemrograman yang Anda dan tim Anda gunakan."

Pada akhirnya, keamanan datang bukan ke bahasa pemrograman, tetapi pada bagaimana Anda menggunakannya.

β†’ AKSI: Diskon 40% pada IaaS untuk pengembang.

Steven J. Vaughan-Nichols untuk Linux dan Open Source

Artikel asli

Source: https://habr.com/ru/post/id445422/


All Articles