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을 두는 기술
728x90