Sumber: Unsplash (Markus Spiske)
Pengujian adalah bagian penting dari siklus pengembangan perangkat lunak. Ada banyak jenis pengujian, yang masing-masing menyelesaikan masalahnya sendiri. Hari ini saya ingin berbicara tentang menemukan masalah keamanan dalam kode.
Jelas, dalam realitas modern pengembangan perangkat lunak, penting untuk memastikan keamanan proses. Pada suatu waktu, istilah khusus DevSecOps bahkan diperkenalkan. Istilah ini mengacu pada sejumlah prosedur yang ditujukan untuk mengidentifikasi dan menghilangkan kerentanan dalam 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, misalnya, pengujian keamanan aplikasi statis (SAST), pengujian keamanan aplikasi dinamis (DAST), pengujian keamanan aplikasi interaktif (IAST), analisis komponen perangkat lunak (Analisis Komposisi Perangkat Lunak), dan sebagainya.
Pengujian keamanan aplikasi statis mendeteksi bug dalam kode yang sudah tertulis. Pendekatan ini tidak memerlukan menjalankan aplikasi, oleh karena itu disebut analisis statis.
Saya akan fokus pada analisis kode statis dan menggunakan alat open source sederhana untuk mendemonstrasikan semuanya dalam praktik.
Mengapa saya memilih alat analisis keamanan kode statis open source
Ada beberapa alasan untuk 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 perusahaan rintisan, Anda memiliki peluang besar untuk menghemat uang dengan menggunakan perangkat lunak sumber terbuka untuk menguji keamanan basis kode Anda. Kedua, Anda tidak perlu repot menyewa tim DevSecOps terpisah, sehingga mengurangi biaya Anda.
Alat open source yang baik selalu dibuat dengan mempertimbangkan peningkatan fleksibilitas. Oleh karena itu, mereka dapat digunakan di hampir semua lingkungan, yang mencakup berbagai tugas. Jauh lebih mudah bagi pengembang untuk membuat alat tersebut berteman dengan sistem yang telah mereka bangun saat mengerjakan proyek mereka.
Tetapi mungkin ada situasi di mana Anda membutuhkan fitur yang tidak tersedia di alat yang Anda pilih. Dalam hal ini, Anda memiliki kesempatan untuk mem-fork kodenya dan mengembangkan alat Anda sendiri dengan fungsionalitas yang Anda butuhkan.
Karena dalam banyak kasus pengembangan perangkat lunak open source secara aktif dipengaruhi oleh komunitas, keputusan untuk membuat perubahan dibuat dengan cukup cepat dan langsung pada intinya: pengembang proyek open source mengandalkan umpan balik dan saran dari pengguna, pada laporan bug dan masalah lainnya.
Menggunakan Graudit untuk Menganalisis Keamanan Kode
Untuk analisis kode statis, Anda dapat menggunakan berbagai alat open source, tidak ada alat universal untuk semua bahasa pemrograman. Beberapa dari mereka mengikuti pedoman OWASP dan mencoba untuk mencakup bahasa sebanyak mungkin.
Di sini kita akan menggunakan Graudit , utilitas baris perintah sederhana yang memungkinkan kita menemukan kerentanan dalam basis kode kita. Ini mendukung bahasa yang berbeda, tetapi set mereka masih terbatas. Graudit dikembangkan atas dasar utilitas grep utilitas, yang dirilis di bawah lisensi GNU.
Ada alat serupa untuk analisis kode statis - Alat Audit Kasar untuk Keamanan (RATS), Alat Analisis Aplikasi Web Securitycompass (SWAAT), flawfinder, dan sebagainya. Tetapi Graudit sangat fleksibel dan memiliki persyaratan teknis minimal. Namun, Anda mungkin mengalami masalah yang tidak dapat diselesaikan oleh Graudit. Kemudian Anda dapat mencari opsi lain di sini di daftar ini .
Kami dapat mengintegrasikan alat ini ke dalam proyek tertentu, atau membuatnya tersedia untuk pengguna yang dipilih, atau menggunakannya secara bersamaan di semua proyek kami. Di sinilah Graudit fleksibel. Jadi mari kita kloning repo dulu:
$ git clone https://github.com/wireghoul/graudit
Sekarang mari kita buat symlink untuk Graudit untuk digunakan dalam format perintah
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Tambahkan alias ke .bashrc (atau file konfigurasi apa pun yang Anda gunakan):
#------ .bashrc ------
alias graudit="~/bin/graudit"
Mulai 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.
Saya akan menguji salah satu proyek saya yang sudah ada. Sebelum menjalankan alat tersebut, alat harus meneruskan database yang sesuai dengan bahasa yang digunakan untuk 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 mengeluarkan informasi tentang kerentanan dalam kode saya ke konsol:
Anda dapat mencoba menguji proyek Anda dengan cara yang sama. Daftar database untuk berbagai bahasa pemrograman dapat ditemukan di sini .
Keuntungan dan kerugian dari Graudit
Graudit mendukung banyak bahasa pemrograman. Oleh karena itu, ini cocok untuk berbagai macam pengguna. Itu dapat bersaing dengan rekan yang gratis atau berbayar. Dan sangat penting bahwa perbaikan terus dilakukan pada proyek, dan komunitas tidak hanya membantu pengembang, tetapi juga pengguna lain yang mencoba mencari tahu alat tersebut.
Ini adalah alat yang praktis, tetapi sejauh ini tidak selalu dapat menunjukkan dengan tepat apa masalahnya, terkait dengan potongan kode yang mencurigakan. Para pengembang terus menyempurnakan Graudit.
Namun bagaimanapun, akan berguna untuk memperhatikan potensi masalah keamanan dalam kode Anda menggunakan alat tersebut.
Mulailah...
Pada artikel ini, saya hanya mempertimbangkan satu dari banyak cara untuk menemukan kerentanan - pengujian keamanan aplikasi statis. Analisis kode statis itu mudah, tetapi ini baru permulaan. Untuk mempelajari lebih lanjut tentang keamanan basis kode Anda, Anda perlu mengintegrasikan jenis pengujian lain ke dalam siklus pengembangan perangkat lunak.
Periklanan
VPS yang andal dan pilihan paket tarif yang tepat akan memungkinkan Anda untuk mengurangi gangguan dari pengembangan oleh masalah yang tidak menyenangkan - semuanya akan bekerja dengan lancar dan dengan waktu kerja yang sangat tinggi!
