Brakeman adalah alat analisis statis yang memeriksa ruby pada aplikasi rails untuk kerentanan keamanan.
Menggunakan Rubygems:
gem install brakeman
Menggunakan Bundler:
group :development do
gem 'brakeman' , require : false
endMenggunakan Docker:
docker pull presidentbeef/brakeman
Menggunakan Docker untuk membangun dari sumber:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Dari direktori root aplikasi rel:
brakeman
Di luar Root Rel:
brakeman /path/to/rails/application
Dari direktori root aplikasi rel:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Dengan warna yang sedikit lebih bagus:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Untuk laporan HTML:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Di luar root rail (perhatikan bahwa file output relatif terhadap path/to/rails/aplikasi):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman harus bekerja dengan versi rel dari 2.3.x ke 7.x.
Brakeman dapat menganalisis kode yang ditulis dengan sintaks Ruby 2.0 dan yang lebih baru, tetapi membutuhkan setidaknya Ruby 3.0.0 untuk dijalankan.
Untuk daftar lengkap opsi, gunakan brakeman --help atau lihat file options.md.
Untuk menentukan file output untuk hasilnya:
brakeman -o output_file
Format output ditentukan oleh ekstensi file atau dengan menggunakan opsi -f . Opsi saat ini adalah: text , html , tabs , json , junit , markdown , csv , codeclimate , dan sonar .
Beberapa file output dapat ditentukan:
brakeman -o output.html -o output.json
Untuk mengeluarkan ke file dan ke konsol, dengan warna:
brakeman --color -o /dev/stdout -o output.json
Untuk menekan peringatan informasi dan hanya menghasilkan laporan:
brakeman -q
Catatan Semua output Brakeman kecuali laporan dikirim ke Stderr, membuatnya mudah untuk mengarahkan kembali stdout ke file dan hanya mendapatkan laporan.
Untuk melihat semua jenis informasi debugging:
brakeman -d
Cek spesifik dapat dilewati, jika diinginkan. Nama itu harus menjadi kasus yang benar. Misalnya, untuk melewatkan mencari rute default ( DefaultRoutes ):
brakeman -x DefaultRoutes
Beberapa cek harus dipisahkan oleh koma:
brakeman -x DefaultRoutes,Redirect
Untuk melakukan yang sebaliknya dan hanya menjalankan serangkaian tes tertentu:
brakeman -t SQL,ValidationRegex
Jika Brakeman berjalan agak lambat, coba
brakeman --faster
Ini akan menonaktifkan beberapa fitur, tetapi mungkin akan jauh lebih cepat (saat ini sama dengan --skip-libs --no-branching ). Peringatan : Ini dapat menyebabkan Brakeman kehilangan beberapa kerentanan.
Secara default, Brakeman akan mengembalikan kode keluar nol jika ada peringatan keamanan yang ditemukan atau kesalahan pemindaian ditemui. Untuk menonaktifkan ini:
brakeman --no-exit-on-warn --no-exit-on-error
Untuk melewatkan file atau direktori tertentu yang mungkin dikerjakan oleh Brakeman, gunakan: Gunakan:
brakeman --skip-files file1,/path1/,path2/
Untuk membandingkan hasil pemindaian dengan pemindaian sebelumnya, gunakan opsi output JSON dan kemudian:
brakeman --compare old_report.json
Ini akan menghasilkan JSON dengan dua daftar: salah satu peringatan tetap dan salah satu peringatan baru.
Brakeman akan mengabaikan peringatan jika dikonfigurasi untuk melakukannya. Secara default, ia mencari file konfigurasi di config/brakeman.ignore . Untuk membuat dan mengelola file ini, gunakan:
brakeman -I
Jika Anda ingin sementara melihat peringatan yang Anda abaikan tanpa mempengaruhi kode keluar, gunakan:
brakeman --show-ignored
Lihat Warning_Types untuk informasi lebih lanjut tentang peringatan yang dilaporkan oleh alat ini.
Format output HTML memberikan kutipan dari sumber aplikasi asli di mana peringatan dipicu. Karena pemrosesan yang dilakukan saat mencari kerentanan, sumbernya mungkin tidak menyerupai peringatan yang dilaporkan dan nomor baris yang dilaporkan mungkin sedikit mati. Namun, konteksnya masih memberikan pandangan cepat ke dalam kode yang mengangkat peringatan.
Brakeman memberikan tingkat kepercayaan untuk setiap peringatan. Ini memberikan perkiraan kasar tentang seberapa pasti alat tersebut adalah bahwa peringatan yang diberikan sebenarnya menjadi masalah. Secara alami, peringkat ini tidak boleh dianggap sebagai kebenaran absolut.
Ada tiga tingkat kepercayaan:
Untuk hanya mendapatkan peringatan di atas tingkat kepercayaan yang diberikan:
brakeman -w3
Sakelar -w mengambil angka dari 1 ke 3, dengan 1 rendah (semua peringatan) dan 3 menjadi tinggi (hanya peringatan kepercayaan diri tertinggi).
Opsi Brakeman dapat disimpan dan dibaca dari file YAML.
Untuk menyederhanakan proses penulisan file konfigurasi, opsi -C akan menghasilkan opsi yang ditetapkan saat ini:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/Opsi yang dilewati pada CommandLine memiliki prioritas daripada file konfigurasi.
Lokasi konfigurasi default adalah ./config/brakeman.yml , ~/.brakeman/config.yml , dan /etc/brakeman/config.yml
Opsi -c dapat digunakan untuk menentukan file konfigurasi untuk digunakan.
Ada plugin yang tersedia untuk Jenkins/Hudson.
Untuk pengujian yang lebih berkelanjutan, coba plugin penjaga.
Ada beberapa tindakan github yang tersedia.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
..dan lebih banyak!
Situs web: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Obrolan: https://gitter.im/presidentbeef/brakeman
Brakeman gratis untuk penggunaan non-komersial.
Lihat Menyalin untuk detailnya.