Skip to content

v6.1.5: services-only hardening

Choose a tag to compare

@w4ffl35 w4ffl35 released this 25 Oct 19:20
· 247 commits to master since this release

Headless services-only release (FastAPI daemon for airunnerweb). No desktop client remains.

Security fixes (closes #2261, #2262, #2263, #2267, #2269):

  • CivitAI/HF downloads: server-supplied filenames sanitized and confined to the model dir; every redirect hop revalidated; legacy HF downloader hardened the same way.
  • Loopback token: pre-existing weak files/symlinks are tightened or replaced, never silently reused.
  • Tenant schema identifiers validated; migration signature is now content-hashed; tenant migrations serialized with a lock.
  • Secrets: persisting without a keyring now requires AIRUNNER_ALLOW_PLAINTEXT_SECRETS=1, otherwise raises. Operators without a keyring must set the flag or install one.

Robustness fixes (closes #2264, #2265, #2266, #2268):

  • Daemon singleton lock is an flock file lock, not a TCP probe.
  • Signal shutdown no longer skips API/heartbeat/app cleanup.
  • Dead preload stub removed (lifecycle preload covers configured models); WS sockets now scope tenants exactly like HTTP.

Repairs (closes #2270-#2273, #2275): dead entry points wired (airunner-docker-build/wrapper, cleanup-llm-models, generate-cert), docker_build compose path fixed, model_optimizer uses sys.executable, stale desktop docs updated, six new regression test files.

Known gaps (open): #2274 dependency majors (no safe bumps; verified), order-dependent CUDA segfault in test_fp8_scaled_mm under the full suite (passes standalone), scipy/langchain/ollama extras missing from dev venvs (pre-existing).