Python Security Scan 是一个用于 Python 项目安全扫描的技能,基于 OWASP 指南、Python 安全最佳实践和框架特定漏洞进行检测,适用于 Flask、Django、FastAPI 应用。
【适用场景】
- Python 应用的安全审计
- 针对安全漏洞的代码审查
- 部署前安全检查
- 依赖漏洞评估
- 检测硬编码密钥与凭据
- 框架特定安全审查(Flask、Django、FastAPI)
【支持的框架】 该技能会自动检测并应用针对以下框架的检查:
- Flask:模板注入、会话安全、CORS、扩展
- Django:ORM 注入、CSRF、模板安全、配置
- FastAPI:依赖注入、Pydantic 校验、OAuth2
- 通用 Python:适用于所有项目的核心语言漏洞
【扫描类型】
- 快速扫描:聚焦关键漏洞,包括硬编码密钥、API 密钥和凭据,危险函数使用(eval、exec、pickle.loads),通过 subprocess、os.system 的命令注入,SQL 注入模式,以及已知存在漏洞的依赖。
- 完整扫描:覆盖全部 OWASP Top 10:2025 类别、Python 特有漏洞、框架特定安全问题、注入漏洞(SQL、NoSQL、命令、LDAP)、不安全反序列化、认证与授权缺陷、加密失败、安全配置错误、依赖审计(CVE 检查)、环境变量与密钥暴露。
- 定向扫描:聚焦特定漏洞类别,可通过参数选择:--injection(SQL/NoSQL/命令/LDAP 注入)、--deserialization(Pickle、YAML、JSON 反序列化)、--auth(认证/授权问题)、--secrets(硬编码凭据)、--deps(依赖漏洞)、--crypto(加密问题)、--flask、--django、--fastapi(框架特定漏洞)。
【扫描流程】
- 项目发现:识别项目类型与框架,检查 requirements.txt、Pipfile、pyproject.toml、setup.py,检测 Flask、Django、FastAPI 特征,定位配置文件,梳理代码库结构。
- 框架检测:依据特征模式(如 Flask 的 "from flask import"、"Flask(name)";Django 的 "django.conf.settings"、"INSTALLED_APPS"、"manage.py";FastAPI 的 "from fastapi import"、"FastAPI()")判断框架。
- 依赖审计:运行 ./scripts/dependency-audit.sh /path/to/project,或手动执行 pip-audit 或 safety check。
- 密钥扫描:运行 python scripts/secret-scanner.py /path/to/project。默认跳过真实 .env 文件(.env、.env.local、.env.production 等),仅分析 .env.example 与 .env.template 以检查文档质量;仅在用户明确要求时使用 --include-env-files。扫描内容包括源代码中的硬编码密钥、.env.example 模板中敏感变量是否被记录、变量是否有注释说明、占位值是否像真实密钥,以及对缺失常见变量(SECRET_KEY、DATABASE_URL 等)的建议。
- 模式分析:对照参考文件检查代码,包括 references/python-vulnerabilities.md、references/injection-patterns.md、references/deserialization.md、references/flask-security.md、references/django-security.md、references/fastapi-security.md。
- 报告生成:使用 assets/report-template.md 生成安全报告。
【严重级别分类】
- CRITICAL:可利用且影响严重,需立即修复
- HIGH:重大安全风险,部署前修复
- MEDIUM:潜在安全问题,下个版本修复
- LOW:次要安全问题,可考虑修复
- INFO:安全最佳实践建议,可选改进
【重点扫描文件】 始终检查:/*.py、requirements.txt、Pipfile、pyproject.toml、setup.py、setup.cfg、config.py、settings.py、/secrets*、/credentials*。 环境文件:.env.example、.env.template 需扫描分析;.env、.env.local、.env.production 默认跳过(含真实密钥)。真实 .env 文件不应提交到版本控制。 高优先级位置:app.py、main.py、wsgi.py、/views.py、/routes.py、/api//*.py、/auth*、/login*、/models.py、/serializers.py、/middleware.py。 框架特定:Flask(app.py、init.py、/blueprints/、templates/);Django(settings.py、/settings/*.py、urls.py、/views.py、/forms.py、templates/);FastAPI(main.py、/routers/、/dependencies.py、**/schemas.py)。
【输出格式】 发现的问题按如下格式报告: [SEVERITY] Category: Description File: path/to/file.py:lineNumber Code: <relevant code snippet> Risk: <explanation of the security risk> Fix: <recommended remediation>
【CI/CD 集成】 该技能可生成兼容以下格式的输出:GitHub Security Advisories、用于 GitHub Code Scanning 的 SARIF 格式、用于自定义集成的 JSON、用于 CI 流水线的 JUnit XML。
【参考资料】 可按需加载:references/owasp-top-10.md、references/python-vulnerabilities.md、references/injection-patterns.md、references/deserialization.md、references/flask-security.md、references/django-security.md、references/fastapi-security.md。