3 ms·
WASM is a sandbox. It doesn't obviate memory safety measures elsewhere. A program with a buffer overflow running in WASM can still be exploited to do anything t
by quotemstr 1y ago
WASM is a sandbox. It doesn't obviate memory safety measures elsewhere. A program with a buffer overflow running in WASM can still be exploited to do anything that program can do within in WASM sandbox, e.g. disclose information it shouldn't. WASM ensures such a program can't escape its container, but memory safety bugs within a container can still be plenty harmful.
- bonzini 1y agoAt least WASM can be added incrementally. Fil-C is all or nothing and it cannot be used without rebuilding everything. In that respect a sandbox ranks lower in comprehensiveness but higher in practicality and that's the main issue with Fil-C. It's extremely impressive but it's not a practical solution for C's memory safety issues.
- CryZe 1y agoYou can buffer overflow in fil-c and it won't detect it unless the entire buffer was its own stack or heap allocation with nothing following it (and also it needs to be a multiple of 16 bytes, cause that's padding that fil-c allows you to overflow into). So it arguably isn't much different from wasm. Quick example: typedef struct Foo { int buf[2]; float some_float; } Foo; int main(void) { Foo foo = {0}; for (size_t i = 0; i < 3; ++i) { foo.buf[i] = 0x3f000000; printf("foo.buf[%zu]: %d\n", i, foo.buf[i]); } printf("foo.some_float: %f\n", foo.some_float); } This overflows into the float, not causing any panics, printing 0.5 for the float.