Skip to content

chore(audit): ignore zip <9 extract() advisories RUSTSEC-2026-0367/0368/0369 (unreachable, no consumer fix) - #979

Merged
runyourempire merged 1 commit into
mainfrom
fix/rustsec-zip-2026-10-17
Oct 17, 2026
Merged

runyourempire merged 1 commit into
mainfrom
fix/rustsec-zip-2026-10-17

Conversation

@runyourempire

Copy link
Copy Markdown
Collaborator

Why

The merge queue fails cargo audit on main (runs 38981479618, 38982403693). Three RustSec advisories hit zip 4.6.1 and 8.6.0, and all are fixed only in zip >=9.0.0:

  • RUSTSEC-2026-0367: SUID/SGID bits kept on extract
  • RUSTSEC-2026-0368: symlink targets outside the destination
  • RUSTSEC-2026-0369: permissions applied through symlinks

All three are in ZipArchive::extract / ZipStreamReader::extract. Yesterday's transient yanks of these zip versions came from the same disclosure. I closed #971 too early, calling the yank "transient"; the advisories behind it are real.

Reachability (checked 2026-10-17)

Consumer zip Calls extract()?
4DA (fastembed.rs, extractors/archive.rs, extractors/office.rs) 8.6.0 direct No. It copies chosen entries to paths it names
calamine 0.36.1 (latest) ^8.6 No. It reads entries only
docx-rs 0.4.22 (latest) ^8.6 No. It reads and packs only
tauri-plugin-updater 2.13.1 (and the latest 2.14.0) ^4 Yes, on Windows only, updater.rs:1075, after verify_signature against our updater pubkey (updater.rs:837). The archive is one we signed.

No consumer ships a zip 9 build. Bumping only the direct dependency would add a third zip copy without changing any reachable code.

What

  • src-tauri/.cargo/audit.toml and src-tauri/deny.toml each ignore the three ids. The reasons and a REVISIT note sit inline: drop the ignores when calamine, docx-rs and tauri-plugin-updater move to zip >=9.
  • Verified locally: with the patch, cargo audit exits 0 and cargo deny check advisories exits 0. Without it, cargo audit exits 1.

Unblocks #967 and #972, which were ejected from the queue on this.

🤖 Generated with Claude Code

https://claude.ai/code/session_018hjX3pEMmC7CHfG41PiPj7

…68/0369 (unreachable, no consumer fix)

The merge queue now fails cargo audit on main: three RustSec advisories
against zip 4.6.1 and 8.6.0, fixed only in zip >=9.0.0. All three are in
ZipArchive::extract / ZipStreamReader::extract.

Reachability, checked 2026-10-17:
- 4DA never calls extract(): fastembed.rs, extractors/archive.rs and
  extractors/office.rs copy chosen entries to paths they name.
- calamine 0.36.1 and docx-rs 0.4.22 (latest; zip ^8.6) only read entries.
- tauri-plugin-updater 2.13.1 (zip ^4; the latest 2.14.0 too) calls
  extract() on Windows only, after verify_signature against our updater
  pubkey, so the archive is one we signed.

No consumer ships a zip 9 build yet. Bumping the direct dependency alone
would add a third zip copy and change no reachable code. Ignored in both
.cargo/audit.toml and deny.toml with a REVISIT note to drop them when the
consumers move to zip >=9.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018hjX3pEMmC7CHfG41PiPj7
@runyourempire
runyourempire added this pull request to the merge queue Oct 17, 2026
Merged via the queue into main with commit 3fb0def Oct 17, 2026
25 checks passed
@runyourempire
runyourempire deleted the fix/rustsec-zip-2026-10-17 branch October 17, 2026 14:38
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.

Nightly supply-chain audit failure — 2026-10-16

1 participant