Conversation

"Rust doesn't check integer overflow" is one of the worst reasons I've ever heard to avoid it in favor of a non-memory-safe language. You can turn on Rust integer overflow checks with a compiler flag. You can't turn on memory safety in non-memory-safe languages.
12
351
Replying to and
Not at all since the only issues it finds reliably are linear overflows. It can't detect temporal safety issues when allocations are out of the quarantine and can't detect most out-of-bounds accesses but rather only special cases. It can't detect anything within objects either.
2
5
Replying to and
Sure they arenโ€™t the same but not that different either. The tools available for โ€œmemory unsafeโ€ languages (like asan, valgrind) catch the vast majority of memory bugs. Acting like itโ€™s the wild wild west for C/C++ is silly.
1
Replying to and
They detect memory corruption when it occurs at runtime not the presence of the memory corruption bugs. If the current usage of the program doesn't trigger memory corruption with those bugs, there's nothing for them to detect. They're far from detecting the vast majority of them.
1
In almost any mature program, the vast majority of memory corruption bugs will be latent issues not actually corrupting memory between objects during regular usage. ASan only detects memory corruption when it occurs, only between objects (not within) and nowhere close to all.
2
Replying to and
Finding bugs with ASan during regular usage / testing is a demonstration of the program having memory corruption bugs to the point that the bugs are corrupting memory during regular use, not just adversarial conditions. It's not relevant data or experience with this at all.
1
Even after writing great domain-specific fuzzers to use with ASan, clearly there are still a massive amount of edge cases triggering memory corruption that are left undiscovered. ASan can only find what actually happens at runtime, and as stated above, only a subset of that.
1
The statistics for major real world open source projects where security research is actually done in any significant way would be totally impossible if you could find most memory corruption bugs by simply running the program in ASan through regular usage or their test suites.
1
Show replies
Replying to and
The Linux kernel is an incredibly large and complex code base used by billions of applications each day, which obviously influences rate of bug detection. Iโ€™m not aware of any such project written in a memory safe language, so what are you comparing this with?
1
Replying to and
Linux kernel is one example of the overall example I was using which is Android, an OS that's largely written in Kotlin and Java with the other half of the OS written in C and C++. Half of the codebase for both groups of languages are externally developed open source projects.
1
1
Show replies