주소공간 배치 랜덤화

Address space layout randomization

ASLR(Address Space Layout Randomization)은 메모리 손상 취약성악용을 방지하는 컴퓨터 보안 기술입니다.[1] ASLR은 공격자가 예를 들어 메모리의 특정 공격 함수로 안정적으로 점프하는 것을 방지하기 위해 실행 파일의 기본과 스택, 라이브러리의 위치를 포함하여 프로세스의 주요 데이터 영역의 주소 공간 위치를 무작위로 배열합니다.

역사

리눅스 PaX 프로젝트는 "ASLR"이라는 용어를 처음 만들었고 2001년 7월 리눅스 커널을 위한 패치로서 ASLR의 첫 번째 설계와 구현을 발표했습니다. 2002년 10월부터 커널 스택 랜덤화를 위한 패치를 제공하는 완전한 구현으로 간주됩니다.[2]

ASLR을 기본적으로 지원하는 최초의 메인스트림 운영 체제는 2003년 OpenBSD 버전 3.4였고,[3][4] 2005년 리눅스가 그 뒤를 이었습니다.

혜택들

주소 공간 무작위화는 공격자가 대상 주소를 예측하는 것을 더 어렵게 하여 일부 유형의 보안 공격을 방해합니다. 예를 들어, libc 복귀 공격을 실행하려는 공격자는 실행할 코드를 찾아야 하는 반면, 스택에 주입된 코드를 실행하려는 다른 공격자는 먼저 스택을 찾아야 합니다. 두 경우 모두 시스템은 공격자로부터 관련 메모리 주소를 숨깁니다. 이러한 값을 추측해야 하며, 애플리케이션 충돌로 인해 일반적으로 잘못된 추측을 복구할 수 없습니다.

유효성

주소 공간 레이아웃 랜덤화는 공격자가 무작위로 배치된 영역의 위치를 추측할 가능성이 낮은 것을 기반으로 합니다. 검색 공간을 늘려 보안성을 높였습니다. 따라서 주소 공간 랜덤화는 랜덤 오프셋에 엔트로피가 더 많이 존재할 때 더 효과적입니다. 엔트로피는 랜덤화가 발생하는 가상 메모리 영역 공간의 양을 높이거나 랜덤화가 발생하는 기간을 줄임으로써 증가합니다. 기간은 일반적으로 가능한 한 작게 구현되므로 대부분의 시스템은 VMA 공간 랜덤화를 늘려야 합니다.

무작위화를 물리치려면 공격자가 공격하고자 하는 모든 영역의 위치를 성공적으로 추측해야 합니다. 사용자 지정 코드 또는 유용한 데이터를 로드할 수 있는 스택 및 힙과 같은 데이터 영역의 경우 코드 또는 반복된 데이터 복사본에 NOP 슬라이드를 사용하여 둘 이상의 상태를 공격할 수 있습니다. 따라서 영역이 소수의 값 중 하나로 무작위화되면 공격이 성공할 수 있습니다. 대조적으로, 라이브러리 베이스 및 주 실행 파일과 같은 코드 영역은 정확하게 검색되어야 합니다. 이러한 영역들은 종종 혼합되는데, 예를 들어 스택 프레임이 스택에 주입되고 라이브러리가 반환됩니다.

다음 변수를 선언할 수 있습니다.

  • 적층 상단의 엔트로피 비트)
  • 엔트로피 비트) mmap() 베이스)
  • 주 실행 가능한 베이스의 엔트로피 비트)
  • 엉덩이 베이스의 엔트로피 비트)
  • 와 같이(적층 엔트로피 시도당 공격 비트 수)
  • 시도당 공격 비트 수) mmap() 기저 엔트로피)
  • 주 실행 엔트로피 시도당 공격 비트 수)
  • 힙 기본 엔트로피 시도당 공격 비트 수)
  • mpts)
  • N엔트로피의 총 양: =(s - A s ) + (E m - A m ) + (E x - A x ) + (E h - A h ) {\displaystyl N = (E_{s}-A_{s}) + (E_{m}-A_{m}) + (E_{x}-A_{x}) + (E_{h}-A_{h})\,} )

공격자가 성공할 확률을 계산하려면 서명 기반 IPS, 법 집행 또는 기타 요인에 의해 중단되지 않고 수행된 시도 횟수 α가 가정되어야 합니다. 브루트 포스의 경우 데몬을 다시 시작할 수 없습니다. 각 시도에서 관련 비트 수와 공격되는 비트 수도 계산해야 하며, 공격자가 격파해야 하는 비트 수가 얼마나 되는지도 계산해야 합니다.

다음 공식은 N비트의 엔트로피에 대한 주어진 α 시도 집합에 대한 성공 확률을 나타냅니다.

  • = α일 경우 1 - (1 - 2 - N) α {\displaystyle g\left(\alpha \,\rigt) = 1-{\left(1-{2^{-N}\right)^{\alpha }\,}\,{\text{}일 경우 0\leq \,\alpha \ated 추측; 주소 공간은 각 시도 후에ndom화됩니다)
  • ) = 0 ≤ α ≤ 2 N일 경우 N {\displaystyle b\left(\alpha \,\rigt) = {\frac {\alpha \,}{2^{N}}\,{\text{}일 경우} 0\leq \,\alpha \,\leq \,{2^{N}}(동일한 주소 공간을 가진 프로그램 복사본에 대한 체계적인 단순 강제 적용)

많은 시스템에서 은 수천 또는 수백만에 이를 수 있습니다. 최신 64비트 시스템에서 이러한 수는 일반적으로 최소 수백만에 달합니다. Hector Marco-Gisbert와 Ismael Ripoll은 2014년 특정 상황에서 1초 이내에 64비트 시스템에서 ASLR을 우회하는 방법을 보여주었습니다.[5] 주소 랜덤화를 위한 16비트가 있는 2004년 컴퓨터 속도의 32비트 시스템의 경우, Shacham과 동료들은 "16비트의 주소 랜덤화는 몇 분 안에 무차별적인 공격에 의해 패배할 수 있습니다."[6]라고 말합니다. 저자의 진술은 동일한 애플리케이션을 지연 없이 여러 번 공격할 수 있는 능력에 달려 있습니다. grsecurity에 포함된 것과 같은 ASLR의 적절한 구현은 그러한 무차별적인 공격을 불가능하게 만드는 몇 가지 방법을 제공합니다. 한 가지 방법은 실행 파일이 특정 횟수만큼 충돌한 경우 구성 가능한 시간 동안 실행되지 않도록 하는 것입니다.

Android [7][non-primary source needed][which?]및 다른 시스템은 라이브러리 로드 순서 랜덤화(Randomization)를 구현합니다. 이는 라이브러리 로드 순서를 랜덤화하는 ASLR의 한 형태입니다. 이것은 매우 적은 엔트로피를 제공합니다. 필요한 라이브러리당 제공되는 엔트로피의 비트 수에 대한 대략적인 정보는 아래와 같습니다. 이는 아직 다양한 라이브러리 크기를 고려하지 않기 때문에 실제 엔트로피는 이보다 더 높습니다. 공격자는 일반적으로 하나의 라이브러리만 필요합니다. 수학은 여러 라이브러리로 더 복잡하며, 아래에도 나와 있습니다. 하나의 라이브러리만을 사용하는 공격자의 는 l = displaystyle l=1}에 대해 더 복잡한 공식을 단순화한 것입니다.

  • l(로드된 라이브러리 수)
  • β(공격자가 사용한 라이브러리 수)

공격자는 일반적으로 C 표준 라이브러리만 사용할 수 있으므로 = 1displaystyle \ beta \,= 1}이라고 가정할 수 있기 때문에 이러한 값은 l의 큰 값에서도 낮은 경향이 있습니다. 그러나 소수의 라이브러리에서도 몇 비트의 엔트로피를 얻을 수 있습니다. 따라서 라이브러리 로드 순서 랜덤화와 VMA 주소 랜덤화를 결합하여 몇 비트의 추가 엔트로피를 얻는 것은 잠재적으로 흥미로운 일입니다. 이러한 여분의 엔트로피 비트는 다른 mmap() 세그먼트에는 적용되지 않으며 라이브러리에만 적용됩니다.

엔트로피 감소

공격자는 무작위 주소 공간에 존재하는 엔트로피를 줄이기 위해 여러 가지 방법을 사용할 수 있습니다. 단순한 정보 유출에서 공격당 여러 비트의 엔트로피를 공격하는 것(예: 힙 분사)에 이르기까지 다양합니다. 이에 대해 할 수 있는 일은 거의 없습니다.

포맷 문자열 취약점을 이용하여 메모리 레이아웃에 대한 정보를 유출할 수 있습니다. 인쇄와 같은 형식 문자열 함수는 변수 인수 목록을 사용하여 작업을 수행합니다. 형식 지정자는 인수 목록의 모양을 설명합니다. 일반적으로 인수가 전달되는 방식 때문에 각 형식 지정자는 스택 프레임의 상단으로 더 가까이 이동합니다. 결국 리턴 포인터와 스택 프레임 포인터를 추출하여 취약한 라이브러리의 주소와 알려진 스택 프레임의 주소를 나타낼 수 있습니다. 이를 통해 라이브러리와 스택 랜덤화를 공격자의 장애물로 제거할 수 있습니다.

스택이나 힙의 엔트로피를 줄일 수도 있습니다. 스택은 일반적으로 16바이트로 정렬되어야 합니다. 따라서 이는 가능한 최소 랜덤화 간격입니다. 반면 힙은 페이지 정렬(일반적으로 4096바이트)해야 합니다. 공격을 시도할 때 이러한 간격으로 중복 공격을 정렬할 수 있습니다. NOP 슬라이드셸코드 주입 및 문자열과 함께 사용할 수 있습니다./bin/sh' '로 대체할 수 있습니다.////////bin/sh' 시스템으로 돌아가려고 할 때 임의 수의 슬래시에 대해. 제거된 비트 수는 정확히 ( _공격을 받은 n개의 간격에대해 \

이러한 감소는 스택 또는 힙의 데이터 양으로 인해 제한됩니다. 예를 들어, 스택은 일반적으로 8MB[8] 제한되고 훨씬 더 적게 증가합니다. 이는 최대 19비트를 허용하지만, 더 보수적인 추정치는 4-16KB[8] 스택 스터핑에 해당하는 약 8-10비트입니다. 반면 힙은 메모리 할당기의 동작에 의해 제한됩니다. glibc의 경우 mmap을 사용하여 128KB 이상의 할당이 생성되어 공격자가 5비트로 감소합니다. 이는 또한 단순한 강제성의 경우에도 제한적인 요소입니다. 수행해야 하는 공격의 수를 줄일 수는 있지만, 일부 상황에서는 침입 탐지 시스템에 동작이 분명해질 수 있을 정도로 공격의 크기가 증가합니다.

한계

ASLR로 보호되는 주소는 다양한 사이드 채널에 의해 유출될 수 있어 완화 효용을 제거할 수 있습니다. 최근의 공격은 CPU 분기 목표 예측 버퍼(BTB) 또는 메모리 관리 유닛(MMU) 워킹 페이지 테이블에 의해 유출된 정보를 사용하고 있습니다. 이러한 종류의 ASLR 공격이 완화될 수 있는지는 확실하지 않습니다. 그럴 수 없는 경우 ASLR의 혜택이 줄어들거나 없어집니다.

구현

몇몇 주류의 범용 운영 체제는 ASLR을 구현합니다.

안드로이드

Android 4.0 Ice Cream Sandwich는 ASLR(주소 공간 레이아웃 랜덤화)을 제공하여 메모리 관리 문제로 인한 악용으로부터 시스템 및 타사 애플리케이션을 보호합니다. 안드로이드 4.1에서는 위치에 구애받지 않는 실행 파일 지원이 추가되었습니다.[9] Android 5.0은 PIE가 아닌 지원을 중단했으며 동적으로 연결된 모든 바이너리는 위치에 독립적이어야 합니다.[10][11] 라이브러리 로드 오더 랜덤화는 2015년 10월 26일 안드로이드 오픈 소스 프로젝트에 승인되었으며,[7][non-primary source needed] 안드로이드 7.0 릴리스에 포함되었습니다.

드래곤플라이 BSD

DragonFly BSD는 OpenB 기반의 ASLR을 구현하고 있습니다.2010년에 추가된 SD의 모델.[12] 기본적으로 꺼져 있으며 sysctl vm.randomize_mmap을 1로 설정하여 사용할 수 있습니다.

프리BSD

FreeB에 ASLR 지원 표시SD 13.0.[13][14] 13.2 이후에는 기본적으로 활성화됩니다.[15]

iOS (iPhone, iPod touch, iPad)

애플iOS 4.3(2011년 3월 출시)에서 ASLR을 선보였습니다.[16]

KASLR은 iOS 6에 도입되었습니다.[17] 랜덤화된 커널 베이스는 0x01000000 + ((1+0xRR) * 0x00200000),어디에 0xRR 는 iBoot(2단계 iOS Boot Loader)에 의해 생성된 SHA1(랜덤 데이터)의 랜덤 바이트입니다.[18]

리눅스

리눅스 커널은 2005년 6월에 출시된 커널 버전 2.6.12 이후로 기본적으로 약한 형태의 ASLR을 활성화했습니다.[19] 리눅스 커널로 설정된 PaXExec Shield 패치 세트는 보다 완벽한 구현을 제공합니다. 리눅스용 Exec Shield 패치는 16바이트 주기로 19비트의 스택 엔트로피를 제공하고, 4096바이트의 1페이지 주기로 8비트의 mmap 기본 랜덤화를 제공합니다. 이는 스택 베이스를 524,288개의 가능한 위치를 포함하는 영역 8MB 너비에 배치하고 mmap 베이스를 256개의 가능한 위치를 포함하는 영역 1MB 너비에 배치합니다.

PIE(Position-independent executable)는 주 실행 파일 바이너리에 대한 랜덤 베이스 주소를 구현하며 2004년 4월 18일부터 시행되고 있습니다. 공유 라이브러리에 사용되는 것과 동일한 주소 무작위성을 주 실행 파일에 제공합니다. PIE 기능은 동일한 실행 파일에 대한 프리링크 기능과 함께 사용할 수 없습니다. 프리링크 도구는 런타임이 아닌 프리링크 시간에 랜덤화를 구현합니다. 왜냐하면 프리링크는 동적 링커가 실행되기 전에 라이브러리를 재배치하는 것을 처리하는 것을 목표로 하기 때문입니다. 이는 프로그램의 많은 실행에 대해 한 번씩 재배치가 이루어질 수 있도록 하기 때문입니다. 결과적으로, 실제 주소 공간 랜덤화는 프리링크의 목적을 무너뜨릴 것입니다.

실행 도메인을 변경하여 특정 프로세스에 대해 랜덤화를 비활성화할 수 있습니다. personality(2).[20]

2022년 5월에 출시된 리눅스 커널 5.18은 메모리 정렬로 인해 32비트와 64비트 구현의 효율성이 감소하여 32비트 응용 프로그램의 경우 libc가 고정 매핑되고 64비트 응용 프로그램의 경우 libc의 ASLR이 9비트 손실되는 특정 배포가 발생했습니다.

2024년 1월 8일 저스틴 밀러는 다음과 같은 취약점을 발표했습니다.[22]

그래서 요약하자면, 주요 파일 시스템은 thp_get_unmapped_area라고 부르는데, 이 패치를 사용하면 파일 백업 매핑을 일반적으로 수행할 수 있습니다. thp_get_unmapped_area Humge Pages에서 지원할 수 있으며, 일부 libc는 (최근에) 2MB를 돌파했습니다. 이 모든 것이 수렴되어 일부 디스트로스에서 32비트 응용 프로그램에 대한 수정 매핑이 수행되고 64비트 응용 프로그램에 대한 9비트의 libc의 ASLR이 손실되었습니다(또 그 영향은 디스트로스마다 다를 것입니다). 많은 응용 프로그램에서 사용되고 누구에게나 필요한 모든 ROP 장치가 있다는 이유만으로 libc를 강조해 왔습니다. 하지만 분명히 말씀드리자면, libc 뿐만 아니라 모든 라이브러리 >=2MB가 영향을 받을 수 있으며, 익명 매핑 >=2MB도 Ubuntu 22.04 시스템에서 2MB로 정렬되고 있지만, 그것이 무엇에 대한 것인지 아직 잘 모르겠습니다.

커널 주소 공간 레이아웃 랜덤화

커널 주소 공간 레이아웃 랜덤화(KASLR)는 부팅 시 커널 코드가 배치되는 위치를 랜덤화하여 리눅스 커널 이미지에 대한 주소 공간 랜덤화를 가능하게 합니다.[23] KASLR은 2014년 3월 30일에 출시된 커널 버전 3.14에서 리눅스 커널 메인라인에 병합되었습니다.[24] 에 컴파일되면 부팅 시 지정하여 비활성화할 수 있습니다. 커널의 부트 파라미터 중 하나로 notaslr.[25]

x86 프로세서에는 커널 주소가 유출될 수 있는 몇 가지 사이드 채널 공격이 있습니다.[26][27] 2017년 말, 이러한 공격을 물리치기 위해 커널 페이지 테이블 격리(KPTI 일명 KAISER)가 개발되었습니다.[28][29] 그러나 이 방법은 분기 예측기 구조의 충돌을 이용한 측면 채널 공격으로부터 보호할 수 없습니다.[30]

2021년 현재, 더 미세한 커널 주소 공간 레이아웃 랜덤화(또는 함수 과립형 KASLR, FGKASLR)는 함수 수준까지 랜덤화하기 위해 KASLR의 계획된 확장입니다.[31]

마이크로소프트 윈도우

마이크로소프트의 Windows Vista(2007년 1월 출시) 이후 버전에서는 ASLR을 사용할 수 있도록 특별히 링크된 실행 파일 및 동적 링크 라이브러리에 대해서만 ASLR을 사용할 수 있습니다.[32] 호환성을 위해 다른 응용프로그램에서는 기본적으로 사용할 수 없습니다. 일반적으로 이전 소프트웨어만 호환되지 않으며 레지스트리 항목을 편집하여 ASLR을 완전히 활성화할 수 있습니다. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages,[33]또는[33] Microsoft의 Enhanced Mitigation Experience Toolkit을 설치합니다.

, 스택, 프로세스 환경 블록 및 스레드 환경 블록의 위치도 랜덤화됩니다. Symantec의 보안 백서에서는 32비트 Windows Vista의 ASLR이 예상만큼 강력하지 않을 수 있으며, Microsoft는 구현의 약점을 인정했습니다.[34]

WehnTrust[35]오존[36] 같은 호스트 기반 침입 방지 시스템은 Windows XPWindows Server 2003 운영 체제용 ASLR도 제공합니다. WehnTrust는 오픈 소스입니다.[37] 오존의 구현에 대한 자세한 내용은 알 수 없습니다.[38]

2012년[39] 2월, Windows 8 이전의 32비트 Windows 시스템에서 ASLR은 메모리 부족 상황에서 그 효과가 감소할 수 있다고 언급했습니다. 같은 연구에서 리눅스에서도 비슷한 효과가 나타났습니다. 테스트 코드로 인해 Mac OS X 10.7.3 시스템이 커널 패닉에 빠졌기 때문에 이 시나리오에서는 ASLR 동작이 불분명합니다.

넷BSD

사용자랜드에서 ASLR을 지원하는 은 NetBSD 5.0(2009년 4월 출시)에서 나타났고,[40] 2016년 4월 NetBSD-current에서 기본적으로 활성화되었습니다.[41]

2017년 10월 NetBSD-current에서 커널 ASLR 지원이 추가되어 NetBSD는 KASLR을 지원하는 최초의 BSD 시스템이 되었습니다.[42]

오픈BSD

2003년 OpenBSD는 강력한 형태의 ASLR을 지원하고 기본적으로 활성화하는 최초의 메인스트림 운영 체제가 되었습니다.[3] 오픈비SD는 2008년 PIE 바이너리 지원을 추가하면서 ASLR 지원을 완료했습니다.[43] OpenBSD 4.4의 malloc(3)은 OpenB의 일부로 구현된 ASLR 및 gap page 기능을 활용하여 보안을 개선하도록 설계되었습니다.SD의 mmap 시스템 호출 및 사용 후 버그를 탐지합니다.[44] 2013년에 출시된 OpenBSD 5.3은 여러 하드웨어 플랫폼에서 기본적으로 위치 독립 실행 파일을 활성화한 최초의 메인스트림 운영 체제이며, OpenBSD 5.7은 기본적으로 위치 독립 정적 이진 파일(Static-PIE)을 활성화했습니다.[43]

macOS

Mac OS X Leopard 10.5 (2007년 10월 출시)에서 애플은 시스템 라이브러리에 대한 랜덤화를 도입했습니다.[45]

Mac OS X Lion 10.7(2011년 7월 출시)에서, Apple은 "모든 응용 프로그램에 대해 주소 공간 레이아웃 랜덤화(ASLR)가 개선되었습니다"라고 말하며 모든 응용 프로그램을 포함하도록 구현을 확장했습니다. 힙 메모리 보호 기능과 마찬가지로 32비트 응용 프로그램에 사용할 수 있게 되어 64비트 및 32비트 응용 프로그램이 공격에 더 강합니다."[46]

OS X Mountain Lion 10.8(2012년 7월 출시) 이후로는 커널을 포함한 전체 시스템과 kext 및 zone이 시스템 부팅 중 랜덤하게 재배치됩니다.[47]

솔라리스

ASLR은 Solaris 11.1(2012년 10월 출시)부터 Solaris에 도입되었습니다. Solaris 11.1의 ASLR은 시스템 전체, 존 단위 또는 바이너리 단위로 설정할 수 있습니다.[48]

착취

ASLR 보호를 우회하는 브랜치 타겟 버퍼를 이용한 측면 채널 공격을 증명하였습니다.[30] 2017년에는 자바스크립트를 사용하여 웹 브라우저에서 ASLR을 물리칠 수 있는 "ASLR ⊕Cache"라는 이름의 공격이 시연되었습니다.

참고 항목

참고문헌

  1. ^ Marco-Gisbert, Hector; Ripoll Ripoll, Ismael (2019-07-22). "Address Space Layout Randomization Next Generation". Applied Sciences. 9 (14): 2928. doi:10.3390/app9142928. hdl:10251/144813. ISSN 2076-3417.
  2. ^ Brad Spengler (October 2003). "PaX: The Guaranteed End of Arbitrary Code Execution" (PDF). grsecurity.net. Slides 22 through 35. Archived (PDF) from the original on 2020-10-25. Retrieved 2015-08-20.
  3. ^ a b Theo De Raadt (2005). "Exploit Mitigation Techniques (updated to include random malloc and mmap) at OpenCON 2005". Archived from the original on 2012-07-16. Retrieved 2009-08-26.
  4. ^ "OpenBSD Innovations". The OpenBSD project. Archived from the original on 2016-09-09. Retrieved 2016-09-12.
  5. ^ Marco-Gisbert, Hector; Ripoll, Ismael (2014-11-20). "On the Effectiveness of Full-ASLR on 64-bit Linux" (PDF). Archived from the original (PDF) on 2015-05-08. Retrieved 2016-03-29.
  6. ^ Shacham, H.; Page, M.; Pfaff, B.; Goh, E.J.; Modadugu, N.; Boneh, D (2004). On the Effectiveness of Address-Space Randomization. 11th ACM conference on Computer and communications security. pp. 298–307.
  7. ^ a b "Implement Library Load Order Randomization". Archived from the original on 2023-08-11. Retrieved 2017-06-26.
  8. ^ a b 파일 크기뿐만 아니라 RAM, ROM, 플래시 및 캐시 크기와 같은 트랜지스터화된 메모리는 K(10241), M(10242), G(10243) 등에 대한 이진 의미를 사용하여 지정됩니다.
  9. ^ "Android Security". Android Developers. Archived from the original on 2011-10-12. Retrieved 2012-07-07.
  10. ^ "oss-security". Archived from the original on 2015-10-05. Retrieved 2015-10-04.
  11. ^ "Revert "Reenable support for non-PIE executables"". Archived from the original on 2023-08-11. Retrieved 2017-06-26.
  12. ^ mmap - mmap 오프셋 랜덤화 추가 2014-02-01 Wayback Machine, DragonFly Gitweb, 2010년 11월 25일.
  13. ^ "Implement Address Space Layout Randomization (ASLR)". Archived from the original on 2019-05-07. Retrieved 2019-02-10.
  14. ^ "ASLR - FreeBSD Wiki". Archived from the original on 2021-05-17. Retrieved 2021-05-17.
  15. ^ "FreeBSD 13.2-RELEASE Release Notes". Archived from the original on 2023-04-11. Retrieved 2023-04-11.
  16. ^ Pwn2Own2Own Day 2: iPhone, BlackBerry beat; Chrome, Firefox no-show at the Wayback Machine, Ars Technica, 2011년 3월 11일
  17. ^ Stefan Esser (2013-03-07). "iOS 6 Exploitation 280 Days Later". Slide 19, "iOS 6 introduces KASLR". Archived from the original on 2019-05-07. Retrieved 2018-04-25.
  18. ^ Tarjei Mandt. "Attacking the iOS Kernel: A Look at 'evasi0n'" (PDF). Archived (PDF) from the original on 2020-12-13. Retrieved 2023-07-23.
  19. ^ Dang, Alan; Miller, Charlie (2009-03-25). "The NX Bit And ASLR". Tom's Hardware. Archived from the original on 2023-08-11. Retrieved 2010-03-20.
  20. ^ "personality - set the process execution domain". Archived from the original on 2019-04-21. Retrieved 2019-04-21.
  21. ^ "ASLRn't: How memory alignment broke library ASLR". Retrieved 2024-01-13.
  22. ^ Miller, Justin (2024-01-08). "ASLRn't: How memory alignment broke library ASLR". zolutal's blog. Retrieved 2024-01-13.
  23. ^ Jake Edge (2013-10-09). "Kernel address space layout randomization". LWN.net. Archived from the original on 2014-04-04. Retrieved 2014-04-02.
  24. ^ "Linux kernel 3.14, Section 1.7. Kernel address space randomization". kernelnewbies.org. 2014-03-30. Archived from the original on 2021-01-15. Retrieved 2014-04-02.
  25. ^ "kernel/git/torvalds/linux.git: x86, kaslr: Return location from decompress_kernel (Linux kernel source tree)". kernel.org. 2013-10-13. Archived from the original on 2023-08-11. Retrieved 2014-04-02.
  26. ^ KASLR is Dead: Long Live KASLR (PDF). Engineering Secure Software and Systems 2017. 2017-06-24.
  27. ^ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "Breaking Kernel Address Space Layout Randomization with Intel TSX" (PDF). Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16. New York: Association for Computing Machinery. pp. 380–392. doi:10.1145/2976749.2978321. ISBN 9781450341394. S2CID 6293725. Archived (PDF) from the original on 2020-09-21. Retrieved 2017-12-29.
  28. ^ Corbet, Jonathan (2017-12-20). "The current state of kernel page-table isolation". Linux Weekly News. Archived from the original on 2018-01-04. Retrieved 2018-01-04.
  29. ^ Corbet, Jonathan (2017-11-15). "KAISER: hiding the kernel from user space". Linux Weekly News. Archived from the original on 2020-12-08. Retrieved 2017-12-29.
  30. ^ a b Evtyushkin, Dmitry; Ponomarev, Dmitry; Abu-Ghazaleh, Nael (2016). Jump over ASLR: Attacking branch predictors to bypass ASLR (PDF). 2016 49th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). pp. 1–13. doi:10.1109/MICRO.2016.7783743. ISBN 978-1-5090-3508-3. S2CID 3801142.
  31. ^ "Linux 5.16 Has Early Preparations For Supporting FGKASLR - Phoronix". www.phoronix.com. Archived from the original on 2021-11-10. Retrieved 2021-11-10.
  32. ^ "Windows ISV Software Security Defenses". Msdn.microsoft.com. 2010-12-06. Archived from the original on 2012-04-18. Retrieved 2012-04-10.
  33. ^ Windows 내부: Windows Server 2008 및 Windows Vista를 포함한 제 5판(PRO-Developer) ISBN 978-0-7356-2530-3
  34. ^ Ollie Whitehouse (February 2007). "An Analysis of Address Space Layout Randomization on Windows Vista" (PDF). Archived from the original (PDF) on 2019-07-15. Retrieved 2009-01-18.
  35. ^ "WehnTrust". Codeplex.com. Archived from the original on 2009-12-25. Retrieved 2012-04-10.
  36. ^ "Security Architects' Ozone". Security Architects. Archived from the original on 2016-03-04. Retrieved 2012-04-10.
  37. ^ "WehnTrust source code". Archived from the original on 2013-11-28. Retrieved 2013-11-15.
  38. ^ "Address-Space Randomization for Windows Systems" (PDF). Archived (PDF) from the original on 2010-08-05. Retrieved 2012-04-10.
  39. ^ Ollie (2012-03-02). "Research, Develop, Assess, Consult & Educate Recx: A Partial Technique Against ASLR – Multiple O/Ss". Recxltd.blogspot.co.uk. Archived from the original on 2013-03-23. Retrieved 2012-04-10.
  40. ^ "Announcing NetBSD 5.0". Archived from the original on 2016-04-21. Retrieved 2016-04-25.
  41. ^ Christos Zoulas (2016). "PIE binaries and ASLR are on in the default build for amd64". Archived from the original on 2016-04-22. Retrieved 2016-04-25.
  42. ^ "Kernel ASLR on amd64". 2017. Archived from the original on 2017-10-16. Retrieved 2017-10-16.
  43. ^ a b Kurt Miller (2008). "OpenBSD's Position Independent Executable (PIE) Implementation". Archived from the original on 2011-06-12. Retrieved 2011-07-22.
  44. ^ "libc/stdlib/malloc.c". BSD Cross Reference, OpenBSD src/lib/. Archived from the original on 2014-12-26. Retrieved 2016-09-12.
  45. ^ "Mac OS X – Security – Keeps safe from viruses and malware". Apple. Archived from the original on 2011-05-25. Retrieved 2012-04-10.
  46. ^ "Security". Apple Inc. Archived from the original on 2011-06-06. Retrieved 2011-06-06.
  47. ^ "OS X Mountain Lion Core Technologies Overview" (PDF). June 2012. Archived (PDF) from the original on 2012-07-10. Retrieved 2012-07-25.
  48. ^ 2012년 10월 26일, Oracle Information Library의 Wayback Machine에서 Archived 2013-06-20에 보관된 Machine Resources에 대한 액세스 제어.
  49. ^ ANC Archive the Wayback Machine VUSec, 2017-03-16

외부 링크