Update Rust crate zip to v9 [SECURITY] #6

Open
renovate-bot wants to merge 1 commit from renovate/crate-zip-vulnerability into main
Member

This PR contains the following updates:

Package Type Update Change
zip dependencies major 0.6 → 9.0

⚠️ Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Insecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation

GHSA-vv5m-jxxh-4627 / RUSTSEC-2026-0367

More information

Details

The zip crate preserves privileged Unix permission bits (SUID, SGID, and sticky bits) from ZIP external_attributes during extraction, instead of masking them to safe permission bits. If a privileged process (for example, root in an installer, CI/CD pipeline, or container build) extracts an attacker-controlled ZIP archive using ZipArchive::extract() or the stream extraction API, files can be created as setuid-root or setgid. This behavior allows the creation of SUID/SGID files during extraction, which can lead to local privilege escalation depending on the execution environment.

For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-vv5m-jxxh-4627

Severity

  • CVSS Score: 7.3 / 10 (High)
  • Vector String: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


GHSA-4v9h-p7m9-rh26 / RUSTSEC-2026-0368

More information

Details

In zip 9.0.0-pre2, ZipArchive::extract creates a symbolic link from an archive entry after validating only the output entry path. The link target bytes are passed directly to the platform symlink API, so a malicious archive can create an entry inside the destination that resolves to an attacker-chosen path outside it. This behavior was verified on macOS and Linux. On either platform, a subsequent application read or write through that extracted entry accesses the external target with the extracting process's permissions.

For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-4v9h-p7m9-rh26

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


GHSA-4684-h2q9-2vcp / RUSTSEC-2026-0369

More information

Details

ZipStreamReader::extract() applies Unix permissions through extracted symlinks without validating the symlink target stays within the destination

For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-4684-h2q9-2vcp

Severity

  • CVSS Score: 9.1 / 10 (Critical)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Configuration

📅 Schedule: (in timezone Europe/Prague)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [zip](https://github.com/zip-rs/zip2) | dependencies | major | `0.6` → `9.0` | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/7) for more information. --- ### Insecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation [GHSA-vv5m-jxxh-4627](https://github.com/advisories/GHSA-vv5m-jxxh-4627) / [RUSTSEC-2026-0367](https://rustsec.org/advisories/RUSTSEC-2026-0367.html) <details> <summary>More information</summary> #### Details The `zip` crate preserves privileged Unix permission bits (SUID, SGID, and sticky bits) from ZIP `external_attributes` during extraction, instead of masking them to safe permission bits. If a privileged process (for example, `root` in an installer, CI/CD pipeline, or container build) extracts an attacker-controlled ZIP archive using `ZipArchive::extract()` or the stream extraction API, files can be created as setuid-root or setgid. This behavior allows the creation of SUID/SGID files during extraction, which can lead to local privilege escalation depending on the execution environment. For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-vv5m-jxxh-4627 #### Severity - CVSS Score: 7.3 / 10 (High) - Vector String: `CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H` #### References - [https://crates.io/crates/zip](https://crates.io/crates/zip) - [https://rustsec.org/advisories/RUSTSEC-2026-0367.html](https://rustsec.org/advisories/RUSTSEC-2026-0367.html) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2026-0367) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### zip: `ZipArchive::extract` creates symbolic links whose attacker-controlled targets are outside the destination directory [GHSA-4v9h-p7m9-rh26](https://github.com/advisories/GHSA-4v9h-p7m9-rh26) / [RUSTSEC-2026-0368](https://rustsec.org/advisories/RUSTSEC-2026-0368.html) <details> <summary>More information</summary> #### Details In `zip` 9.0.0-pre2, `ZipArchive::extract` creates a symbolic link from an archive entry after validating only the output entry path. The link target bytes are passed directly to the platform symlink API, so a malicious archive can create an entry inside the destination that resolves to an attacker-chosen path outside it. This behavior was verified on macOS and Linux. On either platform, a subsequent application read or write through that extracted entry accesses the external target with the extracting process's permissions. For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-4v9h-p7m9-rh26 #### Severity Unknown #### References - [https://crates.io/crates/zip](https://crates.io/crates/zip) - [https://rustsec.org/advisories/RUSTSEC-2026-0368.html](https://rustsec.org/advisories/RUSTSEC-2026-0368.html) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2026-0368) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target [GHSA-4684-h2q9-2vcp](https://github.com/advisories/GHSA-4684-h2q9-2vcp) / [RUSTSEC-2026-0369](https://rustsec.org/advisories/RUSTSEC-2026-0369.html) <details> <summary>More information</summary> #### Details `ZipStreamReader::extract()` applies Unix permissions through extracted symlinks without validating the symlink target stays within the destination For further details see: https://github.com/zip-rs/zip2/security/advisories/GHSA-4684-h2q9-2vcp #### Severity - CVSS Score: 9.1 / 10 (Critical) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H` #### References - [https://crates.io/crates/zip](https://crates.io/crates/zip) - [https://rustsec.org/advisories/RUSTSEC-2026-0369.html](https://rustsec.org/advisories/RUSTSEC-2026-0369.html) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2026-0369) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Prague) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNjYuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE2Ni4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJzZWN1cml0eSJdfQ==-->
Update Rust crate zip to v9 [SECURITY]
Some checks failed
uniffi-swift.yml / Update Rust crate zip to v9 [SECURITY] (push) Failing after 0s
uniffi-swift.yml / Update Rust crate zip to v9 [SECURITY] (pull_request) Failing after 0s
Builds / Build (aarch64-pc-windows-msvc) (pull_request) Failing after 19s
Builds / Build (x86_64-pc-windows-msvc) (pull_request) Failing after 18s
Tests / Test (x86_64-pc-windows-msvc) (pull_request) Failing after 18s
Builds / Build (aarch64-apple-darwin) (pull_request) Failing after 9s
Builds / Build (aarch64-apple-ios) (pull_request) Failing after 9s
Builds / Build (aarch64-apple-ios-sim) (pull_request) Failing after 9s
Builds / Build (x86_64-apple-darwin) (pull_request) Failing after 9s
Tests / Test (aarch64-apple-darwin) (pull_request) Failing after 9s
Builds / Build (armv7-linux-androideabi) (pull_request) Failing after 19s
Builds / Build (aarch64-linux-android) (pull_request) Failing after 19s
Builds / Build (x86_64-unknown-linux-gnu) (pull_request) Failing after 17s
Changeset Check / Check for changeset (pull_request) Failing after 4s
Builds / Build (x86_64-linux-android) (pull_request) Failing after 13s
Generate FFI Proto (Node) / Generating protobuf (pull_request) Failing after 13s
License Check / License Check (pull_request) Successful in 12s
Rust Formatting / Check Formatting (pull_request) Successful in 15s
Tests / Test (x86_64-unknown-linux-gnu) (pull_request) Failing after 25s
Test API / failover (pull_request) Failing after 36s
Builds / Build (aarch64-unknown-linux-gnu) (pull_request) Has been cancelled
0ee08b73f4
Generated by renovateBot
Some checks failed
uniffi-swift.yml / Update Rust crate zip to v9 [SECURITY] (push) Failing after 0s
uniffi-swift.yml / Update Rust crate zip to v9 [SECURITY] (pull_request) Failing after 0s
Builds / Build (aarch64-pc-windows-msvc) (pull_request) Failing after 19s
Builds / Build (x86_64-pc-windows-msvc) (pull_request) Failing after 18s
Tests / Test (x86_64-pc-windows-msvc) (pull_request) Failing after 18s
Builds / Build (aarch64-apple-darwin) (pull_request) Failing after 9s
Builds / Build (aarch64-apple-ios) (pull_request) Failing after 9s
Builds / Build (aarch64-apple-ios-sim) (pull_request) Failing after 9s
Builds / Build (x86_64-apple-darwin) (pull_request) Failing after 9s
Tests / Test (aarch64-apple-darwin) (pull_request) Failing after 9s
Builds / Build (armv7-linux-androideabi) (pull_request) Failing after 19s
Builds / Build (aarch64-linux-android) (pull_request) Failing after 19s
Builds / Build (x86_64-unknown-linux-gnu) (pull_request) Failing after 17s
Changeset Check / Check for changeset (pull_request) Failing after 4s
Builds / Build (x86_64-linux-android) (pull_request) Failing after 13s
Generate FFI Proto (Node) / Generating protobuf (pull_request) Failing after 13s
License Check / License Check (pull_request) Successful in 12s
Rust Formatting / Check Formatting (pull_request) Successful in 15s
Tests / Test (x86_64-unknown-linux-gnu) (pull_request) Failing after 25s
Test API / failover (pull_request) Failing after 36s
Builds / Build (aarch64-unknown-linux-gnu) (pull_request) Has been cancelled
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/crate-zip-vulnerability:renovate/crate-zip-vulnerability
git switch renovate/crate-zip-vulnerability

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff renovate/crate-zip-vulnerability
git switch renovate/crate-zip-vulnerability
git rebase main
git switch main
git merge --ff-only renovate/crate-zip-vulnerability
git switch renovate/crate-zip-vulnerability
git rebase main
git switch main
git merge --no-ff renovate/crate-zip-vulnerability
git switch main
git merge --squash renovate/crate-zip-vulnerability
git switch main
git merge --ff-only renovate/crate-zip-vulnerability
git switch main
git merge renovate/crate-zip-vulnerability
git push origin main
Sign in to join this conversation.
No description provided.