2020年3月更新:請參閱令人驚嘆的PYSA教程,該教程應該使您能夠加快在Python代碼庫中查找安全漏洞的速度。
來自Facebook的Pyre是一個了不起的項目,擁有光明的未來,許多聰明的人在為此。我建議,如果您對程序分析不太了解,那麼您就會了解Pyt在潛入Pyre之前的工作方式。與大多數目錄中的Readme一起,還有原始的主題論文和一些幻燈片。話雖如此,我很樂意審查拉的請求,如果您獲得了少數幾個,請給您寫入權限。
這個項目有很多偉大的貢獻者,我計劃從事其他項目,例如檢測銷售和其他項目(例如Pyre),如果您想更多地一起工作:)
如果您是沒有類型註釋的Python代碼庫的安全工程師,則Pyre無法處理,我建議您用安全的包裝器(Defusedxml之類的東西)替換水槽,並提醒標準水槽的任何用途。您可以使用強盜來執行此操作,因為不需要數據流量分析,但是由於高陽性速率,您必須將其修剪得很多。
基於理論基礎(控制流程圖,固定點,數據流分析)的Python Web應用程序的靜態分析
有關最近的更改,請參閱ChangElog。
示例用法和輸出:
在繼續之前,請確保安裝了Python3.6或3.7。
pip install python - taint
?PYT也可以從源安裝。為此,請克隆回購,然後運行:
python3 setup . py install 很快,您將在pyt/文件夾中的每個目錄中找到一個readme.rst,從這裡開始。
-a選項確定哪些函數將污染其參數,默認情況下是燒瓶。
使用-t選項來指定源和接收器,默認情況下使用此文件。
對於內置或庫中的函數,例如url_for或os.path.join ,請使用-m選項指定它們是否返回給定污染輸入的污染值,默認情況下使用此文件。
用法:python -m pyt [-h] [-a apapter] [-pr project_root]
[-b baseline_json_file] [-j] [-t trigger_word_file]
[-M blackbox_mapping_file] [-i] [-o output_file]
[-ignore-nosec] [-r] [-x ubluded_paths]
[-dont-prepend-root] [ - 非局部 - 進象]
目標[目標...]
必需的參數:
目標源文件或要掃描目錄的目標文件
重要的可選論點:
-a適配器, - 適配器適配器
選擇一個Web框架適配器:燒瓶(默認),
django,每個或塔
-t trigger_word_file, - trigger-word-file trigger_word_file
輸入文件,其中包括來源和彙的列表
-M BlackBox_mapping_file,-blackbox-Mapping-File Blackbox_mapping_file
輸入黑框映射文件
可選參數:
-pr project_root,-project-root project_root
添加項目根,僅在輸入文件時很重要
不是項目的根源。
-b baseline_json_file, - 基線基線_json_file
比較基線報告的路徑(僅
接受JSON形式的文件)
-j, - json打印JSON而不是報告。
-i, - 交互式會詢問您有關每個BlackBox函數的呼叫
脆弱性鏈。
-o output_file, - 輸出output_file
將報告寫入文件名
-ignore-nosec不要跳過#nosec評論
-r, - 求職者中的查找和處理文件中的文件
-x排除d_paths, - exclude excluded_paths
帶有逗號的單獨文件
- 項目root EG /APP中的dont-prepend-root,未培養導入
使用應用程序。 *
- 非本地進像如果設置,則絕對導入必須相對於
項目根。如果未設置,則相同的模塊
目錄只能通過其名稱導入。
使用它像用戶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]先生
指南
創建一個目錄以持有虛擬環境和項目
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即可開始開發。