A curated list of questionable installation instructions
curlsh.com
curlsh.com
If they had provided a versioned URL and checksum validation as part of their copy & paste snippet, the breach would have been noticed right away.
[1] https://www.reuters.com/technology/codecov-hackers-breached-...
That's the major problem with these scripts, you rely on the web server not having been compromised, the release builder not having been compromised and you not being MITMed. Now, someone might inject nasty changes into a code repository, but it tends to be harder.
That's just one of the problems, but I'd say it's the main one. If you truly trust the creator with install power, download the script yourself with curl/wget/whatever, have a glance if it's what you expect, and fire away.
It's trivial to serve different files to different user agents, and with terminal escape codes you could even hide malicious code from the few people that cat these scripts. I don't like downloading files from a project's own, potentially dynamic, server, and executing them directly, even though that's commonly the only way to run certain tools.
In my opinion, downloading github release files or even just the scripts from github directly is worse than using reliable repositories with signatures and all that, but better than downloading random shell or exe files and executing them as admin. You'll always be at some kind of risk of software manipulation, so you have to choose how much risk you want to accept when it comes to this stuff.
I think the miniconda example isn't as bad, because you have the opportunity to inspect the script between the commands if you're curious. You'll have to be wary of obfuscation tricks, but at least it's not the direct equivalent of opening a telnet session to a remote server.
> curl --help all|grep tlsv1.2
--tlsv1.2 Use TLSv1.2 or greaterPros:
- Protects against simple hijacking.
- Reproducible as long as the installer doesn't also call out to a moving target, such as example.com/releases/latest.
Cons:
- Build breaks as soon as the installer is bumped. If it's bumped often (or just before an important release) this can cause pain.
- TOFU may not be acceptable, but of course you could review the code thoroughly before even the first use.
- The review of each version could be non-trivial. Usually installers are pretty simple and stable though, YMMV.
[1] https://github.com/linz/geostore/blob/b3cd162605109da8a3a688...
The closest I've seen is running exes with docker run. Then at least I can somewhat control how much access the exe has to my machine.
It's fewer steps than trusting also some package maintainer or build bot to not be compromised.
One can always manage a lot of VM's manually, but that's complicated enough that one usually only bothers for very specific software, and not everything like what is done in Qubes OS.