This project contains known security vulnerabilities. Find detailed information at the bottom.

Crate vigil-server

Dependencies

(29 total, 8 outdated, 2 insecure)

CrateRequiredLatestStatus
 log^0.40.4.35up to date
 clap^4.34.6.7up to date
 lazy_static^1.41.5.1up to date
 time^0.30.3.55up to date
 serde^1.01.0.229up to date
 serde_derive^1.01.0.229up to date
 toml^0.91.2.1+spec-1.1.0out of date
 envsubst^0.20.2.1up to date
 uuid^1.11.29.2up to date
 regex^1.61.13.1up to date
 url^2.22.5.8up to date
 url_serde^0.20.2.0up to date
 http^1.31.5.0up to date
 http-serde^2.12.1.1up to date
 indexmap^2.112.14.2up to date
 actix-web^4.34.19.0up to date
 actix-files ⚠️^0.60.7.4insecure
 actix-web-httpauth^0.80.8.3up to date
 rmcp ⚠️^0.93.9.0insecure
 rmcp-actix-web^0.80.13.3out of date
 tera^1.192.4.0out of date
 native-tls^0.20.2.18up to date
 openssl-probe^0.10.2.2out of date
 reqwest^0.120.13.5out of date
 ping^0.70.10.0out of date
 ssh2^0.90.9.7up to date
 run_script^0.110.11.2up to date
 lettre^0.110.11.23up to date
 libstrophe^0.200.20.4up to date

Security Vulnerabilities

rmcp: DNS rebinding vulnerability in rmcp Streamable HTTP server transport

RUSTSEC-2026-0189

Prior to version 1.4.0, the rmcp crate's Streamable HTTP server transport did not validate the incoming Host header.

This allowed a malicious public website, via a DNS rebinding attack, to send requests to an MCP server running on the victim's loopback or private-network interface.

An attacker who convinced a victim to visit a malicious page could enumerate and invoke tools exposed by a locally running rmcp-based MCP server, read resources and prompts, and trigger side effects limited by the tools exposed by that server.

Non-HTTP transports such as stdio and child-process transports are not affected.

Patches

The issue was fixed in rmcp 1.4.0 by adding default loopback-only host allowlist validation for the Streamable HTTP server transport. Incoming HTTP requests now validate the Host header and return HTTP 403 when the host is not allowed.

Users should upgrade to rmcp >= 1.4.0.

Workarounds

If upgrading is not possible, place the MCP server behind a reverse proxy configured to reject requests whose Host header is not one of the expected hostnames. Do not bind the MCP server to 0.0.0.0 without such validation.

actix-files: Hidden file disclosure through Windows short names

RUSTSEC-2026-0443

On Windows volumes with 8.3 short names, actix_files::Files can serve hidden files through their short-name aliases. The default path check rejects segments that start with a dot, but an alias such as ENV~1 or GIT~1 passes this check.

A remote client can read files such as .env or .git/config in the served directory even when use_hidden_files() is not enabled. This can expose secrets or source code.

Upgrade to actix-files 0.7.4 or later. As a workaround, remove sensitive files and directories from the served directory.

rmcp: Unbounded response body buffering in Streamable HTTP clients

RUSTSEC-2026-0462

Before 3.9.0, the built-in Streamable HTTP clients in rmcp read non-streaming HTTP response bodies into memory with no size limit. Both the reqwest client (transport-streamable-http-client-reqwest) and the Unix socket client (transport-streamable-http-client-unix-socket) were affected:

  • application/json responses to POST requests were read in full before parsing.
  • Non-2xx responses were read in full for error reporting.

A malicious or compromised MCP server can answer with a body that never ends, for example a chunked application/json response that streams whitespace. The client buffers it until the process runs out of memory. This works during initialize, before any authentication. On desktop or agent hosts, this terminates the whole host application.

Server-sent event streams are not affected. Each event is already capped by max_sse_event_size, and events are not accumulated.

The flaw was corrected in 3.9.0. Successful JSON bodies are limited to 16 MiB and non-success bodies to 64 KiB. Bytes are counted while streaming, after decompression. An oversized Content-Length is rejected before the body is read, and an oversized body is rejected with StreamableHttpError::ResponseBodyTooLarge instead of being truncated.

If you cannot upgrade, use a custom StreamableHttpClient that enforces a response body limit, or connect only to trusted MCP servers.