{"issue":"POPL","publication_identifier":{"issn":["2475-1421"]},"status":"public","type":"journal_article","publication_status":"published","oa_version":"Published Version","publication":"Proceedings of the ACM on Programming Languages","volume":4,"date_created":"2024-09-05T08:36:52Z","quality_controlled":"1","author":[{"last_name":"Sammler","full_name":"Sammler, Michael Joachim","first_name":"Michael Joachim","id":"510d3901-2a03-11ee-914d-d9ae9011f0a7"},{"last_name":"Garg","first_name":"Deepak","full_name":"Garg, Deepak"},{"full_name":"Dreyer, Derek","first_name":"Derek","last_name":"Dreyer"},{"last_name":"Litak","full_name":"Litak, Tadeusz","first_name":"Tadeusz"}],"language":[{"iso":"eng"}],"publisher":"Association for Computing Machinery","page":"1-32","user_id":"317138e5-6ab7-11ef-aa6d-ffef3953e345","scopus_import":"1","extern":"1","day":"20","abstract":[{"text":"Sandboxing is a common technique that allows low-level, untrusted components to safely interact with trusted code. However, previous work has only investigated the low-level memory isolation guarantees of sandboxing, leaving open the question of the end-to-end guarantees that sandboxing affords programmers. In this paper, we fill this gap by showing that sandboxing enables reasoning about the known concept of robust safety, i.e., safety of the trusted code even in the presence of arbitrary untrusted code. To do this, we first present an idealized operational semantics for a language that combines trusted code with untrusted code. Sandboxing is built into our semantics. Then, we prove that safety properties of the trusted code (as enforced through a rich type system) are upheld in the presence of arbitrary untrusted code, so long as all interactions with untrusted code occur at the “any” type (a type inhabited by all values). Finally, to alleviate the burden of having to interact with untrusted code at only the “any” type, we formalize and prove safe several wrappers, which automatically convert values between the “any” type and much richer types. All our results are mechanized in the Coq proof assistant.","lang":"eng"}],"main_file_link":[{"open_access":"1","url":"https://doi.org/10.1145/3371100"}],"_id":"17506","article_processing_charge":"No","title":"The high-level benefits of low-level sandboxing","citation":{"ieee":"M. J. Sammler, D. Garg, D. Dreyer, and T. Litak, “The high-level benefits of low-level sandboxing,” Proceedings of the ACM on Programming Languages, vol. 4, no. POPL. Association for Computing Machinery, pp. 1–32, 2019.","mla":"Sammler, Michael Joachim, et al. “The High-Level Benefits of Low-Level Sandboxing.” Proceedings of the ACM on Programming Languages, vol. 4, no. POPL, Association for Computing Machinery, 2019, pp. 1–32, doi:10.1145/3371100.","ama":"Sammler MJ, Garg D, Dreyer D, Litak T. The high-level benefits of low-level sandboxing. Proceedings of the ACM on Programming Languages. 2019;4(POPL):1-32. doi:10.1145/3371100","chicago":"Sammler, Michael Joachim, Deepak Garg, Derek Dreyer, and Tadeusz Litak. “The High-Level Benefits of Low-Level Sandboxing.” Proceedings of the ACM on Programming Languages. Association for Computing Machinery, 2019. https://doi.org/10.1145/3371100.","ista":"Sammler MJ, Garg D, Dreyer D, Litak T. 2019. The high-level benefits of low-level sandboxing. Proceedings of the ACM on Programming Languages. 4(POPL), 1–32.","apa":"Sammler, M. J., Garg, D., Dreyer, D., & Litak, T. (2019). The high-level benefits of low-level sandboxing. Proceedings of the ACM on Programming Languages. Association for Computing Machinery. https://doi.org/10.1145/3371100","short":"M.J. Sammler, D. Garg, D. Dreyer, T. Litak, Proceedings of the ACM on Programming Languages 4 (2019) 1–32."},"doi":"10.1145/3371100","month":"12","date_updated":"2024-09-10T09:58:57Z","date_published":"2019-12-20T00:00:00Z","oa":1,"year":"2019","article_type":"original","intvolume":" 4"}