- VS Code installed
- GitHub Copilot extension (sign in with GitHub account that has Copilot access)
- Snyk extension installed → authenticate at snyk.io (free tier is enough)
- Python 3.11+ installed locally
- Open this entire
devsecops-demo/folder in VS Code (not a single file) - Snyk scans the whole workspace — it needs to see requirements.txt + Dockerfile together
- Keep
scripts/copilot-prompts.mdopen in a split panel on the right
- app/auth.py ← main vulnerable Python file
- app/requirements.txt ← dependency CVEs
- infra/Dockerfile ← IaC misconfigurations
- app/auth_fixed.py ← reveal this at the end
- Snyk panel is open (left sidebar → Snyk icon)
- Run one Snyk scan now so results are cached (faster during demo)
- Copilot Chat panel is open (Ctrl+Shift+I)
- Zoom in VS Code font to 16px+ for visibility (Ctrl + scroll)
- Close all other tabs
auth.py:
- [CRITICAL] SQL Injection — line 30
- [HIGH] Hardcoded Secret — lines 13–15
- [MEDIUM] Use of MD5 for password hashing — line 43
- [HIGH] Insecure Deserialization (pickle) — line 51
requirements.txt:
- [HIGH] flask 1.0.2 — CVE-2018-1000656
- [MEDIUM] requests 2.18.0 — CVE-2018-18074
- [CRITICAL] pyyaml 3.13 — CVE-2017-18342
Dockerfile:
- [MEDIUM] Running as root (no USER instruction)
- [LOW] No HEALTHCHECK defined
- [MEDIUM] Using ADD instead of COPY