문제

Windows와 Unix의 버퍼 오버플로 간의 보안 문제를 파악하려고 합니다.

내가 이해하는 바에 따르면, 버퍼 오버플로 Windows 해킹은 각 프로세스에 고유한 메모리 공간이 제공되기 때문에 Unix에서는 구현할 수 없습니다.이는 Windows의 프로세스가 메모리 공간을 공유한다는 의미입니까?

도움이 되었습니까?

해결책

공유 메모리 공간은 대부분의 버퍼 오버 플로우 익스플로잇의 이유가 아닙니다. Windows는 승리 3.0 (또는 80286에서 3.1 승리) 이후 공유 메모리를 가지고 있지 않으므로 공유 메모리 모델을 지원하는 Windows가 마지막으로 배송 되었기 때문에 거의 20 년이 지났습니다.

버퍼 오버 플로우를 사용하면 공격자가 악용되는 프로세스에서 메모리를 변경할 수 있습니다. 이를 통해 공격자는 대상 프로세스의 권한 수준을 사용하여 시스템 작업 (예 : 프로세스 시작 또는 동적 라이브러리를로드하거나 특정 사용자의 권한을 변경하는 등)을 실행하는 것을 목표로합니다.

이것은 WIN * 플랫폼, * NIX 플랫폼 및 기타 여러에서 가능합니다. OS와 악용되고있는 응용 프로그램 이이 시도를 다루는 방법은 차이를 만드는 것입니다. 애플리케이션 측면에서 신중한 버퍼 크기 점검은 일반적으로이를 피하기 위해 필요한 것입니다. ASLR과 같은 기술 (주소 공간 레이아웃 무작위 배정, 공격자가 피해를 입히기 위해 호출 해야하는 기능의 주소를 추측하지 못하게 함) 및 DEP (데이터 실행 방지, 공격자가 데이터 영역에 실행 가능한 코드를 주입하지 못하게 함). OS에 의해 엄청나게 도움이됩니다. OS 측에서는 응용 프로그램을 루트/관리자로 실행하지 않는 것이 아마도 가장 중요한 방어선 일 것입니다.

다른 팁

Windows와 Unix 프로세스 모두 메모리 격리가 있습니다. 버퍼 오버플로 공격은 두 환경 모두에서 발생할 수 있습니다.

아마도 "버퍼 오버플로 Windows 해킹"이 무엇을 의미하는지 명확히 해야 할 것입니다.버퍼 오버플로가 반드시 다른 프로세스의 코드를 수정할 필요는 없습니다.

예:다음에서 읽기 cin 고정 크기 바이트 배열을 사용하여 사용자 정의 코드를 실행할 수 있습니다.프로그램 자체가 루트로 실행되면 Unix나 Windows 모두 해킹을 방지하기 위해 아무것도 할 수 없습니다. 메모리 격리는 전혀 도움이 되지 않습니다.

Todd가 지적했듯이 Windows와 Unix는 둘 다 메모리 격리가 가능합니다. DEP 또는 ASLR).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top