Vulnerable (Pengertian dan Definisi)

Posted on

Dalam keamanan komputer, Vulnerable adalah kelemahan yang dapat dimanfaatkan oleh pelaku ancaman, seperti penyerang, untuk melewati batas hak istimewa (yaitu melakukan tindakan tidak sah) dalam sistem komputer. Untuk mengeksploitasi kerentanan, penyerang harus memiliki setidaknya satu alat atau teknik yang dapat diterapkan yang dapat terhubung ke kelemahan sistem. Dalam bingkai ini, Vulnerable juga dikenal sebagai permukaan serangan.

Vulnerability management adalah praktik siklus yang bervariasi dalam teori tetapi berisi proses umum yang meliputi: menemukan semua aset, memprioritaskan aset, menilai atau melakukan pemindaian kerentanan lengkap, melaporkan hasil, memulihkan kerentanan, memverifikasi perbaikan – ulangi. Praktik ini umumnya mengacu pada kerentanan perangkat lunak dalam sistem komputasi. Manajemen kerentanan yang tangkas mengacu pada pencegahan serangan dengan mengidentifikasi semua kerentanan secepat mungkin.

Risiko keamanan sering salah diklasifikasikan sebagai kerentanan. Penggunaan kerentanan dengan arti risiko yang sama dapat menimbulkan kebingungan. Risiko merupakan potensi dampak yang signifikan yang dihasilkan dari pemanfaatan suatu kerentanan. Lalu ada kerentanan tanpa risiko: misalnya ketika aset yang terkena dampak tidak memiliki nilai. Kerentanan dengan satu atau beberapa kejadian yang diketahui dari serangan yang berfungsi dan diterapkan sepenuhnya diklasifikasikan sebagai kerentanan yang dapat dieksploitasi — kerentanan yang untuknya terdapat eksploitasi. Jendela kerentanan adalah waktu dari saat lubang keamanan diperkenalkan atau dimanifestasikan dalam perangkat lunak yang diterapkan, hingga saat akses dihapus, perbaikan keamanan tersedia/diterapkan, atau penyerang dinonaktifkan — lihat serangan zero-day.

Bug keamanan (cacat keamanan) adalah konsep yang lebih sempit. Ada kerentanan yang tidak terkait dengan perangkat lunak: kerentanan perangkat keras, situs, personel adalah contoh kerentanan yang bukan merupakan bug keamanan perangkat lunak.

Konstruksi dalam bahasa pemrograman yang sulit digunakan dengan benar dapat menunjukkan kerentanan dalam jumlah besar.

Bahasa Pemrograman Yang Paling Rentan (Vulnerable)

WhiteSource, yang menghasilkan platform keamanan sumber terbuka dan kepatuhan lisensi, baru-baru ini mencoba menjawab pertanyaan itu. Pertama, ia mempersempit daftar bahasa pemrograman open-source menjadi tujuh bahasa populer: C, Java, JavaScript, Python, Ruby, PHP, dan C ++. Selanjutnya, ia menggali database kerentanan open-source miliknya sendiri (dikumpulkan dari sumber-sumber seperti GitHub dan National Vulnerability Database (NVD)).

Kesimpulan organisasi: C adalah bahasa sumber terbuka yang paling rentan, dengan 47 persen dari semua kerentanan yang dilaporkan. PHP berada di urutan kedua, dengan 17 persen, diikuti oleh Java dengan 12 persen, dan JavaScript membulatkan tiga teratas dengan 11 persen.

“Tingginya jumlah kerentanan open source di C dapat dijelaskan oleh beberapa faktor,” tambah organisasi itu dalam sebuah posting blog. “Sebagai permulaan, C telah digunakan lebih lama daripada bahasa lain yang kami teliti dan memiliki volume kode tertulis tertinggi. Ini juga salah satu bahasa di balik infrastruktur utama seperti Open SSL dan kernel Linux. Kombinasi terbaik antara volume dan sentralitas ini menjelaskan tingginya jumlah kerentanan open source yang diketahui di C. ”

Dalam proses penyelidikannya, WhiteSource juga menemukan sesuatu yang menarik terkait dengan penemuan kerentanan. “Ada satu tren yang menonjol di semua bahasa, dan itu adalah peningkatan substansial dalam jumlah kerentanan keamanan sumber terbuka yang diketahui di semua bahasa selama dua tahun terakhir,” tambah postingan tersebut. “Peningkatan ini dapat dijelaskan dengan meningkatnya kesadaran akan kerentanan keamanan yang diketahui dalam komponen open source, bersama dengan popularitas open source yang terus meningkat.”

Bug bounty, di mana ribuan ahli teknologi memilih melalui situs perusahaan untuk menemukan kerentanan, adalah alasan potensial lain mengapa jumlah lubang keamanan yang diketahui terus meningkat dalam beberapa tahun terakhir. Tetapi tren kenaikan itu juga menimbulkan pertanyaan yang meresahkan: berapa banyak dari kerentanan terbuka ini yang benar-benar ditangani secara tepat waktu?

Bagi para profesional teknologi, peningkatan kerentanan berpotensi membuktikan hal yang sangat baik — asalkan mereka memiliki keterampilan dan pengalaman untuk membasmi bug tersebut kapan pun (dan di mana pun) muncul. Ada banyak pekerjaan keamanan siber yang tidak terisi, tetapi banyak yang menuntut sertifikasi seperti CEH (Certified Ethical Hacker) atau CISA (Certified Information Security Auditor), serta keterampilan mutakhir.

“Tim keamanan informasi saat ini harus mampu mengatasi berbagai macam masalah dan situasi mulai dari melawan dan bertahan dari serangan siber hingga berpartisipasi dalam upaya perencanaan manajemen risiko dari tim bisnis organisasi mereka,” Nathan Wenzler, direktur senior Cybersecurity di Moss Adams , sebuah firma akuntansi, konsultasi dan manajemen kekayaan yang berbasis di Seattle, baru-baru ini mengatakan kepada Dice. “Ini berarti menemukan staf yang terlatih dari berbagai disiplin ilmu untuk menjadi bagian dari upaya program keamanan yang lengkap. Untungnya, ada banyak program pelatihan dan sertifikasi yang bervariasi untuk membantu membangun keahlian dalam bidang keamanan apa pun yang perlu Anda tangani. ”

Namun, untuk baru memulai dalam keamanan, menemukan dan memanfaatkan bug bounties bisa menjadi cara yang baik untuk membangun pengalaman dan mempelajari keterampilan baru (dan mungkin bahkan mendapatkan sedikit uang tunai).

Pengertian Code Vulnerability

Di dunia saat ini, sistem operasi dan aplikasi terhubung melalui internet dan diperbarui secara rutin. Pembaruan ini untuk sebagian besar waktu tidak dilakukan untuk menambahkan lebih banyak fitur tetapi untuk memperbaiki bug. Ini membuat sistem lebih kuat terhadap virus dan malware yang baru digunakan.

Sayangnya, sebagian besar perangkat lunak tidak memiliki jenis tautan ini dan karenanya membuat mereka rentan terhadap penyusup. Dua cara untuk memastikan bahwa perangkat lunak Anda tidak disusupi adalah dengan mengakses perangkat lunak di setiap mesin untuk mengubah kode setiap kali penyerang muncul atau dengan mengurangi kerentanan kode dalam proses pengembangan Anda.

Kerentanan kode adalah istilah yang terkait dengan keamanan perangkat lunak Anda. Ini adalah kesalahan dalam kode Anda yang menciptakan potensi risiko membahayakan keamanan. Cacat ini akan memungkinkan peretas untuk memanfaatkan kode Anda dengan melampirkan titik akhir untuk mengekstrak data, merusak perangkat lunak Anda atau lebih buruk lagi, menghapus semuanya. Meskipun Anda merasa bahwa hal ini terjadi sangat tidak disukai, data dari Contrast Security mengatakan bahwa sekitar 76% aplikasi mengandung setidaknya satu kerentanan. 34% mengandung lebih dari empat kerentanan.

Sejumlah besar kegagalan mengejutkan dari seorang pengembang yang pasti akan menghantui Anda. Kode yang rentan akan membuat pengguna serta pengembang rentan dan sekali dieksploitasi, hanya akan merugikan semua orang.

Setiap 3 dari 4 aplikasi yang digunakan memiliki kerentanan kode

Jadi, jenis kerentanan apa yang mungkin dimiliki kode Anda? Meskipun daftarnya panjang dan terperinci, kami menyebutkan beberapa di antaranya yang paling mungkin terjadi dan juga yang menyebabkan kerusakan paling besar. Kerentanan yang dimiliki perangkat lunak Anda adalah:

Injection:

Cacat injeksi memungkinkan penyerang untuk ‘menginjeksi’ kode ke sistem melalui panggilan sistem sederhana. Panggilan ini umumnya dilakukan menggunakan program eksternal melalui perintah shell. Injeksi dilakukan ke database atau SQL Injeksi adalah yang paling umum dan berbahaya dari semuanya. Biasanya, penyerang menemukan parameter yang melewati database, menggunakan parameter tersebut untuk membawa perintah SQL yang berbahaya sebagai konten. Database menyimpannya dan salah mengartikannya sebagai kode, mengelabui perangkat lunak untuk mengirim, mengubah, atau menghapus database. SQL Injections sangat berbahaya sehingga praktis tidak ada aplikasi web yang aman darinya, karena semuanya bekerja pada perintah eksternal. Yang dapat dilakukan seseorang hanyalah, membuat kode program dengan begitu sempurna sehingga suntikan menjadi lebih kompleks dan karenanya tidak meninggalkan kerentanan.

Cross-Site Scripting (XSS):

Suatu jenis suntikan, namun kami mengklasifikasikannya sebagai suntik mandiri karena korbannya. XSS, seperti namanya, dilakukan di situs web. Skrip berbahaya, umumnya dalam Javascript dan HTML disuntikkan sebagai data ke situs yang dapat dilampirkan sendiri sehingga menyebabkan masalah keamanan. Hampir tidak mungkin browser pengguna mendeteksi skrip semacam itu karena bagi mereka skrip tersebut berasal dari sumber tepercaya. Ini umumnya dilakukan dalam kode yang berisi informasi sensitif seperti nomor kontak Anda atau lebih buruk lagi, detail kartu kredit Anda. Contoh di bawah ini akan membuat XSS lebih jelas.

Buffer Overflow:

Buffer adalah memori sekuensial yang dialokasikan untuk memuat data seperti string atau integer. Pertimbangkan jika buffer ini dibombardir dengan data atau permintaan lebih dari yang dapat ditangani. Ini akan meluap ke penyimpanan yang berdekatan. Limpahan ini dapat menciptakan masalah yang signifikan seperti merusak perangkat lunak Anda, kehilangan data, atau yang paling berbahaya – membuat titik masuk untuk serangan dunia maya. Kerentanan kode ini disebut Buffer Overflow dan bergantung pada bahasa pemrograman ke bahasa. Javascript dan Pearl adalah dua bahasa yang menghindari serangan seperti itu, tetapi bahasa blok penyusun, C dan C ++ sangat terpengaruh sehingga seluruh sistem dapat disusupi. Penyerang melakukan ini biasanya dengan menimpa blok kode jalur eksekusi dalam perangkat lunak. Data mungkin berisi beberapa skrip atau kode yang mungkin meminta perangkat lunak untuk melakukan beberapa aktivitas yang tidak diinginkan.

Broken Authentication:

Naik ke grafik kerentanan kode teratas di OWASP Top 10 ke peringkat kedua, otentikasi Rusak telah menghantui bahkan produk dan situs web teratas selama ini. Kerentanan autentikasi rusak terjadi saat penyerang menggunakan cara berbeda untuk masuk ke akun orang lain. Ini menyebabkan otorisasi palsu dan kemudian hilangnya data sensitif lagi. Meskipun beberapa dari masalah ini bukan kesalahan pengembang, masih menjadi tugas pembuat kode untuk membangun kode yang kuat yang dapat mengatasi masalah tersebut.

Kode menjadi rentan jika tidak ada beberapa verifikasi atau waktu tunggu sesi. Kerentanan kode yang paling umum di aplikasi web adalah saat ID sesi dibuat untuk pengguna dan peretas entah bagaimana mengambil dan menggunakan penulisan ulang URL untuk membuat ulang sesi tersebut. Cara lain adalah jika peretas dapat masuk ke basis data sandi Anda menggunakan kerentanan keamanan lain, dan jika tidak di-hash dan diasinkan dengan benar, seseorang dapat membalikkan pengkodean dan menampilkan sandi semua orang.

Keamanan adalah integritas perangkat lunak Anda, dan kode Anda adalah pelindungnya.

Anda perlu membuat kode yang lebih kuat tanpa lubang untuk mempertahankan perangkat lunak Anda. Jadi setelah membahas empat kerentanan kode yang signifikan, kami bertanya apa cara untuk menguranginya.

Beberapa metode manual yang dapat digunakan pembuat kode adalah:

  1. Gunakan metode hak istimewa paling rendah, yang memberi otorisasi kepada pengguna Anda untuk memiliki izin paling sedikit untuk menggunakan perangkat lunak. Akan membatasi area serangan bagi peretas.
  2. Memiliki keluaran dan tindakan yang sesuai untuk membatasi kasus. Penyerang bertujuan untuk mengacaukan perangkat lunak dengan kode dan skrip yang dikenali perangkat lunak saat dimasukkan dengan mudah tetapi tidak memiliki respons yang ditentukan sebelumnya. Kode Anda harus dapat mengidentifikasi semua jenis masukan dan menolak semua yang berbahaya.
  3. Sertakan alat yang memandu kode sumber Anda dari orang lain. Kode sumber Anda tidak hanya kekayaan intelektual Anda tetapi juga kunci bagi peretas untuk mencari dan mengakses database. Ada banyak alat untuk bahasa pengkodean yang berbeda, misalnya, obfuscator untuk Visual Studio untuk mencegah rekayasa balik, membuat kloning kode sumber Anda menjadi sangat sulit.
  4. Pastikan kode Anda berjalan di kotak pasir yang berbeda tanpa mengorbankan integritasnya menggunakan Keamanan Akses Kode.
  5. Validasi semua masukan dan pengguna. Validasi pengguna perlu memiliki beberapa izin jika aplikasi berfungsi dengan uang dan penyimpanan penting. Memvalidasi data dari semua sumber akan memastikan bahwa serangan injeksi dapat dipertahankan.
  6. Serang kode Anda. Dapatkan kode Anda melalui peretas whitehat untuk memeriksa ketahanannya dan jika mereka menemukan lubang atau kerentanan.
  7. Lakukan peninjauan kode aman untuk semua praktik pengkodean Anda. Ini sangat penting saat mengembangkan perangkat lunak.

Mengikuti metode di atas akan membuat kode Anda tidak terlalu rentan. Tetapi mengamankan kode Anda jauh lebih sulit daripada yang dapat Anda bayangkan. Setiap tahun kerentanan keamanan baru menyebar melalui internet, yang tidak diketahui. Oleh karena itu, penanganannya akan membutuhkan pakar keamanan siber yang terkenal di tim Anda. Memastikan semua metode dan melakukan tinjauan kode aman adalah proses yang memakan waktu dan sangat mahal.

Kesimpulan:

Alternatif yang lebih baik untuk ini adalah menggunakan alat otomatis seperti CodeGrip, yang menganalisis kode Anda dan memindai masalah keamanan apa pun. Ia menemukan kerentanan kode dan menunjukkannya secara terpisah dari masalah lain yang juga ditemukan seperti bau kode dan bug. Semua kerentanan kode dicatat secara terpisah di bawah tab dan juga ditunjukkan di kode Anda. Anda dapat menggunakan solusi yang disarankan untuk mengetahui perubahan apa yang dapat Anda lakukan untuk menghapus kerentanan keamanan. CodeGrip memastikan bahwa kode Anda tetap kuat selama serangan dan tanpa kerentanan keamanan.

Leave a Reply

Your email address will not be published. Required fields are marked *