20160906

1. 시스템 보안 개론
* SEH overwriting은 canary를 우회할 수 있다.

* gets(buf) 함수는 입력으로 들어오는 스트링의 크기를 확인하지 않는다는 문제가 있다. 입력 크기를 확인해서 문제를 해결할 수 있음. 예전에는 쉽게 버퍼 오버플로우가 가능했는데, 요즘에는 시스템에 메모리 보호 기법이 적용되어 공격이 쉽지 않다.
– NX(DEP) 기법이 적용되어 있기 때문이다. 메모리에 쓰기와 실행 권한을 동시에 주지 않음으로써 방어한다.
– NX 기법을 우회하고자 하는 공격이 return oriented programming(ROP)이다. ret로 끝나는 실행 코드들을 조합하여 공격 코드를 생성한다. 스택에 주소를 쌓아두고, ret로 끝나는 가젯으로 뛰면 됨. ROP가 안 된다면 JOP도 가능하다. jmp로 끝나는 실행 코드를 조합하는 것. Code reuse attack(CRA)라고 불리기도 함. 이러한 CRA 공격을 방어하기 위해 ASLR을 적용한다.

* 입출력을 받는 프로세스는 신뢰할 수 없는 입력을 외부에서 받기 때문에 공격받기 쉽다.

* 더 안전한 코드를 생성하기 위한 컴파일러 옵션: NX, PIE, RELRO, Canary, linking
– NX는 stack, heap을 non executable로 설정하는 것.
– Position independent executable(PIE)는 base address를 randomize하는 것. ROP 공격에서 가젯을 이용하기 어렵게 만든다. 커널이 바이너리 로딩 시점에 바이너리의 base address를 random하게 만들어 줌.
– RELRO라는 메모리 보호 기법이 있음. 공유 라이브러리를 사용하는 어플리케이션들에서 함수를 사용할 때 dynamic linking을 사용한다. 이렇게 dynamic link함으로써 바이너리의 크기를 줄이고, 재컴파일 없이도 라이브러리를 업데이트할 수 있다. Dynamically linked 바이너리들은 실행 중에 lazy binding한다. Dynamic linked된 함수를 호출하게 되면, procedure linkage table(PLT)를 호출한다. 그리고 PLT는 다시 global offset table (GOT)를 참조해 함수를 호출한다 (링크, 링크). 따라서 GOT를 덮어씌움으로써 함수를 바꿔치기할 수 있다. RELRO는 relocation read-only의 약자로, 프로세스의 데이터 섹션을 보호하는 기법이다. 이를 통해 GOT 변조를 방어할 수 있다(링크).
– Canary는 stack overflow를 탐지하기 위한 기법. 컴파일러는 canary를 넣는 코드를 바이너리에 삽입하고, 커널이 이를 실행해 canary를 넣고 확인한다.

* 운영체제에서 user와 kernel의 메모리 크기 비율에 따라 stack address의 시작 주소가 달라질 수 있다. 사용자 메모리 영역과 커널 메모리 영역의 크기 비율을 1:1, 3:1로 split할 수 있다. 리눅스에서는 3:1, 윈도우에서는 1:1로 나눈다고 함.

* Heap buffer overflow는 stack overflow와 다르다. Heap 영역은 동적으로 할당받는 메모리 영역. 다른 프로세스가 사용하고 있는 heap 영역의 데이터를 덮어씌움으로써 공격할 수 있다. 요즘에는 heap buffer overflow 외에는 모두 막혔다고 함.

* 성능 향상 및 공간 효율성을 위해 memory allocator가 heap을 관리한다. Memory allocator에 대한 좋은 링크
* Memory allocator는 일반적으로 같은 크기의 블록끼리 묶어서 관리하며, 16 bytes chunk로 관리한다.
* Heap overflow는 heap에 할당된 자료구조를 덮어씌움으로써 공격을 수행한다. 자료구조가 가리키는 곳을 변경함으로써 공격.

* 스택에 너무 많은 데이터를 할당하면 stack overflow 발생함. Guard page를 사용해 stack overflow를 방어할 수 있다.


2. Samsung Galaxy S7의 branch predictor에 neural network가 쓰였다고 한다.
http://www.theregister.co.uk/2016/08/22/samsung_m1_core/

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 )

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

누적 방문자 수
  • 93,201 hits
%d bloggers like this: