home / skills / sugarforever / 01coder-agent-skills / python-security-scan

python-security-scan skill

/skills/python-security-scan

This skill performs comprehensive Python security scans across Flask, Django, and FastAPI projects, detecting OWASP risks and hardcoded secrets.

npx playbooks add skill sugarforever/01coder-agent-skills --skill python-security-scan

Review the files below or copy the command above to add this skill to your agents.

Files (12)
SKILL.md
7.3 KB
---
name: "Python Security Scan"
description: "Comprehensive security vulnerability scanner for Python projects including Flask, Django, and FastAPI applications. Detects OWASP Top 10 vulnerabilities, injection flaws, insecure deserialization, authentication issues, hardcoded secrets, and framework-specific security problems. Audits dependencies for known CVEs and generates actionable security reports."
---

# Python Security Scan Skill

This skill enables comprehensive security scanning of Python projects based on OWASP guidelines, Python security best practices, and framework-specific vulnerabilities.

## When to Use This Skill

- Security audits of Python applications
- Code review for security vulnerabilities
- Pre-deployment security checks
- Dependency vulnerability assessment
- Detecting hardcoded secrets and credentials
- Framework-specific security reviews (Flask, Django, FastAPI)

## Supported Frameworks

This skill automatically detects and applies framework-specific checks for:

- **Flask** - Template injection, session security, CORS, extensions
- **Django** - ORM injection, CSRF, template security, settings
- **FastAPI** - Dependency injection, Pydantic validation, OAuth2
- **General Python** - Core language vulnerabilities applicable to all projects

## Scan Types

### 1. Quick Scan
Fast scan focusing on critical vulnerabilities:
- Hardcoded secrets, API keys, and credentials
- Dangerous function usage (`eval`, `exec`, `pickle.loads`)
- Command injection via `subprocess`, `os.system`
- SQL injection patterns
- Known vulnerable dependencies

### 2. Full Scan
Comprehensive security assessment covering:
- All OWASP Top 10:2025 categories
- Python-specific vulnerabilities
- Framework-specific security issues
- Injection vulnerabilities (SQL, NoSQL, Command, LDAP)
- Insecure deserialization
- Authentication and authorization flaws
- Cryptographic failures
- Security misconfigurations
- Dependency audit (CVE check)
- Environment variable and secrets exposure

### 3. Targeted Scan
Focus on specific vulnerability categories:
- `--injection` - SQL/NoSQL/Command/LDAP injection
- `--deserialization` - Pickle, YAML, JSON deserialization
- `--auth` - Authentication/authorization issues
- `--secrets` - Hardcoded credentials
- `--deps` - Dependency vulnerabilities
- `--crypto` - Cryptographic issues
- `--flask` - Flask-specific vulnerabilities
- `--django` - Django-specific vulnerabilities
- `--fastapi` - FastAPI-specific vulnerabilities

## Scan Procedure

### Step 1: Project Discovery
1. Identify project type and framework:
   - Check for `requirements.txt`, `Pipfile`, `pyproject.toml`, `setup.py`
   - Detect Flask (`from flask import`), Django (`django.conf`), FastAPI (`from fastapi import`)
2. Locate configuration files
3. Map the codebase structure

### Step 2: Framework Detection
```python
# Detection patterns
Flask: "from flask import", "Flask(__name__)"
Django: "django.conf.settings", "INSTALLED_APPS", "manage.py"
FastAPI: "from fastapi import", "FastAPI()"
```

### Step 3: Dependency Audit
Run the dependency audit script:
```bash
./scripts/dependency-audit.sh /path/to/project
```
Or manually:
```bash
pip-audit
# or
safety check
```

### Step 4: Secret Scanning
Scan for hardcoded secrets:
```bash
python scripts/secret-scanner.py /path/to/project
```

**Important: Environment File Handling**
- By default, real `.env` files are **SKIPPED** (`.env`, `.env.local`, `.env.production`, etc.)
- These files contain actual secrets and should not be in version control
- Only `.env.example` and `.env.template` files are analyzed for documentation quality
- Use `--include-env-files` flag only if explicitly requested by user

The scanner will:
1. Scan source code for hardcoded secrets
2. Analyze `.env.example` templates to check:
   - Which sensitive variables are documented
   - Whether variables have descriptions (comments)
   - If placeholder values look like real secrets
   - Suggestions for missing common variables (SECRET_KEY, DATABASE_URL, etc.)

### Step 5: Pattern Analysis
For each file in the codebase, check against patterns in:
- `references/python-vulnerabilities.md` - Core Python issues
- `references/injection-patterns.md` - Injection flaws
- `references/deserialization.md` - Insecure deserialization
- `references/flask-security.md` - Flask vulnerabilities
- `references/django-security.md` - Django vulnerabilities
- `references/fastapi-security.md` - FastAPI vulnerabilities

### Step 6: Report Generation
Generate a security report using:
- `assets/report-template.md` - Report structure

## Severity Classification

| Severity | Description | Action Required |
|----------|-------------|-----------------|
| CRITICAL | Exploitable vulnerability with severe impact | Immediate fix required |
| HIGH | Significant security risk | Fix before deployment |
| MEDIUM | Potential security issue | Fix in next release |
| LOW | Minor security concern | Consider fixing |
| INFO | Security best practice suggestion | Optional improvement |

## Key Files to Scan

### Always Check
- `**/*.py` - All Python source files
- `requirements.txt`, `Pipfile`, `pyproject.toml` - Dependencies
- `setup.py`, `setup.cfg` - Package configuration
- `config.py`, `settings.py` - Configuration files
- `**/secrets*`, `**/credentials*` - Obvious secret locations

### Environment Files
- `.env.example`, `.env.template` - **SCAN** for template analysis
- `.env`, `.env.local`, `.env.production` - **SKIP** by default (contain real secrets)

**Note:** Real `.env` files should never be committed to version control. The scanner analyzes `.env.example` templates to ensure proper documentation of required variables.

### High Priority Locations
- `app.py`, `main.py`, `wsgi.py` - Entry points
- `**/views.py`, `**/routes.py` - Request handlers
- `**/api/**/*.py` - API endpoints
- `**/auth*`, `**/login*` - Authentication code
- `**/models.py` - Database models
- `**/serializers.py` - Data serialization
- `**/middleware.py` - Middleware code

### Framework-Specific
**Flask:**
- `app.py`, `__init__.py` - Application factory
- `**/blueprints/**` - Blueprint routes
- `templates/**` - Jinja2 templates

**Django:**
- `settings.py`, `**/settings/*.py` - Django settings
- `urls.py` - URL configuration
- `**/views.py` - View functions/classes
- `**/forms.py` - Form definitions
- `templates/**` - Django templates

**FastAPI:**
- `main.py` - Application entry
- `**/routers/**` - API routers
- `**/dependencies.py` - Dependency injection
- `**/schemas.py` - Pydantic models

## Output Format

Findings should be reported as:

```
[SEVERITY] Category: Description
  File: path/to/file.py:lineNumber
  Code: <relevant code snippet>
  Risk: <explanation of the security risk>
  Fix: <recommended remediation>
```

## Integration with CI/CD

This skill can generate output compatible with:
- GitHub Security Advisories
- SARIF format for GitHub Code Scanning
- JSON for custom integrations
- JUnit XML for CI pipelines

## References

Load additional context as needed:
- `references/owasp-top-10.md` - OWASP Top 10:2025 quick reference
- `references/python-vulnerabilities.md` - Python-specific vulnerabilities
- `references/injection-patterns.md` - Injection vulnerability patterns
- `references/deserialization.md` - Insecure deserialization patterns
- `references/flask-security.md` - Flask security guide
- `references/django-security.md` - Django security guide
- `references/fastapi-security.md` - FastAPI security guide

Overview

This skill performs comprehensive security scanning of Python projects, including Flask, Django, and FastAPI apps, to find exploitable issues and misconfigurations. It detects OWASP Top 10 risks, injection and deserialization flaws, authentication problems, hardcoded secrets, and known vulnerable dependencies, then produces actionable reports prioritized by severity. The scanner supports quick, full, and targeted scan modes to fit different audit needs.

How this skill works

The scanner discovers the project type by inspecting dependency files and import patterns, then maps important files and entry points. It runs pattern-based static checks and dependency audits, scans templates and environment examples, and applies framework-specific rules for Flask, Django, and FastAPI. Findings are classified by severity and emitted in a structured report designed for CI integration or developer remediation.

When to use it

  • Pre-deployment security checks for Python services
  • Periodic security audits and code review automation
  • Dependency CVE and supply-chain assessments
  • Detecting hardcoded secrets and unsafe environment handling
  • Targeted checks for injection, deserialization, or auth issues

Best practices

  • Run a Quick Scan in CI for fast feedback and block high-severity findings
  • Use Full Scans before major releases or security reviews
  • Keep real .env files out of version control; scan .env.example templates instead
  • Include dependency auditing (pip-audit or safety) as part of the pipeline
  • Triage findings by severity and fix CRITICAL/HIGH issues before deployment

Example use cases

  • Run a Quick Scan on pull requests to catch secrets, dangerous functions, and known vulnerable deps
  • Perform a Full Scan during release to validate OWASP Top 10 coverage and framework-specific issues
  • Execute a Targeted Scan (--injection, --deserialization, --auth) when investigating a reported incident
  • Audit a monorepo to detect framework types and apply tailored checks per service
  • Generate SARIF or JSON output for integration with GitHub Code Scanning or CI dashboards

FAQ

Does the scanner analyze real .env files?

By default real .env files are skipped to avoid exposing secrets; the scanner analyzes .env.example and .env.template. Use an explicit flag to include real env files only when necessary.

Which report formats are supported?

Reports can be generated as plain structured text, SARIF for GitHub Code Scanning, JSON for custom tooling, or JUnit XML for CI pipelines.

How are severities determined?

Findings are classified as CRITICAL, HIGH, MEDIUM, LOW, or INFO based on exploitability and impact, with remediation guidance for each finding.