CVE-2024-24576
CVE-2024-24576 — Rusts's `std::process::Command` did not properly escape arguments of batch files on Windows
Rust is a programming language. The Rust Security Response WG was notified that the Rust standard library prior to version 1.77.2 did not properly escape arguments when invoking batch files (with the `bat` and `cmd` extensions) on Windows using the `Command`. An attacker able to control the arguments passed to the spawned process could execute arbitrary shell commands by bypassing the escaping. The severity of this vulnerability is critical for those who invoke batch files on Windows with untrusted arguments. No other platform or use is affected. The `Command::arg` and `Command::args` APIs state in their documentation that the arguments will be passed to the spawned process as-is, regardless of the content of the arguments, and will not be evaluated by a shell. This means it should be safe to pass untrusted input as an argument. On Windows, the implementation of this is more complex…
Published Updated Sources: cvelistV5, GitHub_M
Triage
Is it exploited, how likely is exploitation, what does it touch, and how severe do the scoring sources call it.
Exploitation
Exploit code
public exploit, none observed
EPSS
20%
chance of exploitation in 30 days
CVSS base
10
CRITICAL
CISA SSVC assessment
Three decision points CISA publishes for the CVEs it assesses · SSVC 2.0.3. A stakeholder decision, not a severity score.
Exploitation
PoC
none · proof-of-concept · active
Automatable
Yes
can an attacker script all four kill-chain steps
Technical impact
Total
partial · total control of the vulnerable component
Affected scope
The catalog records vendors and products as separate lists, not pairs, so which product belongs to which vendor is not something this page can say.
Vendors (1)
Products (1)
Every base score collected
Sources score independently and disagree; each row says who scored it and under which version.
| Score | Version | Severity | Expl. | Impact | Source |
|---|---|---|---|---|---|
| 10 | CVSS 3.1 | CRITICAL | — | — | cvelistV5 |
Weakness & attack patterns
- CWE-78
- CWE-88
Public exploit
Capability, not use: code existing is a different claim from anyone running it.
Indexed by
References
13 on the record
- github.com/rust-lang/rust/security/advisories/GHSA-q455-m56c-85mh
x_refsource_CONFIRM
- doc.rust-lang.org/std/io/enum.ErrorKind.html#variant.InvalidInput
x_refsource_MISC
- doc.rust-lang.org/std/os/windows/process/trait.CommandExt.html#tymethod.raw_arg
x_refsource_MISC
- doc.rust-lang.org/std/process/struct.Command.html
x_refsource_MISC
- doc.rust-lang.org/std/process/struct.Command.html#method.arg
x_refsource_MISC
- doc.rust-lang.org/std/process/struct.Command.html#method.args
x_refsource_MISC
- github.com/rust-lang/rust/issues
x_refsource_MISC
- www.rust-lang.org/policies/security
x_refsource_MISC
Elsewhere on this site
Not in any source we poll
Listed rather than left blank: an empty field and an unmeasured one look identical on screen, and only one is a reason to look elsewhere.
- No confirmed IOCs, IP addresses, domains, file hashes, or malware artifacts supplied.
- No organization-specific asset inventory, compensating-control status, or patch deployment evidence supplied.
- No exploit packet captures, log samples, or incident case IDs supplied.