버퍼 오버리드

위키백과, 우리 모두의 백과사전.

버퍼 오버리드(buffer over-read[1])는 버퍼에서 데이터를 읽는 과정에서 버퍼의 경계를 초과하고 인접한 메모리를 읽는 프로그램의 이례이다. 이것은 메모리 보안 침해의 특별한 케이스이다.

버퍼 오버리드는 하트블리드 버그에서처럼 경계 확인의 부족을 익스플로잇하여 의도치않은 메모리의 접근을 하도록 고안된 악의적으로 조작된 입력에 의해 발생한다. 이것들을 또한 프로그래밍 오류 자체적으로 발생할 수도 있다. 버퍼 오버리드는 메모리 접근 오류, 부정확한 결과, 충돌 등의 프로그램의 오류를 유발한다. 그러므로 이것들은 많은 소프트웨어 취약점들의 기본이며, 권한을 가진 정보에 접근하기 위해 악의적으로 익스플로잇될 수 있다.

일반적으로 버퍼 오버리드와 관련된 프로그래밍 언어C와 C++인데, 이것들은 가상 메모리의 한 부분에 접근하는 포인터의 사용에 대한 빌트인 보호를 제공하지 않는다. 그리고 자동적으로 메모리의 블록에서 읽는 데이터를 안전한지 확인하지 않는다. 각각의 예시들은 배열이 포함하는 요소들 그 이상을 읽으려고 시도하거나, 문자열 종료를 위한 널 문자열 추가의 실패가 발생한다. 퍼징은 이것들을 찾는데 도움을 주고, 경계 확인은 버퍼 오버리드를 예방할 수 있다.[2]

같이 보기[편집]

각주[편집]

  1. “CWE – CWE-126: Buffer Over-read (2.6)”. Cwe.mitre.org. 2014년 2월 18일. 2014년 4월 10일에 확인함. 
  2. “Efficient protection against heap-based buffer overflows without resorting to magic” (PDF). Dept. of Computer Science, Katholieke Universiteit Leuven. 2013년 2월 25일. 2013년 9월 5일에 원본 문서 (PDF)에서 보존된 문서. 2014년 4월 24일에 확인함. 

외부 링크[편집]