modelbeast/server
MODELBEAST 514ec6cdcc Security hardening from adversarial review (5-agent workflow)
Fixed confirmed findings before public exposure:
HIGH:
- upload filename path traversal → store.safe_name() strips to basename
- login rate-limit XFF bypass → key on request.client.host + per-username bucket;
  auth.check_login() burns bcrypt time on unknown users (no enumeration)
- cross-user read access → per-user isolation: guests see/use/download/delete only
  their own assets & jobs (owner sees all); WS job events scoped per-user
MEDIUM:
- unbounded upload read → bounded chunked streaming to the 1GB cap
- asset member path check → Path.is_relative_to boundary + ownership gate
- WS token-in-query-string leak → session-cookie-only WS auth
LOW:
- retry_job bypassed the per-user job cap → cap now checked on retry
- wholesale API-key injection → env_for_operator injects a paid key only to
  operators that declare it (guest local jobs never receive fal/OpenRouter keys)
- session revocation → users.session_epoch, bumped on password change
- int() 500s → 400; net-lane defense-in-depth (guests blocked by requires_env AND
  resources==net, so a mis-tagged paid op is still blocked)
+ public /api/health for serve.sh & proxy; docs/VPS.md; mb MB_TOKEN bearer auth

tests/smoke.sh: 34 checks passing incl. all new hardening.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 12:25:13 +10:00
..
operators trellis_mac: unblock — dinov3 lvd1689m granted; add HF_HUB_DISABLE_XET + OMP guards 2026-07-13 09:44:13 +10:00
__init__.py Phase 0 baseline: FastAPI+SQLite operator pipeline, React/three.js UI, ffprobe/ffmpeg_frames/blender_convert operators 2026-07-12 21:05:22 +10:00
auth.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
db.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
main.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
registry.py Phase 0 baseline: FastAPI+SQLite operator pipeline, React/three.js UI, ffprobe/ffmpeg_frames/blender_convert operators 2026-07-12 21:05:22 +10:00
runner.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
settings.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
store.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00
sysinfo.py Security hardening from adversarial review (5-agent workflow) 2026-07-13 12:25:13 +10:00