# ==============================================
# Bandit 安全门禁专用配置
# 功能:仅检测用户指定的安全规则
# ==============================================
severity_level: MEDIUM
confidence_level: MEDIUM
# 扫描时直接跳过的目录
exclude_dirs: [tests, test, venv, .venv, build, dist, migrations, __pycache__, ci]
# ==============================================
# 【白名单】只开启你明确指定的安全规则
# ==============================================
tests:
# --- SQL 注入 ---
- B608 # 禁止使用不可信数据拼接 SQL 语句
# --- 命令注入 ---
- B602 # 禁止调用 OS 命令解析器(如 os.popen, os.system 等)
- B605 # 不安全的子进程调用(启动 shell 进程)
- B607 # 启动带有部分可控参数的子进程(shell=True 风险)
# --- 反序列化漏洞 ---
- B301 # 禁止对不可信数据进行 pickle 反序列化
# --- 加密安全 ---
- B306 # 禁止使用弱加密算法(如 DES, RC4 等)
- B321 # 禁止使用弱哈希算法(如 MD5, SHA1 等)
# --- 敏感信息泄露 ---
- B108 # 禁止将敏感信息(如临时文件路径)暴露在异常或日志中
- B110 # 禁止在 except 块中使用 pass(可能导致异常被静默吞掉,掩盖安全问题)
# ==============================================
# 【黑名单】明确跳过不需要扫描的规则
# ==============================================
skips:
# --- 代码风格与调试 ---
- B101 # 断言语句(assert)的使用(生产环境可能被优化掉)
- B102 # 使用 exec()(已在白名单 B307 中管控,此处跳过避免重复)
- B103 # 设置文件权限为可写(os.chmod)
- B104 # 绑定到所有接口(0.0.0.0)
# --- 代码质量与异常处理 ---
- B201 # 使用 Flask 的 debug=True
- B202 # tarfile 提取文件时的路径遍历风险
# --- 密码学与随机数 ---
- B302 # 序列化(pickle, cPickle, dill, shelve)
- B303 # 使用弱加密哈希函数(MD5, SHA1)(已在白名单 B321 中管控)
- B304 # 使用弱密码加密模式(如 ECB)
- B305 # 使用不安全的密码加密函数(如 cipher.encrypt)
- B308 # 在 mark_safe 中使用非安全字符串
- B311 # 使用标准库 random 生成伪随机数(不用于加密场景)
# --- 网络与协议安全 ---
- B401 # 导入 telnetlib(不安全的远程连接协议)
- B402 # 导入 ftplib(不安全的文件传输协议)
- B403 # 导入 pickle, cPickle, dill, shelve(已在白名单 B301 中管控)
- B404 # 导入 subprocess 模块
- B405 # 导入 xml.etree.ElementTree(存在 XML 外部实体注入风险)
- B406 # 导入 xml 相关的库(如 sax, expat)
- B407 # 导入 xml 相关的库(如 pulldom)
- B408 # 导入 xml 相关的库(如 minidom)
- B409 # 导入 xml 相关的库(如 lxml)
- B410 # 导入 lxml(存在 XML 外部实体注入风险)
- B411 # 导入 XMLRPC 相关的库(如 xmlrpclib)
- B412 # 导入不安全的 HTTP 库(如 httplib, requests)
- B413 # 导入不安全的加密库(如 pycrypto)
- B415 # 导入不安全的加密库(如 pyghmi)
# --- Web 框架安全 ---
- B501 # 请求带有 verify=False(跳过 SSL 证书验证)
- B502 # 使用弱 SSL/TLS 版本(如 SSLv2, SSLv3, TLSv1)
- B503 # 使用弱 SSL/TLS 版本(如 TLSv1.0, TLSv1.1)
- B504 # 使用弱 SSL/TLS 版本(如 TLSv1.2 但使用了不安全的密码套件)
- B505 # 使用弱加密算法(如 DES, RC2, RC4, MD5, SHA1)
- B506 # 使用弱加密算法(如 YAML load)
- B507 # 使用弱加密算法(如 SSH 无主机密钥校验)
- B508 # 使用弱加密算法(如 SSH 无主机密钥校验)
- B509 # 使用弱加密算法(如 SNMP v1, v2)
# --- 其他 ---
- B601 # 使用 paramiko 的 exec_command(存在命令注入风险)
- B603 # 使用 subprocess 不带 shell=True(存在命令注入风险)
- B604 # 使用 os.popen(存在命令注入风险)
- B606 # 使用 os.startfile(存在命令注入风险)
- B609 # 使用 Linux 命令注入(如 os.system, os.popen)
- B701 # 使用 Jinja2 模板自动转义(存在 XSS 风险)
- B702 # 使用 Mako 模板(存在 XSS 风险)
- B703 # 使用 Django 模板(存在 XSS 风险)