v0.7.3 — HTTP serve security hardening
Security patch from the 2026-09-02 red-team code audit. No new features - pure hardening of mcptoon serve HTTP mode.
Security fixes
- Loopback-by-default: bare --http / --listen :8080 binds 127.0.0.1 (was 0.0.0.0)
- Non-loopback bind requires --auth - refused outright otherwise (exit 2); the LAN-exposed + unauthenticated combination can no longer be constructed
- Bare --auth auto-generates a secure token (printed once, Jupyter-style)
- Auth on GET too, before body parsing - /health /status no longer skip the token check
- Origin/Host browser guard - CSRF + DNS-rebinding protection on every request (curl/agents unaffected); allowlist via MCPTOON_ALLOWED_HOSTS
- Content-Type gate - browser form-post carriers (text/plain, multipart) rejected with 415
- prompts/get runs the injection scanner on SKILL.md bodies (previously unscanned)
Scanner hardening
- _check_poisoning: full-text scan (5000-char truncation bypass closed), NFKC fold (fullwidth homoglyphs), zero-width char strip + density signal, Chinese indicator list
Tests: 660 passed (+30 new security tests). Upgrade: pip install -U mcptoon