현재 위치 - 중국오락넷 - 공연예술정보 - 버퍼 오버플로 공격의 원리는 무엇인가요?

버퍼 오버플로 공격의 원리는 무엇인가요?

범주: 컴퓨터/네트워크 gt; 컴퓨터 지식

분석:

1파인트 용량의 물에 1갤런의 물을 부으면 , 물이 도처에 튀어 오르면 넘침의 의미를 완전히 이해하게 될 것입니다. 마찬가지로, 컴퓨터 내에서도 제한된 메모리 공간에 너무 많은 데이터를 저장하면 데이터가 저장 공간을 초과하게 됩니다. 입력 데이터는 일반적으로 임시 공간에 저장되는데, 이 임시 저장 공간을 버퍼라고 하며, 버퍼의 길이는 프로그램이나 운영 체제에 의해 미리 정의되어 있습니다.

버퍼 오버플로란 무엇입니까?

버퍼 오버플로는 컴퓨터 프로그램이 버퍼 자체가 저장할 수 있는 것보다 더 많은 데이터 비트로 버퍼를 채울 때 발생합니다. 초과된 데이터는 법적 데이터를 덮어씁니다. 이상적으로는 프로그램이 데이터 길이를 확인하고 버퍼 길이를 초과하는 문자열의 입력을 허용하지 않습니다. 그러나 대부분의 프로그램은 데이터 길이가 항상 할당된 저장 공간과 일치한다고 가정하므로 버퍼 오버플로에 대한 숨겨진 위험이 발생합니다. 운영 체제에서 사용하는 버퍼를 스택이라고도 합니다. 각 작업 프로세스 사이에 명령이 일시적으로 스택에 저장되며 스택에서 버퍼 오버플로가 발생할 수 있습니다.

지나치게 긴 데이터가 버퍼에 들어가면 초과 부분은 다른 버퍼에 기록됩니다. 다른 버퍼는 데이터, 다음 명령에 대한 포인터 또는 다른 프로그램을 덮어쓰거나 파괴할 수 있습니다. . 소량의 데이터나 명령어 세트의 오버플로로 인해 프로그램이나 운영 체제가 충돌할 수 있음을 알 수 있습니다.

오버플로의 근본 원인은 프로그래밍에 있습니다.

버퍼 오버플로는 프로그래밍 오류로 인해 발생합니다. 버퍼가 꽉 차서 프로그램이 버퍼 경계를 확인하지 않거나 데이터 수신을 중단하면 버퍼 오버플로가 발생합니다. 버퍼 경계 확인은 수익성이 없는 관리 비용으로 간주됩니다. 컴퓨터 리소스가 부족하거나 메모리가 부족하여 프로그래머가 버퍼 경계 확인 문을 작성하지 않는 이유가 무어의 법칙에 의해 존재 근거를 잃게 되었지만 여전히 대부분의 사용자는 주요 애플리케이션에서 10년, 심지어 20년 전의 코드를 실행합니다.

버퍼 오버플로가 만연하는 이유는 오픈소스 프로그램의 특성 때문입니다. 일부 프로그래밍 언어는 버퍼 오버플로에 영향을 받지 않습니다. 예를 들어 Perl은 바이트 배열의 크기를 자동으로 조정할 수 있고 Ada95는 버퍼 오버플로를 확인하고 방지할 수 있습니다. 그러나 널리 사용되는 C 언어에는 감지 메커니즘이 없습니다. 표준 C에는 문자열을 복사하고 추가하는 많은 기능이 있으므로 표준 C에서는 경계 검사가 어렵습니다. C++가 약간 더 나아졌지만 버퍼 오버플로가 여전히 존재합니다. 일반적인 상황에서는 다른 데이터 영역의 데이터를 덮어쓰는 것은 의미가 없으며 기껏해야 응용 프로그램 오류가 발생할 수 있습니다. 그러나 입력 데이터가 "해커"나 바이러스에 의해 신중하게 설계되면 버퍼의 데이터를 덮어쓰는 것이 바로 결과입니다. 침입 프로그램 코드의 추가 바이트가 컴파일되고 실행되면 "해커" 또는 바이러스는 원하는 모든 작업을 수행하고 시스템을 제어할 수 있습니다.

오버플로는 "해커" 바이러스의 만연한 확산으로 이어집니다.

버퍼 오버플로는 바이러스 작성자와 트로이 목마 작성자가 선호하는 공격 방법입니다. 공격자나 바이러스는 시스템에서 버퍼 오버플로가 발생할 가능성이 있는 곳을 찾아내고, 특수 프로그램을 실행하고, 우선 순위를 획득하고, 컴퓨터에 파일 파괴, 데이터 변경, 민감한 정보 유출, 백도어 액세스 포인트 생성, 다른 사람을 감염시키거나 공격하도록 지시하는 데 능숙합니다. 컴퓨터.

2000년 7월, 마이크로소프트 아웃룩과 아웃룩 익스프레스에는 이메일 헤더 프로그램만 실행하면 공격자가 대상 호스트의 보안을 침해할 수 있는 취약점이 발견됐다. 버퍼 오버플로가 발생하고 악성 코드가 발생합니다. 2001년 8월 '코드 레드'는 마이크로소프트 IIS 취약점을 이용해 버퍼 오버플로를 유발해 기업 네트워크 공격의 '범인'이 됐다. 2003년 1월, Slammer 웜은 Microsoft SQL 취약점을 이용하여 버퍼 오버플로를 일으키고 전 세계 인터넷에 영향을 미쳤습니다.

최근에는 "Shockwave"라는 웜이 Microsoft의 RPC 원격 호출의 버퍼 취약점을 이용하여 Windows 2000/XP 및 Windows Server 2003을 공격하여 전 세계 네트워크 시스템에 영향을 미치고 있습니다. CERT 보안팀에 따르면 운영 체제의 50개 이상의 보안 취약점은 메모리 오버플로로 인해 발생하며, 대부분은 Microsoft 기술과 관련되어 있습니다.

버퍼 오버플로는 현재 "해커" 바이러스가 만연하는 주된 이유입니다. Code Red부터 Slammer, 최근의 "Shock Wave"까지 모두 버퍼 오버플로 취약점을 악용하는 전형적인 예입니다. 버퍼 오버플로는 프로그래밍 문제입니다. 버퍼 오버플로를 이용한 공격을 예방하는 열쇠는 프로그램 개발자가 프로그램을 개발할 때 오버플로 상황을 주의 깊게 확인하고 데이터가 버퍼를 넘지 않도록 하는 것입니다. 또한 사용자는 발표된 시스템 취약점을 추적하고 적시에 패치를 다운로드하며 시스템 취약점을 보완하기 위해 운영 체제 및 애플리케이션 제공업체의 웹사이트에 자주 로그인해야 합니다.

copyright 2024중국오락넷