Pembaruan Maret 2020 : Silakan lihat tutorial PYSA yang luar biasa yang seharusnya membuat Anda siap menemukan kerentanan keamanan dalam basis kode Python Anda.
Pyre dari Facebook adalah proyek luar biasa yang memiliki masa depan yang cerah dan banyak orang pintar yang mengerjakannya. Saya akan menyarankan, jika Anda tidak tahu banyak tentang analisis program, bahwa Anda memahami cara kerja PYT sebelum menyelam ke Pyre. Seiring dengan readme di sebagian besar direktori, ada tesis master asli dan beberapa slide. Dengan itu, saya senang meninjau permintaan tarik dan memberi Anda izin menulis jika Anda membuat lebih dari beberapa.
Ada banyak kontributor hebat untuk proyek ini, saya berencana mengerjakan proyek lain seperti detect-secrets dan lainnya (misalnya Pyre Pyre) di masa depan jika Anda ingin bekerja sama lebih banyak :)
Jika Anda seorang insinyur keamanan dengan misalnya basis kode Python tanpa anotasi tipe, pyre yang tidak akan ditangani, saya sarankan Anda mengganti wastafel Anda dengan pembungkus yang aman (sesuatu seperti DefusedXML), dan mengingatkan semua penggunaan wastafel standar. Anda dapat menggunakan Bandit untuk melakukan ini karena analisis DataFlow tidak diperlukan, tetapi Anda harus sering memotongnya, karena tingginya tingkat positif palsu.
Analisis Statis Aplikasi Web Python Berdasarkan Yayasan Teoritis (Grafik Aliran Kontrol, Titik Tetap, Analisis DataFlow)
Untuk melihat perubahan terbaru, silakan lihat changelog.
Contoh Penggunaan dan Output:
Sebelum melanjutkan, pastikan Anda menginstal Python3.6 atau 3.7.
pip install python - taint
?PYT juga dapat diinstal dari sumber. Untuk melakukannya, klon repo, lalu jalankan:
python3 setup . py install Segera Anda akan menemukan readme.rst di setiap direktori di pyt/ folder, mulailah di sini.
Opsi -a menentukan fungsi mana yang akan membuat argumen mereka ternoda, secara default itu adalah Flask.
Gunakan opsi -t untuk menentukan sumber dan wastafel, secara default file ini digunakan.
Untuk fungsi dari builtins atau pustaka, misalnya url_for atau os.path.join , gunakan opsi -m untuk menentukan apakah mereka mengembalikan nilai -nilai ternoda yang diberikan input ternoda, secara default file ini digunakan.
Penggunaan: python -m pyt [-h] [-a adaptor] [-pr proyek_root]
[-B baseline_json_file] [-j] [-t trigger_word_file]
[-M blackbox_mapping_file] [-i] [-o output_file]
[--ignore-nosec] [-r] [-x tidak termasuk_paths]
[--dont-prepend-root] [---no-local-imports]
Target [target ...]
Argumen yang Diperlukan:
Target file sumber atau direktori yang akan dipindai
Argumen opsional yang penting:
-A adaptor, --adaptor adaptor
Pilih Adaptor Kerangka Web: Flask (default),
Django, setiap atau tiang
-t trigger_word_file, --trigger-word-file trigger_word_file
File input dengan daftar sumber dan wastafel
-M blackbox_mapping_file, --blackbox-mapping blackbox_mapping_file
Masukkan file pemetaan blackbox
Argumen opsional:
-pr Project_root, --Project-Root Project_root
Tambahkan Root Proyek, hanya penting saat file entri
tidak merupakan akar proyek.
-B baseline_json_file, --baseline baseline_json_file
Jalur laporan dasar untuk dibandingkan dengan (hanya
File yang diformat JSON diterima)
-J, --json mencetak json bukan laporan.
-I, --Pelaktifkan akan bertanya tentang setiap panggilan fungsi Blackbox
rantai kerentanan.
-o output_file, -output output_file
Tulis Laporan ke Nama File
--ignore-nosec Jangan lewati baris dengan komentar # nosec
-r, - -Proses File Rekursif dalam Subdirektori
-x tidak termasuk_paths, --Exclude Excluded_paths
Pisahkan file dengan koma
--dont-prepend-root dalam root proyek EG /APP, impor tidak ada di muka
dengan aplikasi.*
--No-Local-Imports jika ditetapkan, impor absolut harus relatif terhadap
root proyek. Jika tidak diatur, modul dalam hal yang sama
Direktori dapat diimpor hanya dengan nama mereka.
Menggunakannya seperti pengguna python3 -m pyt examples/vulnerable_code/XSS_call.py
Menjalankan Tes python3 -m tests
Menjalankan file uji individu python3 -m unittest tests.import_test
Menjalankan tes individu python3 -m unittest tests.import_test.ImportTest.test_import
Bergabunglah dengan grup Slack kami: https://pyt-dev.slack.com/ - minta undangan: [email protected]
Pedoman
Buat direktori untuk memegang env dan proyek virtual
mkdir ~/a_folder
cd ~/a_folder
Klon proyek ke direktori
git clone https://github.com/python-security/pyt.git
Buat lingkungan virtual
python3 -m venv ~/a_folder/
Periksa apakah Anda memiliki versi yang tepat
python3 --version Python 3.6.0
pip --version sampel output pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
Ubah ke Direktori Proyek
cd pyt
Di masa depan, cukup ketik source ~/a_folder/bin/activate untuk mulai berkembang.