CVE-2023-38497 Cargo not respecting umask when extracting crate archives

High 7.8 Published Updated

Local attackers can modify source code in shared Cargo caches due to improper file permissions, leading to arbitrary code execution for other users.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Local or same network only
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2023-38497?

CVE-2023-38497 is a high-severity vulnerability in Fedoraproject Fedora, published on 4 Aug 2023. It can only be exploited from the same machine or local network, and only if a user opens a file or follows a link.

Official description

Cargo downloads the Rust project’s dependencies and compiles the project. Cargo prior to version 0.72.2, bundled with Rust prior to version 1.71.1, did not respect the umask when extracting crate archives on UNIX-like systems. If the user downloaded a crate containing files writeable by any local user, another local user could exploit this to change the source code compiled and executed by the current user. To prevent existing cached extractions from being exploitable, the Cargo binary version 0.72.2 included in Rust 1.71.1 or later will purge caches generated by older Cargo versions automatically. As a workaround, configure one's system to prevent other local users from accessing the Cargo directory, usually located in `~/.cargo`.

Weakness: CWE-732, CWE-278

Which versions are affected by CVE-2023-38497?

2 open source packages ship an affected version, including cargo. It affects 2 products.

PackageAffectedFixed in
cargo crates.ioAll versions0.72.2
cargo crates.ioAll versions0.72.2
Linux distribution packages (38)
cargo AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
clippy AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-analysis AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-analyzer AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-debugger-common AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-doc AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-gdb AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-lldb AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-src AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-std-static AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-std-static-wasm32-unknown-unknown AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-std-static-wasm32-wasi AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rust-toolset AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
rustfmt AlmaLinux:8All versions1.66.1-2.module_el8.8.0+3604+b9bee1fc
cargo AlmaLinux:9All versions1.66.1-2.el9_2
clippy AlmaLinux:9All versions1.66.1-2.el9_2
rust AlmaLinux:9All versions1.66.1-2.el9_2
rust-analysis AlmaLinux:9All versions1.66.1-2.el9_2
rust-analyzer AlmaLinux:9All versions1.66.1-2.el9_2
rust-debugger-common AlmaLinux:9All versions1.66.1-2.el9_2
rust-doc AlmaLinux:9All versions1.66.1-2.el9_2
rust-gdb AlmaLinux:9All versions1.66.1-2.el9_2
rust-lldb AlmaLinux:9All versions1.66.1-2.el9_2
rust-src AlmaLinux:9All versions1.66.1-2.el9_2
rust-std-static AlmaLinux:9All versions1.66.1-2.el9_2
rust-std-static-wasm32-unknown-unknown AlmaLinux:9All versions1.66.1-2.el9_2
rust-std-static-wasm32-wasi AlmaLinux:9All versions1.66.1-2.el9_2
rust-toolset AlmaLinux:9All versions1.66.1-2.el9_2
rustfmt AlmaLinux:9All versions1.66.1-2.el9_2
rust-toolset-1.66-cargo Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-clippy Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust-analysis Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust-analyzer Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust-debugger-common Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust-debuginfo Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9
rust-toolset-1.66-rust-doc Red Hat:devtools:2023::el7All versions0:1.66.1-2.el7_9

Products include Fedoraproject Fedora, Rust-Lang Cargo.

How do I fix CVE-2023-38497?

Upgrade cargo to 0.72.2 or later.

Is CVE-2023-38497 being exploited?

There is no known exploitation of CVE-2023-38497 in the wild and no public exploit code.

Public exploit code: 1 proofs of concept on GitHub.

All Fedoraproject Fedora vulnerabilities

Sources

Also known as ALPINE-CVE-2023-38497, ALSA-2023:4634, ALSA-2023:4635, AZL-28510, CLEANSTART-2026-SJ40187, DEBIAN-CVE-2023-38497 and 12 more.

Is CVE-2023-38497 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free