Hello there. Now I feel uncomfortable. Who am I to talk in the presence of experts.
To generate the LLVM code correctly you need to run build.rs if there is any
Good point.
and run proc macros which are natively compiled compiler plugins
Hmm. When I read “Given the existence of macros”, I didn’t really think of compiler plugins. If that’s what was meant, then I apologize for what looks now like an ELI5 comment.
The compilation process can be sandboxed as a whole, but if it runs arbitrary code, a malicious crate could take over the build process and falsify the LLVM output.
Given that crater
not only builds crates, but also runs tests, one would hope that such things wouldn’t sneak to painter unnoticed!
Apology appreciated, but unnecessary.
I don’t want to derail a useful tool. It’s worth going a bit beyond “hope” as a strategy, however, and thinking about if (how) this might be exploited.
I doubt anyone will be mining crypto in your sandbox. But perhaps you should think about detection; might it be possible to mask a malicious crate with a second that attempts to detect sandboxed compilation, for instance?
In any case, I think this still looks exceedingly interesting in the typical case, which is of detecting the impact of bugs from non-malicious actors.