차례:
정의-스택 스매싱이란 무엇입니까?
스택 스매싱은 컴퓨터 응용 프로그램이나 OS의 스택이 오버플로되는 취약점의 한 형태입니다. 이로 인해 프로그램 / 시스템이 파괴되어 중단 될 수 있습니다.
선입 선출 (first-in last-out) 회로 인 스택은 그 안에있는 작업의 중간 결과를 보유하는 버퍼 형태입니다. 단순화하기 위해 스택 스매싱은 보유 용량보다 많은 데이터를 스택에 넣습니다. 숙련 된 해커는 고의로 과도한 데이터를 스택에 도입 할 수 있습니다. 과도한 데이터는 함수 반환 주소를 포함한 다른 스택 변수에 저장 될 수 있습니다. 함수가 반환되면 스택의 악성 코드로 이동하여 전체 시스템이 손상 될 수 있습니다. 스택의 인접 데이터가 영향을 받고 프로그램이 강제로 중단됩니다.
Techopedia는 스택 스매싱을 설명합니다.
스택 스매싱의 영향을받는 프로그램이 신뢰할 수없는 네트워크의 데이터를 받아 특수한 권한으로 실행하는 경우 보안 취약점이 발생합니다. 버퍼에 신뢰할 수없는 사용자가 제공 한 데이터가 포함되어 있으면 실행 코드를 프로그램에 삽입하여 스택이 손상되어 컴퓨터에 대한 무단 액세스를 얻을 수 있습니다. 공격자는 스택에 저장된 제어 흐름 정보를 덮어 쓸 수도 있습니다.
스택 스매싱이 매우 심각한 취약점으로 성장함에 따라 특정 기술은 스택 스매싱 재해를 극복하기 위해 구현됩니다. 스택 버퍼 오버 플로우 방지는 함수 호출의 스택 프레임에서 데이터 구성을 변경하여 카나리아 값을 포함합니다. 파괴 될 때이 값은 메모리에서 선행하는 버퍼가 오버 플로우되었음을 나타냅니다. 카나리아 값은 버퍼 오버플로를 모니터링하고 제어 데이터와 스택의 버퍼 사이에 배치됩니다. 이렇게하면 버퍼 오버 플로우가 먼저 카나리아를 손상시킵니다. 카나리아 데이터 확인에 실패하면 스택의 오버플로를 나타냅니다. 카나리아의 세 가지 유형은 Random, Terminator 및 Random XOR입니다.
터미네이터 카나리아는 스택 버퍼 오버플로 공격이 터미네이터에서 끝나는 문자열 작업에 의존한다는 사실을 기반으로합니다. 임의의 카나리아는 엔트로피 수집 데몬에서 임의로 생성되므로 공격자가 값을 알 수 없습니다. 무작위 카나리아는 프로그램 초기화시 생성되어 전역 변수에 저장됩니다. 랜덤 XOR 카나리아는 제어 데이터를 사용하여 XOR 스크램블링되는 랜덤 캐리어입니다. 카나리아를 가져 오는 "스택 방법에서 읽기"가 복잡하다는 점을 제외하면 임의 카나리아와 유사합니다. 해커는 원래 카나리아를 생성하기 위해 카나리아, 알고리즘 및 제어 데이터가 필요합니다. 이들은 제어 데이터의 일부를 가리 키도록 포인터를 변경하기 위해 구조의 버퍼에 버퍼로 넘치는 공격을 방지합니다.
