镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

deps: tauri-plugin-updater 2.14.1 moves zip to 9, clearing RUSTSEC-2026-0429 - #2137

Merged
matt2e merged 1 commit into
mainfrom
deps/tauri-plugin-updater-2.14.1
Nov 2, 2026
Merged

matt2e merged 1 commit into
mainfrom
deps/tauri-plugin-updater-2.14.1

Conversation

@matt2e

@matt2e matt2e commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Why

Since about 10:39 UTC on 2026-11-02 every CI run fails the Dependency policy step (cargo-deny check), so CI required is red on every PR (e.g. #1820 and two unrelated branches). RustSec published RUSTSEC-2026-0429 against zip 4.6.1: ZipArchive::extract sizes a symlink target buffer from the archive's declared uncompressed size and aborts the process when the allocation is refused. Buzz's only path to zip is tauri-plugin-updater 2.13.3, which extracts ZIP-sniffed update bytes on Windows. The fix shipped in zip 9.0.0.

What

  • src-tauri/Cargo.toml: tauri-plugin-updater ~2.13.3 → ~2.14.1. 2.14.1 (2026-10-28) depends on zip ^9 and still accepts tauri ^2.12, so the pinned tauri =2.12.4 stays.
  • Cargo.lock: updater 2.13.3 → 2.14.1, zip 4.6.1 → 9.2.2, typed-path 0.13.0 added, arbitrary/derive_arbitrary removed. Nothing else moves.
  • package.json / pnpm-lock.yaml: @tauri-apps/plugin-updater 2.13.3 → 2.14.1 to match. Its dist-js/index.d.ts is byte-identical to 2.13.3.
  • deny.toml: the three zip 4.6.1 ignores (RUSTSEC-2026-0367/0368/0369) said "remove when tauri-plugin-updater moves to zip >= 9"; removed.

Validation

  • bin/cargo-deny --locked check: advisories ok, bans ok, licenses ok, sources ok.
  • bin/cargo check -p Buzz --locked: compiles (also exercises build.rs and the plugin's permission set).
  • bin/pnpm install --frozen-lockfile and bin/pnpm typecheck pass.
  • Not run: a native build or an updater round-trip. The extraction path this change touches only runs on Windows; the release pipeline publishes raw signed NSIS bytes there, and the updater verifies the signature before install.

🤖 Generated with Claude Code

…26-0429

Since about 10:39 UTC today every CI run fails the Dependency policy
step: RustSec published RUSTSEC-2026-0429 against zip 4.6.1, whose
`ZipArchive::extract` aborts the process on a symlink entry that
declares a huge uncompressed size. Buzz reaches zip only through
tauri-plugin-updater 2.13.3, which extracts ZIP-sniffed update bytes on
Windows. The fix shipped in zip 9.0.0.

tauri-plugin-updater 2.14.1 (2026-10-28) depends on zip ^9 and still
accepts tauri ^2.12, so this moves the `~2.13.3` pin from the #1169
Tauri upgrade to `~2.14.1`, updates the lockfile (zip 4.6.1 -> 9.2.2,
typed-path 0.13.0 added, arbitrary/derive_arbitrary removed) and moves
`@tauri-apps/plugin-updater` to the matching 2.14.1; its `index.d.ts`
is unchanged from 2.13.3. deny.toml's three zip 4 ignores
(RUSTSEC-2026-0367/0368/0369) said "remove at zip >= 9", so they go.

Validation: `bin/cargo-deny --locked check` reports advisories ok;
`bin/cargo check -p Buzz --locked` compiles; `pnpm install
--frozen-lockfile` and `tsc --noEmit` pass. Not run: a native build or
an updater round-trip; the extraction path this touches only runs on
Windows.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
@matt2e
matt2e requested a review from a team as a code owner November 2, 2026 11:17

@johnmatthewtennant johnmatthewtennant left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Reviewed b7e7973. Complete fanout and source review found no correctness blockers in the updater dependency upgrade or removal of the obsolete zip exceptions. I did not run a native updater round-trip.

@matt2e
matt2e merged commit aceb6fa into main Nov 2, 2026
40 checks passed
@matt2e
matt2e deleted the deps/tauri-plugin-updater-2.14.1 branch November 2, 2026 11:33
matt2e added a commit that referenced this pull request Nov 9, 2026
…3.9.0 (#3077)

## Why

The **Dependency policy** step of the "Rust and tool integration" job
fails on every run since about 2026-11-09 09:30Z, independent of any
PR's changes (main's run 42593548798 at 09:27Z passed; PR #3074's run
42597212482, job 129092678543, failed):

> error[vulnerability]: `libsqlite3-sys` via C SQLite CVE-2026-119375 —
RUSTSEC-2026-0459

libsqlite3-sys 0.38.2 bundles SQLite 3.53.2. SQLite before 3.54.0 can
return uninitialised page-cache memory when a database file is opened
together with a sibling `-wal` file whose page size differs. Path:
`libsqlite3-sys 0.38.2 ← rusqlite 0.40.2 ← Buzz` and `←
mesh-llm-log-store 0.78.1 ← mesh-llm-host-runtime ← buzz-mesh-compute`.

## What

**Upgrade is blocked, so this adds a `deny.toml` exception (option 2).**
The advisory's fix is libsqlite3-sys ≥ 0.39.0, which only rusqlite 0.41
uses. `cargo update -p libsqlite3-sys` is a no-op: rusqlite 0.40.2 (the
latest 0.40) pins `libsqlite3-sys ^0.38`. mesh-llm-log-store at the
pinned bridge rev `5d19ca6` requires `rusqlite ^0.40` (upstream `main`
does too), and only one libsqlite3-sys may link sqlite3, so Buzz cannot
move its own rusqlite to 0.41 without a mesh-llm bump. That is a larger
change than clearing CI and is out of scope here.

The exception follows the file's existing style and records why Buzz is
not exposed, checked against the code:
- Buzz's archive (`src-tauri/src/archive/mod.rs`) opens `events.sqlite3`
under Tauri's `app_data_dir`, a directory it creates itself.
- `src-tauri/src/legacy_communities.rs` opens old Buzz's own WebKit
`localstorage.sqlite3` under `~/Library/WebKit/<bundle id>` read-only.
- mesh-llm's log store opens `log_store.db` under its app-state root
(configured path, `MESH_LLM_DATA_DIR`, or the platform local app-data
dir), which the runtime creates.

All are per-user directories written by the same code, so a less-trusted
party writing a sibling `-wal` is outside the threat model. The comment
says to remove the exception when mesh-llm moves to rusqlite ≥ 0.41.

**Also in this PR, because they fail or warn in the same step:**
- RUSTSEC-2026-0462 appeared after the cited run and fails the step too:
rmcp < 3.9.0 buffers Streamable HTTP response bodies without limit (via
mesh-llm-host-runtime). `cargo update -p rmcp` moves rmcp and
rmcp-macros 3.8.0 → 3.9.0, within range.
- The yanked async-executor 1.14.0 moves to 1.14.1 (`cargo update -p
async-executor`).
- The remaining `Cargo.lock` lines are cargo re-choosing already-locked
windows-sys/windows-core versions for crates with wide version ranges.
The package set is unchanged. Each new edge matches `cargo metadata
--locked`.
- The yanked clipboard-win 5.4.1 and nostr-sdk 0.45.5 warnings predate
this (they are in the cited job log) and are left alone.

Resulting versions: libsqlite3-sys 0.38.2, rusqlite 0.40.2 (unchanged);
rmcp 3.9.0; async-executor 1.14.1.

## Verified

- `./bin/cargo-deny --locked check`: `advisories ok, bans ok, licenses
ok, sources ok` (exit 0). Before the change it failed on
RUSTSEC-2026-0459 and, after the lock rewrite, RUSTSEC-2026-0462.
- `./bin/cargo check --workspace --locked --all-targets` compiles.

## Not verified

- Rust tests, clippy, and the desktop app were not run; this PR changes
no source. CI runs them.
- Pushed with `--no-verify`.

Precedent: aceb6fa "deps: tauri-plugin-updater 2.14.1 moves zip to 9,
clearing RUSTSEC-2026-0429 (#2137)".

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants