4 ms·
Find an error on the Rust runtime and then the whole security collapses down as a house of cards. It's bad to think on security by just using a language.
by anthk 4y ago
Find an error on the Rust runtime and then the whole security collapses down as a house of cards.
It's bad to think on security by just using a language.
- lalaithion 4y agoI mean, the same is true with the C runtime.
- hulitu 4y ago> I mean, the same is true with the C runtime. My c compiler does not connect to internet during compiling.
- some_furry 4y agoWhat do you do if a dependent .so isn't found? Do you not have to install said dependency from the Internet and start (at least part of) the compile over?
- overthrow 4y agoNor does the Rust compiler. Rust's build system, Cargo, does however. And many C build systems do as well, e.g. https://cmake.org/cmake/help/latest/guide/using-dependencies/index.html#downloading-and-building-from-source-with-fetchcontent https://cmake.org/cmake/help/latest/guide/using-dependencies...
- steveklabnik 4y agoOptionally. Cargo doesn’t have to connect to the internet, and even has command line switches to fail if it tries to.
- hulitu 4y agoGood to know.
- hulitu 4y agoThank you for the tip. I shall do ifconfig eth0 down before compiling to avoid such issues.
- ittan 4y agoIsn't "C Runtime" inaccurate? Wouldn't it be the static or dynamic linked libraries for the particular program in question?
- pjmlp 4y agoNope, what do you think calls into main(), does floating point emulation, handles signals on non UNIX platforms, provides threading support?
- dahfizz 4y agoThe term "runtime" is overloaded here. The C runtime is not what people usually mean when they say a language has a runtime. There is a crt.0 "C Runtime" object. This is code that is literally run "at runtime". When you execute a binary, the C runtime is the first thing executed to setup the stack and call main(). This is just a bit of assembly that runs before main(). It shares ~nothing in common with "runtime" languages like Python or Java where the runtime is alive during the whole program's execution. The C run time does not handle floats or threads or anything like that. Software floats are dealt with by the compiler and threading is implemented as its own library (either in userspace or built into the kernel).
- pjmlp 4y agoI guess you can educate Microsoft on that then. https://learn.microsoft.com/en-us/cpp/c-runtime-library/c-run-time-library-reference?view=msvc-170 https://learn.microsoft.com/en-us/cpp/c-runtime-library/c-ru... It doesn't matter what people think, rather the CS point of view of a language runtime is. That library is the runtime. C implementation without the respective runtime is what is called a freestanding implementation as per ISO C.
- lanstin 4y agoLibraries and crt0.o and the like. Libgcc_s ; but it isn’t a runtime in the sense that some magic is doing GC or scheduling for routines. ABI that describes what the assembly should be doing, it isn’t a thing doing stuff.
- smt88 4y agoNo one is saying they should switch languages and stop all other security work.
- hulitu 4y agoNo need for errors. Just a compromised package on crates.io. It's funny how rust is praised as secure without any code audit.
- iknowstuff 4y agoYeah your single header libs from pastebin get so many audits by comparison. https://github.com/RustSec/rustsec/tree/main/cargo-audit https://github.com/RustSec/rustsec/tree/main/cargo-audit https://mozilla.github.io/cargo-vet/ https://mozilla.github.io/cargo-vet/ Besides, every dependency is locked.
- haswell 4y agoSecurity means many things, and supply chain vulnerabilities are just one of many factors to evaluate when considering languages. Rust improves or eliminates some issues, but that does not imply that other issues are magically solved.
- fnordpiglet 4y agoI don’t think people generally say secure, they say safe. Safe is necessary but insufficient for secure. The existing implementations assume safety by diligence. Rust promises safety by construction. That’s useful. But, to your point, insufficient. People that say secure when they mean safe are just wrong.
- MattPalmer1086 4y agoRust doesn't have a runtime. Nobody is suggesting that a language solves all security issues. It does have much better memory safety than C, which is the cause of the majority of security issues.
- duped 4y agoRust has a minimal runtime (0), and links to libc by default which brings in the libc runtime (so it's not like C is any better). Except that the Rust runtime is written in Rust, which is nice for memory safety. (0) https://prev.rust-lang.org/en-US/faq.html#does-rust-have-a-runtime https://prev.rust-lang.org/en-US/faq.html#does-rust-have-a-r...
- MattPalmer1086 4y agoWell, opinions in the Rust community clearly differ: "Rust is blazingly fast and memory-efficient: with no runtime or garbage collector" [0] I guess it depends on what you mean by a runtime. Panic handlers and initialisation code is a pretty small runtime. [0] https://www.rust-lang.org/ https://www.rust-lang.org/
- samus 4y agoEven if there are error, the impact of each error would not be higher than if it occurred in libc or any other language runtime.