Sobelow adalah alat analisis statis yang berfokus pada keamanan untuk Elixir & The Phoenix Framework. Untuk peneliti keamanan, ini adalah alat yang berguna untuk mendapatkan pandangan cepat tentang titik-titik kepentingan. Untuk pengelola proyek, ini dapat digunakan untuk mencegah pengenalan sejumlah kerentanan umum.
Saat ini Sobelow mendeteksi beberapa jenis masalah keamanan berikut:
Kerentanan potensial ditandai dalam berbagai warna sesuai dengan kepercayaan pada rasa tidak aman mereka. Keyakinan tinggi berwarna merah, kepercayaan sedang berwarna kuning, dan kepercayaan diri rendah berwarna hijau.
Temuan biasanya ditandai "kepercayaan diri rendah" jika terlihat seperti fungsi dapat digunakan secara tidak aman, tetapi tidak dapat secara andal ditentukan jika fungsi tersebut menerima input yang disediakan pengguna. yaitu jika suatu temuan ditandai hijau, itu mungkin sangat tidak aman, tetapi akan membutuhkan validasi manual yang lebih besar.
Catatan: Proyek ini terus -menerus dikembangkan, dan kerentanan tambahan akan ditandai seiring berjalannya waktu. Jika Anda menemukan bug, atau ingin meminta fitur tambahan atau cek keamanan, buka masalah!
Untuk menggunakan Sobelow, Anda dapat menambahkannya ke dependensi aplikasi Anda.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endAnda juga dapat menginstal Sobelow secara global dengan mengeksekusi yang berikut dari baris perintah:
$ mix escript.install hex sobelow
Untuk menginstal dari cabang master, daripada rilis terbaru, perintah berikut dapat digunakan:
$ mix escript.install github nccgroup/sobelow
Setelah instalasi, cara paling sederhana untuk memindai proyek Phoenix adalah dengan menjalankan yang berikut dari root proyek:
$ mix sobelow
Catatan: Argumen jalur apa pun harus merupakan jalur absolut, atau relatif terhadap root aplikasi.
--root atau -r -Tentukan direktori root aplikasi. Menerima argumen jalur, misalnya ../my_project .
--verbose atau -v -Cetak cuplikan kode dan detail temuan tambahan.
--ignore atau -i -abaikan tipe penemuan yang diberikan. Menerima daftar nama modul yang dipisahkan secara koma, misalnya XSS.Raw,Traversal .
--ignore-files -Abaikan file. Menerima daftar nama file yang dipisahkan koma, misalnya config/prod.exs .
--details atau -d -Dapatkan detail tipe temuan. Menerima nama modul tunggal, misalnya Config.CSRF .
--all-details -Dapatkan detail dari semua jenis temuan.
--private -Lewati Periksa Pembaruan.
--router -Tentukan lokasi router. Ini hanya perlu digunakan jika lokasi router tidak standar. Menerima argumen jalan, misalnya my/strange/router.ex .
--exit -Mengembalikan status keluar nol pada atau di atas ambang kepercayaan low , medium , atau high . Default ke false yang mengembalikan status keluar nol
--threshold -Kembalikan temuan pada atau di atas tingkat kepercayaan low (default), medium , atau high .
--format atau -f -Tentukan format output temuan. Menerima format, misalnya txt atau json .
Perhatikan bahwa opsi seperti --verbose tidak akan bekerja dengan format json . Semua temuan yang diformat json berisi type , file , dan kunci line . Kunci lain dapat bervariasi.
--quiet -Kembalikan satu baris yang menunjukkan jumlah temuan. Kalau tidak, kembalikan tidak ada output jika tidak ada temuan.
--compact -Minimal, temuan baris tunggal dengan output yang diwarnai menurut kepercayaan.
--flycheck -Temuan minimal, satu baris yang kompatibel dengan tooling berbasis flycheck.
--save-config -Menghasilkan file konfigurasi berdasarkan opsi baris perintah. Lihat file konfigurasi untuk informasi lebih lanjut.
--config -Jalankan Sobelow dengan file konfigurasi. Lihat file konfigurasi untuk informasi lebih lanjut.
--mark-skip-all -Tandai semua temuan yang ditampilkan sebagai skippable.
--clear-skip -Konfigurasi Hapus Dibuat oleh --mark-skip-all .
--skip -Abaikan temuan yang telah ditandai untuk dilewati. Lihat positif palsu untuk informasi lebih lanjut.
--version -Keluarkan versi Sobelow saat ini. Ini berguna untuk langkah -langkah CI atau integrasi dengan alat lain seperti Salus.
Sobelow memungkinkan pengguna untuk menyimpan opsi yang sering digunakan dalam file konfigurasi. Misalnya, jika Anda terus berjalan:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
Anda dapat menggunakan flag --save-config untuk membuat file konfigurasi .sobelow-conf : Anda:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
Perintah ini akan membuat file .sobelow-conf di root aplikasi Anda. Anda dapat mengedit file ini secara langsung untuk membuat perubahan.
Anda juga dapat menjalankan perintah tanpa opsi apa pun:
$ mix sobelow --save-config
Saat pertama kali Anda mulai menggunakan paket ini - file konfigurasi yang dihasilkan akan diisi dengan nilai default untuk setiap opsi. (Ini membantu dengan cepat memasukkan paket ini ke dalam basis kode yang sudah ada sebelumnya.)
Sekarang jika Anda ingin menjalankan Sobelow dengan konfigurasi yang disimpan, Anda dapat menjalankan Sobelow dengan bendera --config .
$ mix sobelow --config
Sobelow mendukung pelaporan yang berlebihan versus pelaporan yang kurang. Dengan demikian, Anda dapat menemukan sejumlah positif palsu dalam pemindaian khas. Temuan ini dapat diabaikan secara individual dengan menambahkan komentar # sobelow_skip , bersama dengan daftar modul, sebelum definisi fungsi.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end Saat mengintegrasikan Sobelow ke dalam proyek baru, mungkin ada sejumlah besar positif palsu. Untuk menandai semua temuan yang dicetak sebagai positif palsu, jalankan Sobelow dengan bendera --mark-skip-all .
Setelah Anda menandai temuan yang sesuai, jalankan Sobelow dengan bendera --skip .
$ mix sobelow --skip
Sementara komentar # sobelow_skip hanya dapat menandai temuan tingkat fungsi (dan karenanya tidak dapat digunakan untuk melewatkan masalah konfigurasi), bendera --mark-skip-all dapat digunakan untuk melewatkan jenis temuan apa pun.
Kategori temuan dipecah menjadi modul. Modul -modul ini kemudian dapat digunakan untuk mengabaikan kelas temuan (melalui opsi ignore dan skip ) atau untuk mendapatkan detail kerentanan (melalui opsi details ).
Daftar ini, dan informasi bermanfaat lainnya, dapat ditemukan di baris perintah:
$ mix help sobelow
Untuk menjalankan Sobelow terhadap semua aplikasi anak dalam aplikasi payung dengan satu perintah, Anda dapat menambahkan alias untuk Sobelow di file root mix.exs Anda:
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end Jika Anda ingin menggunakan file konfigurasi di aplikasi payung, buat .sobelow-conf di setiap aplikasi anak dan gunakan-bendera --config .
Saat memindai proyek, Sobelow sesekali akan memeriksa pembaruan, dan akan mencetak peringatan jika versi baru tersedia. Sobelow melacak periksa pembaruan terakhir dengan membuat file .sobelow di root proyek yang dipindai.
Jika fungsi ini tidak diinginkan, bendera --private dapat digunakan dengan pemindaian.