multitiervulnapp

March 25, 2026 · View on GitHub

3-tier vulnerable Django application for VulnReach testing.

Nginx (80) → Django API (8000) → PostgreSQL (5432)

Vulnerable Packages

PackageVersionCVEVulnerable endpoint
Django3.2.0CVE-2021-44420, CVE-2022-22818all
PyYAML5.4.1CVE-2020-14343POST /api/posts/import/
Pillow8.3.1CVE-2021-34552POST /api/images/upload/
requests2.27.1CVE-2023-32681GET /api/fetch-preview/
PyJWT2.3.0CVE-2022-29217POST /api/auth/token/
bleach3.3.0CVE-2021-23980POST /api/content/sanitize/
lxml4.6.5CVE-2022-2309POST /api/feed/parse/
Markdown3.2.2XSSPOST /api/posts/
cryptography36.0.0CVE-2023-49083GET /api/backup/export/

Run Full Stack

cd labs/multitier_vuln_app
docker compose up --build

Scan with VulnReach

# From vulnreach-agent root
curl -X POST http://localhost:8000/scan \
  -H 'Content-Type: application/json' \
  -d '{
    "repo_path": "labs/multitier_vuln_app",
    "config_path": "labs/multitier_vuln_app/scan.yml"
  }'

Expected: ~9 packages with CVEs → 7–8 DYNAMICALLY_REACHABLE (all packages have routed endpoints that exercise them under Schemathesis fuzzing).