Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program

Graudit mendukung berbagai bahasa pemrograman dan memungkinkan Anda mengintegrasikan pengujian keamanan basis kode langsung ke dalam proses pengembangan.

Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program
Sumber: Unsplash (Markus Spiske)

Pengujian adalah bagian penting dari siklus hidup pengembangan perangkat lunak. Ada banyak jenis pengujian, masing-masing pengujian memecahkan masalahnya sendiri. Hari ini saya ingin berbicara tentang menemukan masalah keamanan dalam kode.

Jelasnya, dalam realitas pengembangan perangkat lunak saat ini, penting untuk memastikan keamanan proses. Pada suatu waktu, istilah khusus DevSecOps bahkan diperkenalkan. Istilah ini mengacu pada serangkaian prosedur yang bertujuan untuk mengidentifikasi dan menghilangkan kerentanan dalam suatu aplikasi. Ada solusi sumber terbuka khusus untuk memeriksa kerentanan sesuai dengan standar OWASP, yang menjelaskan berbagai jenis dan perilaku kerentanan dalam kode sumber.

Ada beberapa pendekatan berbeda untuk memecahkan masalah keamanan, seperti Pengujian Keamanan Aplikasi Statis (SAST), Pengujian Keamanan Aplikasi Dinamis (DAST), Pengujian Keamanan Aplikasi Interaktif (IAST), Analisis Komposisi Perangkat Lunak, dan sebagainya.

Pengujian keamanan aplikasi statis mengidentifikasi kesalahan dalam kode yang sudah ditulis. Pendekatan ini tidak memerlukan aplikasi untuk dijalankan, oleh karena itu disebut analisis statis.

Saya akan fokus pada analisis kode statis dan menggunakan alat sumber terbuka sederhana untuk mendemonstrasikan semuanya dalam praktik.

Mengapa saya memilih alat sumber terbuka untuk analisis keamanan kode statis

Ada sejumlah alasan untuk hal ini: pertama, gratis karena Anda menggunakan alat yang dikembangkan oleh komunitas orang-orang yang berpikiran sama yang ingin membantu pengembang lain. Jika Anda memiliki tim kecil atau startup, Anda memiliki peluang besar untuk menghemat uang dengan menggunakan perangkat lunak sumber terbuka untuk menguji keamanan basis kode Anda. Kedua, hal ini menghilangkan kebutuhan Anda untuk menyewa tim DevSecOps terpisah, sehingga semakin mengurangi biaya Anda.

Alat open source yang baik selalu dibuat dengan mempertimbangkan peningkatan persyaratan fleksibilitas. Oleh karena itu, mereka dapat digunakan di hampir semua lingkungan, mencakup berbagai tugas. Jauh lebih mudah bagi pengembang untuk menghubungkan alat-alat tersebut dengan sistem yang telah mereka bangun saat mengerjakan proyek mereka.

Namun mungkin ada saatnya Anda membutuhkan fitur yang tidak tersedia di alat yang Anda pilih. Dalam hal ini, Anda memiliki kesempatan untuk membagi kodenya dan mengembangkan alat Anda sendiri berdasarkan kode tersebut dengan fungsionalitas yang Anda perlukan.

Karena dalam banyak kasus, pengembangan perangkat lunak sumber terbuka dipengaruhi secara aktif oleh komunitas, keputusan untuk melakukan perubahan dibuat cukup cepat dan langsung pada sasaran: pengembang proyek sumber terbuka mengandalkan umpan balik dan saran dari pengguna, pada laporan mereka. kesalahan yang ditemukan dan masalah lainnya.

Menggunakan Graudit untuk Analisis Keamanan Kode

Anda dapat menggunakan berbagai alat sumber terbuka untuk analisis kode statis; tidak ada alat universal untuk semua bahasa pemrograman. Pengembang beberapa di antaranya mengikuti rekomendasi OWASP dan mencoba mencakup bahasa sebanyak mungkin.

Di sini kita akan menggunakan Lulusan, utilitas baris perintah sederhana yang memungkinkan kita menemukan kerentanan dalam basis kode kita. Ini mendukung berbagai bahasa, tetapi jangkauannya masih terbatas. Graudit dikembangkan berdasarkan utilitas grep, yang pernah dirilis di bawah lisensi GNU.

Ada alat serupa untuk analisis kode statis - Alat Audit Kasar untuk Keamanan (RATS), Alat Analisis Aplikasi Web Kompas Keamanan (SWAAT), pencari cacat, dan sebagainya. Namun Graudit sangat fleksibel dan memiliki persyaratan teknis yang minimal. Namun, Anda mungkin memiliki masalah yang tidak dapat diselesaikan oleh Graudit. Kemudian Anda dapat mencari opsi lain di sini dalam daftar ini.

Kami dapat mengintegrasikan alat ini ke dalam proyek tertentu, atau membuatnya tersedia untuk pengguna terpilih, atau menggunakannya secara bersamaan di semua proyek kami. Di sinilah fleksibilitas Graudit berperan. Jadi mari kita kloning reponya terlebih dahulu:

$ git clone https://github.com/wireghoul/graudit

Sekarang mari buat tautan simbolis agar Graudit dapat digunakan dalam format perintah

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Mari tambahkan alias ke .bashrc (atau file konfigurasi apa pun yang Anda gunakan):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Menyalakan ulang:

$ source ~/.bashrc # OR
$ exex $SHELL

Mari kita periksa apakah instalasi berhasil:

$ graudit -h

Jika Anda melihat sesuatu yang serupa, maka semuanya baik-baik saja.

Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program

Saya akan menguji salah satu proyek saya yang sudah ada. Sebelum menjalankan alat ini, alat ini harus melewati database yang sesuai dengan bahasa yang digunakan untuk menulis proyek saya. Basis data terletak di folder ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Jadi, saya menguji dua file js dari proyek saya, dan Graudit menampilkan informasi tentang kerentanan dalam kode saya ke konsol:

Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program

Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program

Anda dapat mencoba menguji proyek Anda dengan cara yang sama. Anda dapat melihat daftar database untuk berbagai bahasa pemrograman di sini.

Kelebihan dan Kekurangan Graudit

Graudit mendukung banyak bahasa pemrograman. Oleh karena itu, sangat cocok untuk berbagai macam pengguna. Ini dapat bersaing secara memadai dengan rekan-rekan gratis atau berbayar. Dan sangat penting bahwa perbaikan terus dilakukan pada proyek tersebut, dan komunitas tidak hanya membantu pengembang, tetapi juga pengguna lain yang mencoba memahami alat tersebut.

Ini adalah alat yang berguna, tetapi sejauh ini alat ini tidak selalu dapat menunjukkan dengan tepat apa masalahnya pada bagian kode yang mencurigakan. Para pengembang terus meningkatkan Graudit.

Namun bagaimanapun juga, ada baiknya untuk memperhatikan potensi masalah keamanan dalam kode saat menggunakan alat seperti ini.

Mulai…

Dalam artikel ini, saya hanya membahas salah satu dari banyak cara untuk menemukan kerentanan - pengujian keamanan aplikasi statis. Melakukan analisis kode statis itu mudah, tetapi ini hanyalah permulaan. Untuk mempelajari lebih lanjut tentang keamanan basis kode, Anda perlu mengintegrasikan jenis pengujian lain ke dalam siklus pengembangan perangkat lunak Anda.

Tentang Hak Periklanan

VPS yang andal dan pilihan paket tarif yang tepat akan membuat Anda tidak terlalu terganggu oleh masalah yang tidak menyenangkan dari pengembangan - semuanya akan berjalan tanpa kegagalan dan dengan waktu aktif yang sangat tinggi!

Cara menggunakan utilitas sederhana untuk menemukan kerentanan dalam kode program

Sumber: www.habr.com

Tambah komentar