“…Compartmentalization offers a strong, practical defense against a range of devastating low-level attacks, such as control-flow hijacks exploiting buffer overflows and other vulnerabilities in C, C++, and other unsafe languages [18,33,81]. Widely deployed compartmentalization technologies include process-level privilege separation [18,33,47] (used in OpenSSH [67] and for sandboxing plugins and tabs in web browsers [69]), software fault isolation [74,79] (e.g., Google Native Client [84]), WebAssembly modules [34] in modern web browsers, and hardware enclaves (e.g., Intel SGX [38]); many more are on the drawing boards [14,20,71,81]. These mechanisms offer an attractive base for building more secure compilation chains that mitigate low-level attacks [30,33,44,65,[75][76][77].…”