sec: RUSTSEC-2026-0429, a zip archive that aborts the process on extract #574

Merged
dcharlot merged 1 commit from sec/zip-extract-abort into main 2026-11-02 08:02:48 -05:00
Owner

The repo-wide audit is red on every open PR because of a new advisory, RUSTSEC-2026-0429. ZipArchive::extract sizes a symlink target's buffer from the size the archive declares, so a 112-byte archive aborts the process. It is fixed in zip 9.

What changes

Workspace zip Who uses it Does it call extract? Action
wai/wai-quantum-desktop 4.6.1 tauri-plugin-updater Yes, on Windows, after the update's signature is checked Moved to 9.2.2 through updater 2.14.1. The updater's source is unchanged
wai/wai-rs 8.6.0 c2pa, behind c2pa_emit No Moved to 9.2.2 through c2pa 0.91.7
aac/aac-rs 8.6.0 open_board_format 0.1.1, its newest release, asks for ^8.6 No: by_index and read_to_end Allowed at this version
jouleclaw/jouleclaw-rs 1.1.4 candle-core 0.8.4 No: reads weights by name Allowed at this version
openpay 1.3.1 candle-core 0.8.4, held there by burn 0.17 No Allowed at this version
jouledesk/jouledesk-rs 0.6.6 webrtc-sys-build 0.3.18 Yes, in a build script, on the libwebrtc archive it downloads itself Allowed at this version

webrtc-sys-build can't move on its own: its next releases change which libwebrtc it downloads, so it moves with livekit.

The c2pa move also takes elliptic-curve 0.14, so wai-rs holds no crypto-bigint 0.5.

A correction in the allow list: the comment over the older zip entries said nothing in this tree extracts an archive. The updater did, and the build script still does. The comment and those entries' reasons now say that nothing that runs here extracts one.

What ran

  • scripts/check-advisories.py: 60 lockfiles, 20 allowed advisories, exit 0.
  • c2pa_emit tests, both CI steps: 9 passed, and 2 with live_metering. No openssl in the graph.
  • wai breaking against the merge base: no unacknowledged change.

Not run outside CI: the desktop app with the new lockfile, and any Windows build. zip is only compiled for Windows there, so this PR's Windows leg is the first to compile against 9.x. A local c2pa_emit check adds no new warnings from library code.

🤖 Generated with Claude Code

The repo-wide audit is red on every open PR because of a new advisory, RUSTSEC-2026-0429. `ZipArchive::extract` sizes a symlink target's buffer from the size the archive declares, so a 112-byte archive aborts the process. It is fixed in `zip` 9. ## What changes | Workspace | `zip` | Who uses it | Does it call `extract`? | Action | |---|---|---|---|---| | `wai/wai-quantum-desktop` | 4.6.1 | `tauri-plugin-updater` | Yes, on Windows, after the update's signature is checked | **Moved to 9.2.2** through updater 2.14.1. The updater's source is unchanged | | `wai/wai-rs` | 8.6.0 | `c2pa`, behind `c2pa_emit` | No | **Moved to 9.2.2** through `c2pa` 0.91.7 | | `aac/aac-rs` | 8.6.0 | `open_board_format` 0.1.1, its newest release, asks for ^8.6 | No: `by_index` and `read_to_end` | Allowed at this version | | `jouleclaw/jouleclaw-rs` | 1.1.4 | `candle-core` 0.8.4 | No: reads weights by name | Allowed at this version | | `openpay` | 1.3.1 | `candle-core` 0.8.4, held there by `burn` 0.17 | No | Allowed at this version | | `jouledesk/jouledesk-rs` | 0.6.6 | `webrtc-sys-build` 0.3.18 | Yes, in a build script, on the libwebrtc archive it downloads itself | Allowed at this version | `webrtc-sys-build` can't move on its own: its next releases change which libwebrtc it downloads, so it moves with `livekit`. The `c2pa` move also takes `elliptic-curve` 0.14, so `wai-rs` holds no `crypto-bigint` 0.5. **A correction in the allow list:** the comment over the older `zip` entries said nothing in this tree extracts an archive. The updater did, and the build script still does. The comment and those entries' reasons now say that nothing that runs here extracts one. ## What ran - `scripts/check-advisories.py`: 60 lockfiles, 20 allowed advisories, exit 0. - `c2pa_emit` tests, both CI steps: 9 passed, and 2 with `live_metering`. No `openssl` in the graph. - `wai breaking` against the merge base: no unacknowledged change. **Not run outside CI:** the desktop app with the new lockfile, and any Windows build. `zip` is only compiled for Windows there, so this PR's Windows leg is the first to compile against 9.x. A local `c2pa_emit` check adds no new warnings from library code. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sec: RUSTSEC-2026-0429, a zip archive that aborts the process on extract
All checks were successful
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m33s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 7m46s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m46s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 6m50s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 4m10s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 22m30s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m40s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 6m24s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m59s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 5m57s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 9m10s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 16m9s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 25m5s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 7m37s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 25m12s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 23m18s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 12s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 15m57s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 35s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 10m44s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m3s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 11m36s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 7m25s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m3s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 16m37s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 36s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m43s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m21s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m24s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h22m6s
5fc8779968
`ZipArchive::extract` sizes a symlink target's buffer from the size the
archive declares, so a 112-byte archive aborts the process. Fixed in zip 9.
The audit went red on every open PR when the advisory was published.

Two lockfiles move:

  wai-quantum-desktop: tauri-plugin-updater 2.14.0 -> 2.14.1. Its source is
    unchanged; it asks for zip 9. This was the only copy that runs `extract`
    in a shipped program, on Windows, on an update package whose signature
    has already been checked.
  wai-rs: c2pa 0.90 -> 0.91, behind `c2pa_emit`. This also takes
    elliptic-curve 0.14, so the workspace holds no crypto-bigint 0.5.

Four copies stay, each read at its call site and allowed at its exact
version: open_board_format and candle-core never call `extract`, and
webrtc-sys-build calls it in a build script, on its own download. The build
crate's next releases change which libwebrtc it downloads, so it moves with
livekit.

The comment over the older zip entries said nothing in this tree extracts an
archive. It was wrong: the updater did, and the build script does. It now
says what is true.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!574
No description provided.