[Security]스택 가드, 스택 클린업 기법

Hyenna·2023년 5월 16일
0

Security

목록 보기
10/10

🔰스택 가드(Stack Guard) 기법

  • 버퍼 오버플로우 공격을 방지하기 위한 기법 중 하나
  • 컴파일러가 소스 코드를 컴파일할 때, 스택에 값을 덮어쓰는 공격으로부터 보호하기 위해, 스택의 각 프레임(Frame)에 무작위 값(random value)을 삽입 -> 함수 종료 시 해당 값을 검사하여 변경된 값이 있다면 프로그램을 종료시키고 경고 메시지를 출력
  • 실행 시간에 추가적인 오버헤드를 발생시키므로, 프로그램의 실행 속도를 느리게 할 수 있다는 단점이 있다.

⛽스택 클린업(Stack Cleanup) 기법

  • 함수 호출 시 스택 프레임에 저장된 지역 변수와 관련된 메모리 누수를 방지하기 위해 사용되는 기법입니다.
  • 함수의 중간에서 return이나 예외 처리 등의 이유로 함수 호출이 이루어지지 않는 상황이 발생하면, 스택 프레임이 소멸되지 않아 메모리 누수가 발생할 수 있다.
  • 함수 호출 시에 스택 프레임 내부에 지역 변수의 개수나 크기를 저장하고 함수의 반환 시점에 지역 변수가 소멸되도록 스택 프레임을 조작
  • 컴파일러가 자동으로 수행하므로, 개발자가 별도로 코드를 작성할 필요가 없다.
  • 일부 컴파일러에서는 이 기능을 지원하지 않을 수도 있으며, 이 경우 개발자가 수동으로 스택 클린업 기법을 구현해야 한다.

0개의 댓글