메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Building Bridges: Safe Interactions with Foreign Languages through Omniglot

noriwiki


Building Bridges: Safe Interactions with Foreign Languages through Omniglot
AuthorLeon Schuermann and Jack Toubes, Princeton University; Tyler Potyondy and Pat Pannuto, University of California San Diego; Mae Milano and Amit Levy, Princeton University
ConferenceUSENIX OSDI 2025
pdfhttps://www.usenix.org/conference/osdi25/presentation/schuermann
Year2025



개요

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
외부 코드가 잘 작성되었을 가정을한다.