컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 버퍼 오버플로란 무엇인가요?

버퍼 오버플로란 무엇인가요?

버퍼 오버플로는 다양한 운영 체제와 응용 프로그램 소프트웨어에 널리 존재하는 매우 일반적이고 위험한 취약점입니다. 버퍼 오버플로 공격은 프로그램 오류, 시스템 종료, 다시 시작 및 기타 결과를 초래할 수 있습니다. 더욱 심각한 점은 승인되지 않은 명령을 실행하고 심지어 시스템 권한을 획득하는 데 사용될 수 있으며 다양한 불법적인 작업을 수행할 수 있다는 것입니다.

버퍼 오버플로의 원리

프로그램의 버퍼 길이를 초과하는 내용을 쓰면 버퍼 오버플로가 발생하여 프로그램의 스택이 파괴되어 프로그램이 중단되는 현상이 발생합니다. 대신에 공격 목적을 달성하기 위해 다른 명령을 실행하십시오. 버퍼 오버플로의 원인은 사용자가 입력한 매개변수를 프로그램에서 주의 깊게 확인하지 않기 때문입니다. 예를 들어 다음 프로그램은 다음과 같습니다. void function(char *str) {char buffer[16]; strcpy(buffer, str);} 위의 strcpy()는 str의 내용을 버퍼에 직접 복사합니다. 이런 식으로 str의 길이가 16보다 크면 버퍼가 오버플로되고 프로그램이 잘못 실행됩니다. strcpy와 같은 문제가 있는 표준 함수로는 strcat(), sprintf(), vsprintf(), gets(), scanf() 등이 있습니다. 물론, 무심코 버퍼에 내용을 채워서 오버플로를 발생시키는 것은 일반적으로 "세그먼트 오류"만 발생시키고 공격의 목적을 달성할 수 없습니다. 가장 일반적인 방법은 버퍼 오버플로를 생성하여 프로그램이 사용자 셸을 실행하도록 한 다음 셸을 통해 다른 명령을 실행하는 것입니다. 프로그램이 루트에 속하고 suid 권한이 있는 경우 공격자는 루트 권한이 있는 셸을 획득하고 시스템에서 모든 작업을 수행할 수 있습니다. 버퍼 오버플로 공격이 일반적인 보안 공격 방법이 된 이유는 버퍼 오버플로 취약점이 너무 흔하고 구현하기 쉽기 때문입니다. 게다가 버퍼 오버플로가 원격 공격의 주요 수단이 된 이유는 버퍼 오버플로 취약점이 공격자에게 공격 코드 이식과 실행 등 원하는 모든 것을 제공하기 때문이다. 이식된 공격코드는 버퍼오버플로우 취약점이 있는 프로그램을 특정 권한으로 실행시켜 공격받은 호스트에 대한 제어권을 획득한다. 1998년에 Lincoln Labs가 침입 탐지를 평가하기 위해 사용한 5건의 원격 공격 중 2건은 버퍼 오버플로였습니다. 1998년에는 CERT의 13개 권장 사항 중 9개가 버퍼 오버플로와 관련이 있었습니다. 1999년에는 권장 사항 중 최소한 절반이 버퍼 오버플로와 관련이 있었습니다. Bugtraq의 설문 조사에서 응답자의 2/3는 버퍼 오버플로 취약점이 심각한 보안 문제라고 생각했습니다. 버퍼 오버플로 취약점과 공격은 다양한 형태로 나타나며 섹션 2에서 설명하고 분류합니다. 이에 따라 방어 방법도 공격 방법에 따라 달라지는데, 이에 대해서는 각 공격 유형에 대한 효과적인 방어 방법을 포함하는 4장에서 설명합니다.

上篇: 노트북 어떤 구성으로 월드 오브 워크래프트를 할 수 있나요? 下篇: 셴무파이란 무엇인가요?
관련 내용