clusev/docker
boban cc4cc3db4c security: pin the SSH host key in the terminal sidecar (fail-closed)
The ssh2 sidecar connected with no host-key verification, so a MITM could present its own key
and capture the (decrypted) SSH credential — the phpseclib fleet path pins via TOFU but the
sidecar did not. The resolve endpoint now returns the server's TOFU-pinned host key; the sidecar
verifies the presented key against it (crypto.timingSafeEqual) during the handshake, before any
credential is sent.

parseHostKeyPin distinguishes three states so a corrupted record can't silently unpin:
  null   → no pin (Clusev host / never-contacted server) → accept, TOFU first use
  false  → a pin is present but malformed/undecodable    → FAIL CLOSED (reject)
  Buffer → enforce the pin (reject a mismatch as MITM)

Verified in-browser against a real server: valid key connects + runs; a swapped key is rejected
as MITM; a garbage non-empty key fails closed — all before any credential leaves the sidecar.
Full suite 469 pass; Codex re-review CLEAN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 19:33:53 +02:00
..
caddy feat(terminal): Clusev-host SSH login tile + server search; drop the inline hint 2026-06-25 19:46:55 +02:00
clusev feat(wg): wire 'clusev wg' into the host CLI wrapper 2026-06-20 22:42:16 +02:00
motd feat: short clusev commands in versions panel, lang strings, MOTD 2026-06-19 23:18:25 +02:00
nginx security: harden proxy trust + model mass-assignment + terminal-token log hygiene 2026-06-26 07:16:10 +02:00
php feat: scaffold — Dockerized Laravel 13 + Livewire 3 + Tailwind 4 + Reverb 2026-06-12 00:31:50 +02:00
release fix(release): genuine rollback-path test + install/gitignore hardening (review) 2026-06-23 00:16:22 +02:00
restart-sentinel feat(versions): one-click 'update now' from the dashboard 2026-06-19 18:13:34 +02:00
supervisor feat(ssh): wire real fleet data over SSH (FleetService + live poller) 2026-06-12 21:34:13 +02:00
terminal security: pin the SSH host key in the terminal sidecar (fail-closed) 2026-07-02 19:33:53 +02:00
wg feat(wg): configurable DNS + Server/Peers tabs + faster offline (v0.9.45) 2026-06-21 22:48:46 +02:00
entrypoint.sh feat(domain): change the panel domain from the dashboard (v0.4.0) 2026-06-14 01:38:16 +02:00