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即可开始开发。