CVE-2026-59800: 9router before 0.4.44 allows unauthenticated remote OS command execution via the /api/tunnel/tailscale-install endpoint by injecting shell commands in the sudoPassword field when sudo does not prompt for a password.
CVE-2026-59800 is verified against 9router (npm) · npm affected versions: < 0.4.44 (advisory states <= v0.4.39) fixed version: 0.4.44 (GitHub advisory page); OSV lists 0.4.45 as fixed range vulnerability class: Command Injection This critical reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00270.
pruva-verify REPRO-2026-00270 curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00270/artifacts/bundle/repro/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh An unauthenticated POST to /api/tunnel/tailscale-install in 9router (<0.4.44) can trigger OS command injection. The endpoint is not covered by the dashboard middleware matcher, so no authorization checks are applied. The sudoPassword field is written to stdin of a sudo -S sh child process; if sudo does not prompt for a password (running as root, NOPASSWD configured, or a recent sudo timestamp), the value is interpreted by sh as shell input, enabling arbitrary command execution.
Variant analysis
The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired. Phases: support triages the advisory · repro reproduces it · vuln_variant confirms the fix blocks it · judge verifies.
Loading session...
Scripts, logs, diffs, and output captured during the reproduction.