2020年3月の更新:Pythonコードベースのセキュリティの脆弱性を見つけるためのスピードを上げる必要がある素晴らしいPysaチュートリアルをご覧ください。
FacebookのPyreは、明るい未来とそれに取り組んでいる多くの賢い人々を持つ素晴らしいプロジェクトです。プログラム分析についてあまり知らない場合は、Pytがパイアに飛び込む前にどのように機能するかを理解することをお勧めします。ほとんどのディレクトリのReadmeのものとともに、元のマスターの論文といくつかのスライドがあります。そうは言っても、いくつか以上を作成した場合、プルリクエストを確認し、書き込み許可を提供していただけます。
このプロジェクトには多くの優れた貢献者がいました。私は、あなたがもっと一緒に働きたいなら、将来的には秘密のDetect-Secretsなどの他のプロジェクト(最終的にはPyreなど)に取り組むことを計画しています:)
たとえば、タイプの注釈なしでPythonコードベースを備えたセキュリティエンジニアである場合、Pyreが処理しない場合は、シンクを安全なラッパー(DefusedXMLのようなもの)に置き換え、標準シンクの使用をオフにします。データフロー分析は必要ないため、Banditを使用してこれを行うことができますが、高い偽陽性レートのため、それを大いにトリミングする必要があります。
理論的基礎に基づいたPython Webアプリケーションの静的分析(コントロールフローグラフ、固定点、データフロー分析)
最近の変更を見るには、Changelogをご覧ください。
使用法と出力の例:
継続する前に、Python3.6または3.7がインストールされていることを確認してください。
pip install python - taint
?PYTはソースからインストールすることもできます。そうするために、リポジトリをクローンしてから実行します。
python3 setup . py install すぐにpyt/フォルダー内のすべてのディレクトリにreadme.rstがあります。ここから開始します。
-aオプションは、どの関数が引数を汚染するかを決定します。デフォルトではフラスコです。
-tオプションを使用してソースとシンクを指定します。デフォルトでは、このファイルが使用されます。
BuiltinsまたはLibrariesの関数については、 url_forまたはos.path.joinなど、 -mオプションを使用して、デフォルトでこのファイルが使用されている場合、汚染された入力が与えられたインプットが含まれている場合に汚染された値を返すかどうかを指定します。
使用法:python -m pyt [-h] [-a adapter] [-pr project_root]
[-b baseline_json_file] [-j] [-t trigger_word_file]
[-m blackbox_mapping_file] [-i] [-o output_file]
[-ignore-nosec] [-r] [-x explued_paths]
[-dont-prendy-root] [ - ノーローカルインポート]
ターゲット[ターゲット...]
必要な議論:
スキャンするソースファイルまたはディレクトリをターゲットにします
重要なオプションの引数:
-adapter、-adaptorアダプター
Webフレームワークアダプターを選択してください:Flask(デフォルト)、
Django、すべてまたはパイロン
-t trigger_word_file、-trigger-word-file trigger_word_file
ソースとシンクのリストを含む入力ファイル
-m blackbox_mapping_file、-blackbox-mapping-file blackbox_mapping_file
Blackboxマッピングファイルを入力します
オプションの引数:
-pr project_root、-project-root project_root
プロジェクトルートを追加します。エントリファイルの場合にのみ重要です
プロジェクトの根源にはありません。
-b baseline_json_file、-baseline baseline_json_file
比較するベースラインレポートのパス(のみ
JSON-Formattedファイルは受け入れられます)
-j、-jsonはレポートの代わりにjsonを印刷します。
-i、 - interactiveは、各ブラックボックス関数の呼び出しについて尋ねます
脆弱性チェーン。
-o output_file、-output output_file
ファイル名にレポートを書きます
-ignore-nosec#nosecコメントで行をスキップしないでください
-r、 - サブディレクトリの再回帰検索およびプロセスファイル
-x exclued_paths、-exclude explued_paths
コンマでファイルを分離します
- プロジェクトルートEG /APPのドントプリデントルート、インポートは準備されていません
アプリ付き。*
-no-local-importsセットの場合、絶対的な輸入はに関連している必要があります
プロジェクトルート。設定されていない場合、同じモジュール
ディレクトリは、名前だけでインポートできます。
ユーザーpython3 -m pyt examples/vulnerable_code/XSS_call.pyのように使用します
python3 -m testsをテストします
個々のテストファイルを実行するpython3 -m unittest tests.import_test実行します
個々のテストpython3 -m unittest tests.import_test.ImportTest.test_importを実行します
Slackグループに参加してください:https://pyt-dev.slack.com/-招待を求めてください:[email protected]
ガイドライン
仮想envとプロジェクトを保持するディレクトリを作成する
mkdir ~/a_folder
cd ~/a_folder
プロジェクトをディレクトリにクローンします
git clone https://github.com/python-security/pyt.git
仮想環境を作成します
python3 -m venv ~/a_folder/
適切なバージョンがあることを確認してください
python3 --versionサンプル出力Python 3.6.0
pip --versionサンプル出力pip 9.0.1 from /Users/kevinhock/a_folder/lib/python3.6/site-packages (python 3.6)
プロジェクトディレクトリに変更します
cd pyt
将来的には、 source ~/a_folder/bin/activate開発を開始します。