Skip to content

Security: neatlabs-ai/drydock

Security

SECURITY.md

Security Policy

Threat model

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).

Scope notes

  • Scanned files are untrusted input by design; parsers use yaml.safe_load and 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.

Reporting a vulnerability

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.

There aren't any published security advisories