如何在Python应用程序中查找安全漏洞?

前言

Spectrum的最新研究表明,Python在今年排名第一。

image

我们相信python核心代码是安全的,但是第三方模块(开发应用程序的方式)却不一定,这就是我们使用安全扫描工具寻找漏洞的原因。有许多全面的在线安全扫描工具可以在线测试,但是它们无法检测特定于平台的漏洞,比如 Python,Node.js等等 。

下面是一些用于发现Python应用程序中的安全漏洞的扫描工具推荐

PYT

这是一个开源静态分析工具,可检测Python Web应用程序中的命令注入,比如跨站点脚本,SQL注入,目录遍历攻击等。

项目地址:

Bandit

Bandit是Open Stack的开源项目,旨在发现python代码中的常见安全风险。它处理每个python文件以构建AST,最后会生成扫描报告。

我们可以使用pip安装它。Bandit的用法可以自定义。例如,默认情况下会针对所有配置文件进行测试,但是,如果我们只想检查ShellInjection,则可以尝试以下操作

bandit samples/*.py -p ShellInjection

同时,我们还可以设置严重性(低,中或高)级别来生成报告。

项目地址:

Pyntch

Pyntch仅支持Python 2.x,是一种静态代码分析器,用于检测运行时可能出现的错误。这个工具并不是完全可以发现风险,但是对于运行时的异常发现很有作用,因为异常发生的时候,有可能会泄漏敏感信息。

这个工具的效率不错,它能够在一分钟内扫描几千行。

项目地址:

Spaghetti

一个基于python的开源扫描程序,用于发现配置错误,不安全的文件以及支持像CherryPy,CakePHP等Web框架的扫描。

Spaghetti 能够发现各种攻击,包括:

  • 暴力破解
  • 信用卡、电子邮件、IP 等敏感信息
  • HTML/SQL/LDAP/XPATH/XSS注入
  • ShellShock, Crime, Struts-shock 等
  • 匿名密码

RATS

RATS 能够对于 Python,PHP,Perl,C ++等代码进行粗略分析,并突出显示与安全相关的错误,包括:

  • 检查时间
  • 使用时间
  • 缓冲区溢出

项目地址:

Acunetix

这是一个比较全面的漏洞扫描平台,可以测试网络和Web应用程序。Acunetix会检测被测站点上是否存在5000多个漏洞,并提供详细的报告以及修复方案。

image

如果我们的Python Web应用程序暴露在Internet上,并且正在寻求深入的安全分析,可以尝试使用Acunetix。

项目地址:

Requires

这款工具不是扫描程序,而是利用Requires.io监视Python依赖关系的安全性,并在发现过时或易受攻击时通知扫描者。

项目地址:

Safety

Safety 是 python依赖项检查器,可以扫描本地虚拟环境,需求文件以及 stdin 输入中的安全性问题。

项目地址:

结论

希望上面列出的工具可以帮助大家发现Python应用程序中的安全风险

注:本文翻译自https://geekflare.com/find-python-security-vulnerabilities/

4 个赞

大概就是开源的py代码审计工具?

1 个赞

是的 不过有的工具不专门是审计 PY 的