20161011

시스템 보안 개론
* execution only memory가 code reuse attack에 대한 방어가 될 수 있음.
* Smashing the gadgets: gadget의 길이가 길면 길수록 side effect가 많이 생김 (엔트로피가 커짐). ret를 최대한 줄여서 entropy를 높이는 기법이 smashing the gadgets이다.
* 읽기 권한을 주지 않고 실행만 가능하도록 하는 것이 XnR. locality window에 기반하여 읽기 권한을 주면 XnR을 구현할 수 있음. 기본적으로는 읽기 권한을 빼앗고, 현재 읽는 코드 주변으로 읽기 권한을 준다. Page fault가 발생하면 page fault handler가 임시로 읽기 권한을 준다. domain access control register(DACR)가 있으면 더 높은 성능으로 이를 구현할 수 있다.
* long-NOP gadget을 방어하는 방법? 코드 길이가 중요한 것이 아니라, 상태 변화가 중요하다. 상태 변화가 얼마나 많으냐에 따라 공격인지 아닌지 판단한다.

* Trusted Execution Environment: security critical logic을 물리적으로 다른 영역에서 실행하도록 하는 것. 그리고 그 영역은 다른 어플리케이션이 접근할 수 없도록 한다.
* 역사: Capability system, reference monitor, protection rings
* monolithic kernel은 모든 서비스가 같은 주소 공간 상에 있음. microkernel은 서비스마다 각자 자신의 주소 공간을 가짐. 프로세스의 가상 메모리 주소 공간도 일종의 보호 기법이라고 생각할 수 있다. monolithic kernel에서 하나의 LKM이 문제를 일으키면 전체 커널이 망가짐. 이러한 위험을 줄이고자 커널 프로세스를 쪼개는 것이 microkernel. 하지만 microkernel은 performance overhead가 크다는 문제가 있음(context switch, 그리고 TLB flush 발생). DACR이 있으면 microkernel의 성능이 높아질 수 있으나, 하드웨어 지원이 더이상 없다고 함.
* TEE 환경이 도입되어도 여전히 바이너리 공격에 대한 연구가 필요한가? TEE에서 실행되는 바이너리, 그리고 그 외의 바이너리 실행에 대해서도 방어가 필요하다. Availability에 대한 공격이 있을 수도 있다.

* TEE는 실제로 어떻게 구현이 될까? 명령어 해석할 때 mode bit을 두고 판단한다. mode bit이 적절히 설정되어 있어야 TEE의 메모리를 접근할 수 있다. 메모리 접근 명령어에서만 mode bit을 확인하면 된다. TEE 모드에서는 TEE 메모리만 접근 가능, REE 모드에서는 REE 메모리만 접근 가능.
* TrustZone을 사용해서 kernel integrity monitor를 구현할 수 있다.

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

누적 방문자 수
  • 88,328 hits
%d bloggers like this: