개요

Virtual instruction set computing (VISC)는 ISA디자인시에, 프로세서가 사용할 ISA와 컴파일되는 ISA가 일치하지 않는 환경을 말한다. 컴파일러가 만드는 virtual ISA (vISA)는 프로세서가 사용할 ISA로 compile time, link time, install time, boot time, 혹은 Just-in-time 러와 같은 특정 상황에서 실제 ISA로 변환 되게 된다.

Secure Virtual Architecture

Secure Virtual Architecture (SVA)는 VISC중에서 코드 생성기가 vISA의 Security를 체크하는 환경을 말한다. SVA는 LLVM IR을 확장하여서, 추가적인 Run-time security checks와 static analysis가 가능하도록 변경한다. 만약 Operating system에 사용된다면, I/O, MMU ㅎ혹은 Context change와 같은 일들이 안전하게 이루어질 수 있도록 Additional한 Security check을 더하도록 이용될 수도 있다.

SVA를 제대로 사용하기 위해서는 Control flow integrity가 보장되어, 프로그램이 SVA를 해칠 수 있는 특정 명령어, (예 - reboot, int3)를 사용할 수 없도록 하여야 한다. 이를 위해서 메모리의 Access permission을 write 과 execute를 XOR로 하거나, 아니면 Hardware protection을 이용하는 법, 혹은 SFI를 이영하는 법들이 사용되어 진다.

더 자세한 내용은 Secure Virtual Architecture: A Safe Execution Environment for Commodity Operating Systems[1]참고.

References

  1. Hardening Hypervisors with Ombro
  2. Secure Virtual Architecture: A Safe Execution Environment for Commodity Operating Systems