Skip to content

fix(deps): move zip to a patched release - #22

Open
TheStreamCode wants to merge 2 commits into
mainfrom
deps/security-updates
Open

TheStreamCode wants to merge 2 commits into
mainfrom
deps/security-updates

Conversation

@TheStreamCode

Copy link
Copy Markdown
Owner

Summary

Close all six open zip advisories, including the critical parser differential that allows arbitrary file overwrite.

Two vulnerable copies were in the tree: the direct pin at 3.0.0 (workspace, chutes-tools, chutes-update) and 8.6.0 pulled in by office_oxide through pdf_oxide.

  • Bump the workspace and crate pins to zip = "9".
  • Update office_oxide 0.1.9 to 0.1.16, which requires zip ^9.1, so a single patched copy resolves (9.1.2).
  • Adapt the two API changes in zip 9: file_names() and ZipFile::name() now return a Result.
  • extract_zip keeps validating the raw entry name, because enclosed_name() now normalizes . components away and would otherwise accept ./cmd/git.exe.

Verification

  • cargo check -p chutes-tools -p chutes-update: clean
  • cargo test -p chutes-update --lib: 139 passed, 0 failed, including the three archive-extraction guards
  • cargo test -p chutes-tools --lib pptx: 8 passed, 0 failed
  • rustfmt --check on both changed files
  • cargo-deny advisories job should now pass

Notes

cargo test -p chutes-update --test test_network reports 4 failures in the gcs_pointer_* tests on this machine. Those tests exercise the GCS pointer retry policy, not archive extraction; the lockfile diff touches only the zip/office_oxide chain, and the same tests pass on main in CI. CI on this pull request is the authoritative check.

Michael Gasperini and others added 2 commits November 6, 2026 21:50
The workspace and two crates pinned zip 3, and office_oxide pulled zip 8.6.0 through pdf_oxide. Every open advisory, including the critical parser differential in 9.0.4 and earlier, is fixed in 9.0.5.

Bump the workspace and crate pins to zip 9, update office_oxide to 0.1.16 so the transitive copy resolves to the same major, and adapt the two API changes: file_names and entry name now return a Result. The extraction guard keeps validating the raw entry name, because enclosed_name normalizes . components away.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The 3 to 9 migration closes RUSTSEC-2026-0367, -0368, -0369 and -0429, so their ignores are stale. RUSTSEC-2026-0441 (pin-utils unmaintained) arrives transitively through aws-smithy-http and has no released replacement.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

This branch has not been deployed

No deployments
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.

1 participant