Earlier quoted context omitted.
WebAssembly also has its security issues. Lack of bounds checking for multiple data accesses mapped to the same linear memory block.
How would you enforce bounds checking while supporting unsafe languages?
Secondly, nor ISO C or ISO C++ forbid implementations that do bounds checking by default. In fact that is what most modern compilers do by default in debug mode.
Finally look at memory tagging in Solaris SPARC ADI, Apple iOS or the upcoming ARM extensions support on Android for how bounds checking is enforced at hardware level while supporting unsafe languages.