20160122

1. [ASPLOS’12] Clearing the clouds: a study of emerging scale-out workloads on modern hardware 읽기 (paper)
– 새롭게 등장하는 scale-out workload가 컴퓨팅 자원을 많이 요구하고 있음. Scale-out workload는 기존의 desktop, parallel, server workloads와는 다른 특성을 보인다. 현재의 데이터 센터 방식을 적용하면 scale-out workload의 연산 밀도가 낮을 수밖에 없다. 이 논문에서는 scale-out workload를 대표하는 벤치마크인 CloudSuite를 소개하고, 현재의 마이크로 아키텍쳐가 scale-out workload에 적합하지 않게 설계되어 있음을 이야기한다. 어떤 부분에서 scale-out workloads에 적합하지 않게 설계되어 있는지, 그리고 어떤 변경이 필요한지를 이야기한다.
– Scale-out workload는 높은 instruction cache miss rate을 보인다. Instruction cache와 prefetcher가 scale-out workload에 대해서는 잘 동작하지 않는다. Scale-out workload에서는 명령어 및 메모리 수준의 병렬성이 매우 낮다. 현대의 프로세서는 OoO로 실행하기 위해 매우 복잡하지만, scale-out workload에는 이러한 설계 방식이 이득을 주지 못한다. Scale-out workload의 작업 집합이 매우 커서, 캐시에 들어가지 못하고 있다. LLC가 프로세서에서 큰 영역을 차지하고 있지만, scale-out workload의 성능 향상에 도움을 주지 못하고 있다. Scale-out workload의 대역폭 요구량이 낮다. Scale-out workload는 coherence가 크게 필요하지 않다.
– Scale-out workload의 특징으로는 1) 대량의 데이터 집합을 여러 대의 머신에 나누어 연산한다는 것, 2) 상태 공유 없는 여러 개의 독립적인 요청을 처리한다는 점, 3) 신뢰할 수 없는 머신들 위에서도 실행 가능한 소프트웨어를 사용한다는 점, 4) job 분배를 위해 머신 간 통신을 적극적으로 활용한다는 점이 있다.


2. [ASPLOS’13] Iago attacks: why the system call API is a bad untrusted RPC interface 읽기 (paper, slides)
– 어플리케이션을 신뢰할 수 없는 커널 위에서 안전하게 실행하고자 하는 연구들이 있었음. Overshadow에서는 이러한 목적을 달성하기 위해, 커널이 어플리케이션의 페이지를 읽거나 쓰지 못하게 하도록 VMM을 가져다 씀. 하지만 악의적인 커널로부터 어플리케이션을 보호하는 것은 생각보다 더 어렵다. Overshadow와 같은 격리 방법을 사용한다 하더라도, 어플리케이션은 결국 운영체제의 도움을 받아야 하고, 이 때문에 system call이 필수적이게 됨. System call의 응답값을 조작함으로써 악의적인 운영체제는 어플리케이션에서 임의의 코드를 실행할 수 있다.
Iago overshadow introduction.PNG
– 도입부에서 악의적인 커널이 system call을 조작하는 것이 어떻게 위험할 수 있는지 예를 들어 설명하고 있음. Apache에서 SSL을 사용하고 있는데, SSL에서는 getpid()와 time() system call을 사용해 각 연결을 유일하게 확인한다. 이를 통해 replay attack을 방어할 수 있음. 그런데 커널이 악의적인 경우에는 getpid()와 time() system call을 조작해, 늘 같은 값을 사용하도록 할 수 있다. 이렇게 되면 이전에 들어온 패킷을 기억해두었다가 replay attack을 할 수 있다.
iago attack apache example.PNG
– mmap과 read 과정에서 커널이 악의적인 조작을 통해 stack 영역에 쓰기를 수행하도록 함으로써, 임의 코드 실행을 가능하도록 할 수 있다.
mmap read normal.PNG
mmap read malicious.PNG
standard IO normal.PNG
standard IO malicious.PNG
– malloc 내부 코드의 루틴을 설명하며 어떻게 brk() 함수의 리턴값을 조작해 원하는 코드를 실행할 수 있는지 설명하고 있음. 앞에서 보여준 두 공격보다 더 영향이 크다. 이 경우는 malloc을 쓰는 모든 경우가 대상이 되기 때문이다. malloc 관련 내용이 이 논문에서 중요한 부분을 차지하고 있음. 하지만 내용이 너무 자세하고 복잡해, 여기에 옮겨쓰기에는 어려움.
– 운영체제의 system call이 얼마나 위험할 수 있는지 보여줬다는 점에서 유의미하다고 생각함. 게다가 실제로 위협이 되는 몇 가지 공격 사례를 보여주었다는 점에서 좋았음. malloc 공격 부분은 글만 보아서는 이해하기 힘들었고, 발표 슬라이드를 보고서야 이해함. brk()의 리턴 값만을 조작했을 뿐인데 임의 코드를 실행할 수 있다는 점이 충격적이었음. 하지만 곰곰히 생각해보면 당연함. 프로그램은 제어문의 집합이므로, 제어문의 인자가 되는 값들을 수정하는 것은 결국 임의로 코드를 실행하는 것과 같음.


3. [ISCA’14] The CHERI Capability Model – Revisiting RISC for an Age of Risk 발표 듣기
– 저번에 논문을 읽으려 했었는데, 잘 이해가 되지 않았다. 이번에도 다시 읽고 있는데도 이해가 잘 되지 않아 발표 자료를 찾아 들어보았다.
– The CHERI Capability Model – Revisiting RISC for an Age of Risk, http://sms.cam.ac.uk/media/1743801
– CHERI capability model은 modern RISC processor에서 practical한 capability model을 구현하고자 하는 것. Memory safety란 무엇인가? enforcement of the language object model. 현재의 프로세서는 충분히 fine-grained하게 메모리를 보호하고 있지 못함.
– 메모리 보호 기법은 새로운 문제는 아니다. 1960년대의 컴퓨터에서는 오히려 fine-grained한 보호 기법을 적용함. 1970, 1980년대에는 capability machine이 있었음 (IBM, Intel). RISC revolution이 있은 뒤로는 성능 향상에 초점이 맞추어짐. 1990년대에 page-based memory 관리 기법에 정착하게 됨. 그러던 중에 2000년대 중반에 보안 위협이 커짐. 이를 해결하고자 인텔에서 Intel MPX를 내놓음.
memory safety deprecation and demand.PNG– Capability란 무엇인가? capability는 unforgeable token of authority이다. 열쇠와 같다. classic하고 efficient한 접근 제어 방법이다. file descriptors(Capsicum, L4), segment descriptors(CAP, Intel iAPX), pointers in a virtual machine(Java, .Net), bounded pointers(M-Machine) 등이 capability이다.
– CHERI에서의 capability는 unforgeable fat pointer를 의미한다.
CHERI capability.PNG
– CHERI에서는 RISC에서 capability machine를 구현하고자 함. single-cycle instructions, load/store architecture, compiler & OS manage capabilities의 특징을 가질 것.
– 이와 동시에 useful RISC capability machine을 구현하고자 함. 가상화를 지원하고 compatibility를 유지하고자 page-table을 그대로 사용한다. 그리고 64bit MIPS ISA를 확장해 사용한다.
CHERI address validation and pointer safety.PNG– Paged memory model은 운영체제가 관리하며, swapping이 가능하다. 중앙에서 메모리를 관리하며, address validation을 지원함. Address validation이란 특정 주소에 대한 접근 권한을 지정할 수 있는 것. Capability model은 compiler가 관리하며, 정확하고, 위임될 수 있다. pointer safety를 지원한다. CHERI는 paged memory model과 capability model의 두 가지 장점을 모두 갖는다.
– Capability register는 base, length, permission의 구조를 갖는다.
CHERI register.PNG
– 총 32개의 capability register가 있으며, 이 중에 C0는 legacy code를 위한 implicit capability register로 동작한다.
capability register file implicit.PNG
– 캐시에서 capability register를 저장한 값은 bit로 표시한다.
tags to protect capabilities in memory.PNG

Advertisements
Tagged with: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s

Recent Posts
누적 방문자 수
  • 146,251 hits
%d bloggers like this: