Building Bridges: Safe Interactions with Foreign Languages through Omniglot | |
---|---|
Author | Leon Schuermann and Jack Toubes, Princeton University; Tyler Potyondy and Pat Pannuto, University of California San Diego; Mae Milano and Amit Levy, Princeton University |
Conference | USENIX OSDI 2025 |
https://www.usenix.org/conference/osdi25/presentation/schuermann | |
Year | 2025 |
개요
Memory, type safety language와 같은 경우에는 버그를 없애긴 하지만 100% 완벽하게 버그를 없앨 수는 없다. 이는 Unsafe한 파트가 항상 존재하기 때문이다. Omniglot은 Rust의 safety와 soundness에 대한 면밀한 분석을 통해서 Unsafe한 파트(즉 unsafe library)와 아닌 Safe라이브러리의 분리를 통해서 안전한 시스템을 달성하고자 하였다. Omniglot은 kernel와 POSIX Compatible user-level library두 모델로 포팅되었으며, 두 경우 모두 성능과 안정성 모두 State-of-the-art의 경향을 보였다.
Motivation & Importance
아무리 safe한 언어로 semantic으로 프로그램을 작성한다고 하더라도, 결국에는 성능 혹은 Compatibility를 위해서 unsafe한 라이브러리/코드를 사용하게 된다. 기존에는 이러한 unsafe한 부분때문제 전체 시스템의 안정성이 위협받았다.
Main Idea
우선 모든 Unsafe한 파트를 하나의 라이브러리에 몰아 넣는다. 그리고 Language safety를 이용해서, 모든 unsafe한 코드 수행을 sandboxing하는 framework를 통해서만 호출하도록 한다.
Design
급하게 읽어서 정리가 부족할 수 있으며, 내용에 일부 오류가 있을 수도 있습니다.
- Memory Safety
- Intel MPK와 같은 하드웨어 기반의 Memory sandboxing mechanism을 적용하여서 Memory safety를 달성한다.
- Aliasing and Mutability
- API디자인을 통해서 구현
- Type Safety
- Return value를 Taint type으로 하여서, Return시에 Runtime check를 통해서 Taint한지 안한지를 체크한다.
- Concurrently
- 외부 코드가 잘 작성되었을 가정을한다.