2 ms·
Again, language-level safety doesn't matter here It very well can: For example, let's assume you have a graphics editor running in the browser that stores fil
by cygx 3y ago
Again, language-level safety doesn't matter here
It very well can:
For example, let's assume you have a graphics editor running in the browser that stores files in the cloud. If it uses a vulnerable C library to decode image data, an attacker might be able to play havoc with your files despite the sandbox never technically having been breached.
This can be mitigated by either using a safe language, or having the decoder run in an isolated wasm instance. Either way, you have to design your application with these considerations in mind and can't just take arbitrary, potentially vulnerable applications, compile them to wasm and be done with it.
- flohofwoe 3y agoThe worst that can happen is that the image tool saves back a corrupted image. But that's also possible with a buggy (but memory safe) Rust image loader/saver, memory safety doesn't automatically fix all classes of bugs. Apart from that it would be quite a feat to use internal memory corruption for anything useful in WASM, because both the code and callstack live outside the sandbox and are not accessible from within (e.g. tricks like return-oriented programming are not possible in WASM.
- cygx 3y agohttps://www.youtube.com/watch?v=glL__xjviro&t=450s https://www.youtube.com/watch?v=glL__xjviro&t=450s Instead of popping up an alert, you could have requested the deletion of all files in the cloud storage.
- flohofwoe 3y agoThanks for the link, very interesting! But TBF: the 'host program' has to be written in a very specific way to allow that rogue Javascript execution, it's very similar to allowing an SQL injection to happen. I also wonder why stack canaries wouldn't work on WASM, since the compiler creates stack frames on the data-only stack just the same (but maybe Clang's `-fstack-protector` doesn't work for some reason in WASM, I'll actually need to check that).