20161115

시스템 보안 개론
* 오늘 수업에서는 address translation redirection attack을 이야기할 것. 시스템은 가상 주소로 동작하고, kernel integrity monitor는 물리 주소를 사용해서 동작한다. ATRA 공격은 주소 매핑을 바꿔서, monitoring 영역 밖으로 critical region을 변경하는 공격임.
* CPU의 microcode를 바꾸면 가상 주소에 대한 monitoring을 수행할 수 있을지도 모른다.
* ATRA 공격을 어떻게 방어하나? 운영체제에서 페이지 테이블 관리를 제거하고, 모든 페이지 테이블 관리를 TrustZone에서 수행하도록 한다.
* 한 개의 프로세스가 여러 개의 페이지 테이블을 가질 수 있도록 하는 것은 유용할 수 있다. 전체 주소 공간을 여러 개의 영역으로 나누고, domain access control register(DACR)을 사용해 접근 권한을 줄 수 있다. DACR의 설정에 따라 특정 영역에만 접근 가능하도록 하는 것. 이를 통해 중요 영역을 보호할 수 있다. 아니면 TLB에 bit을 추가해서, CPU mode에 따라 접근 가능 여부를 결정하도록 할 수 있다.
* 시스템 콜 변조가 일반적으로 흔히 발생하는 공격인데, 이렇게 하면 시스템 전체에 영향을 주게 됨. 따라서 탐지 가능성이 높아짐. 조금 더 고도화된 공격에서는 특정 프로세스가 사용하는 시스템 콜에만 영향을 준다. 이렇게 하기 위해서느 page table을 변조하여, 시스템 콜 테이블 접근시 다른 쪽에 접근하도록 만듦. 시험 문제 – 페이지 테이블을 사용해 특정 프로세스에만 영향을 주는 공격을 설명하라.
* Copilot, Vigilare, KI-Mon, Mguard 모두 physical address만 본다는 한계점이 있음.
* page table의 주소는 CR3 레지스터가 잡고 있음. context switch가 발생할 때 CR3 레지스터가 스케쥴러에 의해 업데이트된다. kernel object는 직접 변조할 수 없으므로, page table entry를 수정해 메모리를 가리키는 영역을 변경하면 됨. 이 영역을 방어하려면, page table entry도 모니터링하면 됨. 이를 우회하기 위해 CR3 값을 직접 변경하면 됨. 스케쥴러 코드에서 변경해야 함.
* CR3 변경 명령을 커널에서 제거하고, 이를 신뢰할 수 있는 환경에서 수행하도록 하는 방어 기법이 있다. 다른 방법으로, CR3가 덮어쓰는 것을 방지하는 방법이 있다. 처음 프로세스 생성될 때 외에는 CR3가 변경될 일이 없다.
* memory bound ATRA를 방어하기 위해서는 주소 변환 과정에서의 모든 page table을 다 봐야 한다는 문제가 있다.
* ATRA 공격에서는 IDTR을 사용해서 CR3를 변경했다. ATRA 공격 이후에 TLB flush를 해줘야 하고, 이 때문에 성능 저하가 발생한다.

Advertisements
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,685 hits
%d bloggers like this: