From 5c2c15ca50e8c6c35ae979f2a6721759b7ad121d Mon Sep 17 00:00:00 2001 From: QuicksilverSlick Date: Mon, 9 Nov 2026 05:15:04 -0600 Subject: [PATCH] fix(deps): move root rmcp to 3.9.0 and ignore two advisories cargo-deny closed the lane on RUSTSEC-2026-0457, 0459, 0461 and 0462. rmcp 3.9.0 clears 0457, 0461 and 0462 for the root's 3.x copy. rmcp 1.8.0 has no 1.x fix for 0462 but does not build the affected HTTP client, and libsqlite3-sys cannot move past 0459 until mesh-llm allows it, so both are ignored with the reasoning in deny.toml. The SQLite risk is accepted, not absent. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 16 +++++++++------- deny.toml | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c31f2529158..020c0d562e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1239,7 +1239,7 @@ dependencies = [ "nix 0.31.3", "nostr 0.44.7", "reqwest 0.13.4", - "rmcp 3.4.1", + "rmcp 3.9.0", "rustls", "schemars 1.2.1", "serde", @@ -5602,7 +5602,7 @@ dependencies = [ "rand 0.10.1", "regex-lite", "reqwest 0.13.4", - "rmcp 3.4.1", + "rmcp 3.9.0", "rpassword", "rustls", "same-file", @@ -5714,7 +5714,7 @@ dependencies = [ "prost 0.14.3", "prost-build 0.14.3", "protoc-bin-vendored", - "rmcp 3.4.1", + "rmcp 3.9.0", "schemars 1.2.1", "serde", "serde_json", @@ -8707,9 +8707,9 @@ dependencies = [ [[package]] name = "rmcp" -version = "3.4.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6317cd8c13e3ec9033cf2aa5aa92cd743f0f4f8a93cddc42ea0ae6ce3b8898" +checksum = "d24a7e92f4bcaa36b97fa93c4fa7ca8f3e669eced949345b3462dba333c7f909" dependencies = [ "async-trait", "base64 0.23.1", @@ -8720,6 +8720,7 @@ dependencies = [ "http-body", "http-body-util", "indexmap 2.14.0", + "libc", "pastey", "pin-project-lite", "process-wrap 10.0.1", @@ -8729,6 +8730,7 @@ dependencies = [ "schemars 1.2.1", "serde", "serde_json", + "sha2 0.11.0", "sse-stream", "thiserror 2.0.18", "tokio", @@ -8741,9 +8743,9 @@ dependencies = [ [[package]] name = "rmcp-macros" -version = "3.4.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ee366004e5f87c103be91c6c09337811517ae8d2f919ece9da7c21444b85c5" +checksum = "b3140f24a766f80f9ec1607bde85680959a69b83d46fa9ce87dadab7e67ab029" dependencies = [ "darling 0.24.1", "proc-macro2", diff --git a/deny.toml b/deny.toml index 588d98ce0ef..2a5341f94b7 100644 --- a/deny.toml +++ b/deny.toml @@ -39,6 +39,23 @@ ignore = [ # Keep the exact NetEQ pin and the wrapper ban below together. Re-audit or # remove this exception when NetEQ removes/updates the unused dependency. { id = "RUSTSEC-2026-0293", reason = "unused dependency of audited, exactly pinned neteq 0.8.3; no Rust references to ringbuf; other consumers forbidden by bans.deny" }, + # rmcp < 3.9.0: the Streamable HTTP clients read non-streaming response bodies into memory with no size limit, so a + # malicious or compromised MCP server can exhaust the client's memory. The only patched range is >= 3.9.0; rmcp 1.x + # has no fix. rmcp 1.8.0 reaches us only via buzz-agent, which compiles just its client and transport-child-process + # features. The code the advisory names sits behind transport-streamable-http-client* and __reqwest, which are off, + # so the HTTP transport is not built. This id-level ignore would also hide a 3.x copy, so rmcp 3.x must stay at + # >= 3.9.0. Remove when buzz-agent moves to rmcp >= 3.9. + { id = "RUSTSEC-2026-0462", reason = "rmcp 1.8.0 via buzz-agent compiles only client and transport-child-process, so the affected HTTP client is not built; no 1.x fix; rmcp 3.x must stay >= 3.9.0" }, + # libsqlite3-sys < 0.39 bundles SQLite < 3.54.0, which can return uninitialized page-cache memory when it opens a + # database with a sibling -wal file of a different page size (CVE-2026-119375): a crafted pair makes ordinary queries + # return stale bytes from the process's memory. No tagged upgrade resolves: the fix needs libsqlite3-sys >= 0.39 (rusqlite + # >= 0.41), mesh-llm-log-store requires rusqlite ^0.40 through mesh-llm v0.78.1, libsqlite3-sys's links = "sqlite3" + # allows one copy, and the patched sqlx-sqlite caps it below 0.39. The risk is accepted, not absent: the desktop opens + # archive/archive.db inside the nest at every start, and the nest is the working directory of spawned agents, so a + # sandboxed agent able to write there could plant the db and -wal pair. The app's other databases are outside the + # nest. Remove when libsqlite3-sys >= 0.39 resolves: that needs a tagged mesh-llm allowing rusqlite >= 0.41, the + # desktop's own rusqlite moving with it, and a sqlx-sqlite pin allowing libsqlite3-sys >= 0.39. + { id = "RUSTSEC-2026-0459", reason = "risk accepted, not absent: no upgrade until a tagged mesh-llm allows rusqlite >= 0.41, and the desktop opens archive.db inside the nest, where a sandboxed agent could plant a crafted db and -wal pair" }, # zip < 9: ZipArchive::extract aborts the process on a symlink entry with a large declared size. Fixed only in 9.0.0. # Same copies and reasoning as 0367-0369 below. 8.6.0 via mesh-llm v0.76.2 (root via buzz-mesh-smoke; desktop via the # mesh-llm feature, off in Dreamforge releases): its readers never call extract(). 4.6.1 via tauri-plugin-updater (Windows):