SECURITY.md
Rama main · réplica de lectura del repositorio original.
# Security Policy
## Supported versions
Releases are cut as repo-level tags (`v0.1.0`, `v0.2.0`, `v0.3.0`, …), but
only the latest release and the `main` branch are supported — fixes land on
`main` and ride the next tag; nothing is backported. Please report issues
against the latest commit on `main`.
## Before you run an event
If you are standing this kit up rather than reporting an issue with it, walk
the [organizer security checklist](https://owasp.github.io/owasp-ctf-in-a-box/security-checklist.html)
first. Every item on it is a deployment decision the kit cannot make for you,
and most have no visible symptom when they are wrong.
## Reporting a vulnerability
Please use **GitHub's private vulnerability reporting** for this repository
rather than opening a public issue:
1. Go to the repository's **Security** tab.
2. Click **Report a vulnerability**.
3. Describe the issue, the affected component, and steps to reproduce.
This opens a private advisory visible only to maintainers, so the report
stays confidential while a fix is worked out.
Do not report vulnerabilities through public GitHub issues, discussions, or
pull requests.
## What to report here
**OWASP CTF in a Box is a deliberately-vulnerable-by-design *training*
kit.** The target applications it hosts (Juice Shop, DVWA, WebGoat, Security Shepherd,
VulnerableApp, VAmPI, and any future module targets) are **intentionally
vulnerable** — finding and patching their flaws is the point of the exercise.
Please do **not** report vulnerabilities in the target apps themselves here;
those belong with the respective upstream projects.
What we do want reports on is the **kit's own infrastructure** — the code
that operates the event, not the practice targets it hosts:
- `scorer/` — the judge and leaderboard scoring engine
- `sync/` — the poll scoring transport
- `apps/web/` — the contestant web app (auth, teams, admin panel)
- `setup/` — `ctf-setup.sh` and event provisioning
- `deploy/` — the optional cloud deploy modules (IAM roles, security groups,
secrets handling, task definitions and deploy scripts)
- `patches/` — the reference patches shipped for the targets
- `scripts/`, `.github/workflows/` — CI, smoke tests, and automation
Examples of what's in scope: authentication or authorization bypass in the
web app, a way to forge or replay a score submission, a way to escalate
outside your own team's data, secrets handling issues, or a supply-chain
concern in the kit's own build/CI pipeline.
## Known properties, stated so they are not re-reported
- **Jeopardy-module flags and quiz answer keys are stored in plaintext** in
Redis (`ctf:classic:flag`, `ctf:quiz:key`) and are **readable by every
`/admin` user** — the admin edit forms return them verbatim, deliberately,
so an organizer can fix a typo'd flag mid-event. Contestant-facing code
paths never read either key. The secrecy boundary is `/admin` membership
and Redis access, not encryption; organizers should grant admin
accordingly. A bypass that exposes these keys to a **non-admin** is very
much in scope.
- **The scorer runs contestant-submitted code** inside sandboxed containers —
judging submitted code is the product. An escape from that sandbox is in
scope; the fact that it executes submissions is not.
## Response expectations
We aim to:
- Acknowledge a new report within **5 business days**.
- Provide an initial assessment (confirmed, needs more info, or out of scope)
within **10 business days**.
- Keep the reporter updated as a fix is developed, and credit them in the
advisory unless they ask to remain anonymous.
This is a community-maintained project run on a best-effort basis; response
times may vary.