Seems a bit clickbaity to me. It’s a flaw in Windows/cmd.exe, not Rust. Rust is just called out because it tries to emulated proper argument passing on Windows (and didn’t get it perfectly right). All languages are affected by this but most of them just throw their hands in the air and say “you’re on your own”:
- Erlang (documentation update)
- Go (documentation update)
- Haskell (patch available)
- Java (won’t fix)
- Node.js (patch will be available)
- PHP (patch will be available)
- Python (documentation update)
- Ruby (documentation update)
It’s also extremely unlikely that you’d be running a bat script with untrusted arguments on Windows.
It’s also extremely unlikely that you’d be running a bat script with untrusted arguments on Windows.
It happens in yt-dl, which is where this was first reported https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p
I mean, let’s be real, Rust is really called out because it causes high drama between C devs and Rust advocates, which drives engagement.
It’s probably all kicking off in about 10 different comment sections right now
Windows is as much to blame as any affected languages tbh.
I’ve run into bizarre behavior with windows command lines plenty of times before, but I’d never put all the pieces together and realized that:
a) windows really does pass around unadorned monolithic strings containing the entire command line of an executed command, and
b) there’s no parsing standard for command lines in windows
sigh, windows
Now that it has been identified, it should be an easy fix, at least.
Still, it’s important to remember that Rust is still a relatively young ecosystem and flaws like this exist until we get burned by them.
And in fact it’s not specific to Rust, and Rust is the first language with a fix available. (Thanks to some other comments for pointing this out.) Java has apparently declared it “won’t fix.”
it should be an easy fix
But it’s not. Have you read the article?
At least it’s not a segfault, buffer overflow, or whatever else plagues C/C++ programs and is not easy to detect.
Anti Commercial AI thingy