CS/컴퓨터보안
[Computer security] - Stack Buffer Overflow defense
sliver__
2022. 3. 15. 21:38
728x90
[Stack Buffer Overflow Defense]
- Compile-Time Defense
- Run-Time Defense
- Compile-Time Defense
- Compile time에 buffer overflow가 있는지 감지
- Compile time에 buffer에 대한 check 및 code에 대한 체크의 비용을 주고서라도 검사를 하는 언어를 사용하자
- pointer 사용과 memory access를 할 때 안전성을 항상 생각하고 코드를 짜자
- use safety library
- Stack Guard
- canary value를 frame pointer address, return address 하위에 넣어준다. 그리고 함수 종료 코드에 도달했는데 canary value가 변경되었는지 확인한다. 만약에 buffer overflow로 인한 변경이 감지되었으면 프로그램을 중단한다.
- Run-Time Defense
- Excutable address space protection
- shell-code(machine code) 실행 block
- processor의 Memory-management-unit(MMU) page인 virtual memory를 실행불가능하게 만든다.(Solaris에서만 사용가능, no-excute bit를 변경)
- Address Space Randomization
- Stack의 주소 위치를 무작위로 변경한다.
- 그러나 잘못된 memory reference로 프로그램이 중단된다.
- Guard Page
- critical한 memeoy 지역에 여유분의 virtual memory를 사용하여 gap을 두는 기술
- Excutable address space protection
728x90