Skip to content

rust-panosmcp v0.3.0

Choose a tag to compare

@fastrevmd-lab fastrevmd-lab released this 25 Jul 17:12
· 82 commits to main since this release
d71defa

First release carrying the shared mecmcp-auth authentication crate (auth-v0.1.4).

Before upgrading: the server now refuses to start if tokens.json is group- or world-readable.

stat -c '%a %U:%G' /var/lib/rust-panosmcp/tokens.json   # expect 600
chmod 600 /var/lib/rust-panosmcp/tokens.json            # if it is not

Also preserve /var/lib/rust-panosmcp/mutation-state.json across the upgrade — it holds change-set approval records.

No token needs reissuing and no client needs a new credential.

Fixed — rollback safety

Since adopting the shared crate, main had been writing tokens.json without its version envelope, a field prior releases require. A rollback could not have read the file the newer binary wrote. The version a file is read with is now the version it is written back with.

Reference validation in token add / rotate / revoke — unknown device and tool names, duplicate token names — is also restored; it was briefly lost when the lifecycle operations were reimplemented inline.

Changed

Authentication moves to the shared crate, retiring this repository's own token.rs, store.rs, and file.rs (~1,200 lines). rust-panosmcp-auth is now a thin vendor layer holding the PAN-OS write grant and tool registry. The MCP tool surface, authorization scopes, inventory, and mutation-state interfaces are unchanged.

A new tokens.json is written with envelope version 1 rather than 2; both are accepted on read by this and prior releases.

Security

tokens.json must be mode 0600 — the server exits rather than starting with credentials exposed, and the error names the file, its mode, both uids, and the remedy. Secret zeroing now uses zeroize and the uid lookup uses rustix, so the authentication crate contains no unsafe.

Also

Fixes two README install-path bugs (#48) found by deploying the tarball into a clean LXC and following the instructions verbatim: the archive extracts to rust-panosmcp-v<VER>/, not the triple-suffixed directory, and the binary is at bin/rust-panosmcp.

Full notes: CHANGELOG.md