Security policy
Supported versions
The main branch
and the latest release
are supported with security updates.
Reporting a vulnerability
For issues that should not be public before a fix exists, mail dosbox-automation-project@trinity2k.net. You will get a human reply.
For everything else, raise a bug report. We believe in open technical discourse about security; findings, analysis, and patches are welcome in public.
Security model in short
For further details, see the full description in the manual: https://dosbox-automation.org/0.84-da3/automation/security/.
The REST API gives full control over the emulated machine, which makes the webserver an attack surface by design. The short version:
- Every API request needs a bearer token (64-char random hex, fresh per start, never fully logged, constant-time comparison). No default credential, no way to disable authentication.
- The webserver binds to localhost only by default. Host header validation rejects DNS rebinding. No CORS headers are set, OPTIONS preflight is refused. Request bodies are capped.
- Every MOUNT, BOOT, and drive-swap path is validated before a drive is constructed: paths must resolve, symlink components are rejected, system directories are blocked, and disk images must pass structural validation. With the webserver enabled, directory mounts are whitelist-restricted, and a one-way mount lock can freeze the mount configuration until restart. Whitelists are read from the primary config only, so a bundled game config cannot widen them.
- Lua scripts run sandboxed: no filesystem or process access, bytecode rejected, dangerous globals removed, instruction and pattern-complexity limits against runaway scripts.
If a security fix changes any of this, this file and the manual page above are updated together with the fix.