Bandit是一个旨在查找Python代码中常见安全问题的工具。待办事项 这个 Bandit 处理每个文件,从中构建一个 AST,并运行适当的 针对 AST 节点的插件。一旦强盗完成扫描所有文件 它会生成一个报告。
Bandit最初是在OpenStack安全项目中开发的, 后来重新安置到PyCQA。
Bandit目前提供了40条检查规则。在使用初期可以使用推荐配置,避免过多的警告造成无从下手改进。随着推荐规则跑得很顺的情况下,可以尝试更多的规则组合来改进代码规范和发现潜在缺陷。
使用gui配置工具
使用gui配置工具,可以让配置bandit规则更简单。
在凌鲨(linksaas)的微应用里面可以找到bandit配置工具,快速对bandit进行配置。
凌鲨(linksaas)是以开源方式运作的,您可以从jihulab.com/linksaas 访问源代码。也可以从 linksaas.pro 下载预编译的版本。
附录
检查规则
- B101 断言使用测试
- B102 exec的使用测试
- B103 设置文件权限的测试
- B104 测试是否绑定到所有网络接口
- B105 测试硬编码密码字符串的使用
- B106 测试硬编码密码函数参数的使用
- B107 测试是否使用硬编码密码参数默认值
- B108 测试tmp目录的不安全使用情况
- B109 测试未标记为机密的基于密码的配置选项
- B110 测试在except块中是否存在pass
- B111 测试是否使用以root身份运行的rootwrap
- B112 测试是否在except块中存在continue
- B113 测试丢失的请求超时
- B201 在调试设置为true的情况下测试flask的使用
- B202 测试tarfile.extractall的使用
- B324 测试hashlib中不安全的md4、md5或sha1哈希函数的使用
- B501 缺少证书验证的测试
- B502 使用错误版本测试SSL使用情况
- B503 使用指定的错误默认值测试SSL使用情况
- B504 在未指定版本的情况下测试SSL的使用
- B505 弱加密密钥使用测试
- B506 yaml.load使用测试
- B507 测试是否缺少主机密钥验证
- B508 检查不安全的SNMP版本
- B509 检查弱加密
- B601 使用Paramiko测试脚本注入
- B602 使用shell测试popen等于true
- B603 测试是否使用不带shell的子进程等于true
- B604 测试shell等于true的任何函数
- B605 用shell启动进程的测试
- B606 no shell启动进程的测试
- B607 用部分路径启动进程的测试
- B608 SQL注入测试
- B609 通配符注入的使用测试
- B610 额外函数上潜在的SQL注入
- B611 RawSQL函数上潜在的SQL注入
- B612 测试logging.config.listen的不安全使用
- B701 在jinja2中进行非自动excaping测试
- B702 mako模板的使用测试
- B703 mark_safe函数上潜在的XSS