내 컴퓨터에서 버퍼 오버플로 방지를 비활성화하는 방법이 있습니까?

내 컴퓨터에서 버퍼 오버플로 방지를 비활성화하는 방법이 있습니까?

Debian 6, Ubuntu 12.04, Fedora 16을 포함하여(이에 국한되지 않음) 다양한 가상 머신에서 버퍼 오버플로 실험을 실행하고 싶지만 버퍼 오버플로 공격을 실행하려고 할 때마다 다음 메시지가 나타납니다.

stack smashing detected (core dumped)

좀 조사한 끝에 이것이라는 프로그램이라는 것을 알게 되었습니다.버퍼 오버플로 방지컴파일러에서 구현됩니다.걸프 협력 협의회예를 들어GCC 스택 스매시 프로텍터(ProPolice),클랭/llvm사용두 개의 버퍼 오버플로 감지기, SafeCode 및 AddressSanitizer.

내 질문은: 버퍼 오버플로 공격을 확인하고 싶기 때문입니다.내 컴퓨터에버퍼 오버플로 보호를 비활성화할 수 있는 방법(컴파일러 플래그, Linux 구성 파일 등)이 있습니까?

답변1

걸프 협력 협의회

gcc( man gcc)에서 확인은 다음과 같이 활성화됩니다.

  -fstack-protector
      Emit extra code to check for buffer overflows, such as stack smashing attacks.  >This is done by adding a guard variable to functions with
      vulnerable objects.  This includes functions that call alloca, and functions with >buffers larger than 8 bytes.  The guards are initialized when
      a function is entered and then checked when the function exits.  If a guard check >fails, an error message is printed and the program exits.

  -fstack-protector-all
      Like -fstack-protector except that all functions are protected.

no-옵션 이름 앞에 추가하면 둘 다 비활성화 할 수 있습니다 .

-fno-stack-protector -fno-stack-protector-all

LLVM/클랭

LLVM/Clang 정보(http://clang.llvm.org/docs/UsersManual.html#commandline) AdressSanitizer를 활성화/비활성화합니다.

-f[no-]address-sanitizer: 메모리 오류 감지기인 AddressSanitizer를 켭니다.

및 보안 코드(http://safecode.cs.illinois.edu/docs/UsersGuide.html)

-f[none-] 메모리 안전

관련 정보