DRYDOCK is a local-only tool. The server binds to 127.0.0.1 and is not
designed to be exposed to a network. Do not bind it to 0.0.0.0 or place it
behind a reverse proxy without adding authentication.
Protections in place for the localhost deployment model:
- Host header validation (TrustedHost middleware) blocks DNS-rebinding attacks against the local API.
- Security headers (CSP, nosniff, frame-ancestors none, no-referrer) on all responses.
- Decompression limits on zip inputs (24 MB per entry, 256 MB per archive) block zip-bomb resource exhaustion.
- Output encoding on every user-influenced value in both the web UI and the generated evidence report.
- Bounded regex surfaces on untrusted workflow content.
- Rate limiting on scan endpoints with bounded tracker memory.
- Inputs are parsed in memory only — never written to disk, never extracted to the filesystem (no zip path-traversal surface).
- Scanned files are untrusted input by design; parsers use
yaml.safe_loadand the standard-library JSON parser only. - The optional online mode transmits package
(name, ecosystem, version)tuples to OSV.dev over HTTPS — nothing else, ever. See PRIVACY.md.
Please report suspected vulnerabilities privately via the repository's GitHub Security Advisories ("Report a vulnerability") rather than public issues. Reports will be acknowledged as quickly as possible; please include reproduction steps. Coordinated disclosure is appreciated.