ASLR (Address Space Layout Randomization)을 일시적으로 비활성화하려면 어떻게해야합니까?


답변:


75

기사에 따르면 효과는 ASLR 리눅스 시스템에 어떻게? /proc/sys/kernel/randomize_va_space인터페이스를 사용하여 Linux에서 ASLR을 구성 할 수 있습니다 .

다음과 같은 값이 지원됩니다.

  • 0 – 무작위 화가 없습니다. 모든 것이 정적입니다.
  • 1 – 보수적 무작위 화. 공유 라이브러리, stack,, mmap()VDSO 및 힙은 무작위입니다.
  • 2 – 완전 무작위 화. 이전 지점에 나열된 요소 외에도 관리되는 메모리 brk()도 무작위로 지정됩니다.

따라서 비활성화하려면 다음을 실행하십시오.

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

다시 활성화하려면

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space

재부팅 후에도 유지되지 않으므로에서에서 구성해야합니다 sysctl. 다음을 포함하는 파일 /etc/sysctl.d/01-disable-aslr.conf을 추가하십시오 .

kernel.randomize_va_space = 0

영구적으로 비활성화해야합니다.


1
"완전 무작위 화"란 정확히 무엇입니까? 실행 파일 자체도 포함되어 있습니까? 그리고 무엇 brk()입니까?
Shuzheng

26

/proc/sys/kernel/randomize_va_space인터페이스는 ASLR의 시스템 전체 제어합니다.

시스템 전체의 변경을 원하지 않으면 ADDR_NO_RANDOMIZE 성격 을 사용하여 ASLR을 일시적으로 비활성화하십시오. 이 특성 플래그 제어 는 명령 앞에 추가 setarch하고 -R옵션 ( 맨 페이지 )을 사용 하여 수행 할 수 있습니다 .

다음을 사용하여 완전히 새로운 쉘을 여는 것이 정말 편리하다는 것을 알았습니다.

setarch `uname -m` -R /bin/bash

그러면 모든 하위 프로세스 (이 셸에서 실행되는 프로그램)를 포함하여 ASLR을 비활성화 한 상태로 새 Bash 셸이 열립니다.

그냥 exit이 완료되면 쉘.


그건 그렇고, i386에서 ulimit -s unlimitedASLR을 "비활성화"할 수 있습니다.


편집 (2016 년 4 월) :이 ulimit -s unlimited수정되어 CVE-2016-3672로 지정 되었습니다 .


util-linux의 정신에 대한 사소한 세부 사항 : 본질적으로 동일한 바이너리 인을 uname -m사용할 수도 있습니다 arch.
drumfire

1
@drumfire arch는 busybox 애플릿으로 사용할 수 없습니다
youfu

2 년 후 돌아와 CVE 관련 정보를 추가 한 +1
Multisync

3

ASLR을 비활성화하는보다 영구적 인 방법은 명백한 이유로 VM에 보관해야합니다.

스택 프레임의 반환 주소 등등을 덮어 쓸 수있는 능력을 테스트하기 위해, 당신은 스택 카나리아없이 컴파일해야합니다 -fno-stack-protector당신은 당신이 컴파일 할 필요가 스택에서 코드를 실행할 수 있도록하면서, -z execstack만들기

$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c

2

sudo sysctl kernel.randomize_va_space=0ASLR을 일시적으로 비활성화 하는 데 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.