검색 여닫기
검색
메뉴 여닫기
518
228
4
2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Keeping Safe Rust Safe with Galeed 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Keeping Safe Rust Safe with Galeed
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류: ACSAC]] ACSAC 2021 == 개요 == Rust는 sound하지만 incomplete하다. 이러한 단점을 극복하기 위해서 러스트는 unsafe keyword를 제공함으로써 외부 unsafe한 언어로 적힌 라이브러리들을 import할 수 있도록 한다. 그러나 이러한 라이브러에서 발생한 error는 전체 safe한 러스트에도 영향을 가한다. 이를 분리 하기위해서 runtime check를 각 코드에 가함으로써 메모리가 분리되어 영향을 끼치지 못하도록 하였다. == Design == 우선 Rust code는 Unsafe code영역 즉 Unsafe code가 allocated 한 메모리 영역에 모두 접근 할 수 있지 그 반대의 경우에는 unsafe code area에서만 접근할 수 있도록 하였다. 이를 위하여 다음과 같은 Design을 제시하였다. * Heap Isolation: Unsafe code와 Safe code (RUST)가 사용하는 힙의 Access를 분리함. * Heap Splitting: Rust와 external library가 사용하는 힙을 분리함. * Access checking (i.e. Sanitizer): 러스트 내부의 포인터를 직접 제공하지 않고 API와 id를 제시함으로써 Rust code에서 지정된 동작으로 적절한 응답이 왔는지 체크할 수 있도록 함. 이떄 Heap Isolation그리고 Heap Splitting은 [[libmpk]]를 통해서 구현하였다. 또한 Access checking은 Pesudo-pointer개념을 Rust macro와 C API를 통하여 구현하였다. 여기서 이러한 Access checking을 위해서 기존의 pointer based방식을 id verfication으로 바꾸기 위해서 자동화된 LLVM을 통하여 자동으로 바뀔수 있도록 즉 developer의 노력을 덜 수 있도록 하였다.
Keeping Safe Rust Safe with Galeed
문서로 돌아갑니다.