Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions backlog.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ and may be dropped under TTY contention, so silent execution can be invisible.
Make the banner reliable and state the residual risk plainly at the `a`-key
prompt and in the README.

## Re-evaluate the RUSTSEC-2026-0189 ignore if an HTTP transport is added

`deny.toml` and the `cargo audit` step ignore RUSTSEC-2026-0189 (DNS rebinding
in rmcp's Streamable HTTP server transport) because sudo-proxy enables only
rmcp's `transport-io` feature and serves over stdio, so the vulnerable code is
not compiled in. If an HTTP/streamable-http transport is ever added, drop the
ignore and require a patched rmcp instead. Captured follow-up, not active work.

---

## Rung 6 — seL4-style end-to-end refinement (aspirational)
Expand Down
34 changes: 34 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,40 @@
Most recent at top. See [docs/formalisation-roadmap.md](docs/formalisation-roadmap.md)
for the assurance-ladder context behind the security-formalisation entries.

## 2026-09-07 — Published to the MCP Registry; retired the cargo-support watch; RUSTSEC-2026-0189 triaged

Release/hygiene work, not an assurance-ladder rung.

- **Published `io.github.tarides/sudo-proxy` 1.0.0 to the official MCP Registry.**
The registry added cargo (crates.io) as a package `registryType` in registry
v1.8.0 (2026-07-13, modelcontextprotocol/registry#1207), lifting the HTTP 400
"unsupported registry type: cargo" that had blocked `publish.yml`'s final
step. Ran `publish.yml`; the server is now listed with a `cargo` package
(status active, isLatest). The README's
`mcp-name: io.github.tarides/sudo-proxy` marker is deliberately **visible**
markdown text (a code span), which is required — crates.io strips HTML
comments during README rendering, so the hidden-comment form used for
PyPI/NuGet would not validate.

- **Removed the temporary `registry-watch.yml` tripwire (PR #40).** It had gone
RED daily waiting for cargo support and was auto-disabled by GitHub for
inactivity on 2026-08-19. Its GREEN signal was also mis-wired — it counted
*pre-existing* cargo-type servers in the public listing, which was the wrong
heuristic (the registry accepts cargo regardless of whether any cargo server
is already listed), so it would never have fired. Deleted per its own header
instructions once the server was published.

- **Triaged RUSTSEC-2026-0189 as not-applicable and suppressed it with a
documented rationale (PR #41).** The advisory is a DNS-rebinding flaw (missing
`Host`-header validation) in rmcp's Streamable HTTP server transport.
sudo-proxy is not affected: the advisory excludes non-HTTP transports, and
this crate enables only rmcp's `transport-io` feature and serves the MCP
server over stdio (`src/bin/sudo-proxy-mcp.rs`: `.serve(stdio())`) — the
vulnerable HTTP transport is never compiled in. Ignored the ID in both
advisory gates (`deny.toml` `[advisories].ignore` and the `cargo audit
--ignore` step) with the rationale inline; CI green again. Revisit if an HTTP
transport is ever added.

## 2026-06-11 — Extended Rung 4: SSH key-acceptance model, mutual auth (ProVerif)

Reworked the Rung 4 ProVerif model (`proofs/proverif/ssh-channel.m4.pv`,
Expand Down
Loading