
ASLR (Address Space Layout Randomization)은 2001 년에 처음 구현 된 운영 체제에서 사용되는 보안 기술입니다. 모든 주요 운영 체제 (iOS, Android, Windows, macOS 및 Linux)의 현재 버전에는 ASLR 보호 기능이 있습니다. 그러나 지난 주에 ASLR을 우회하는 새로운 방법이 발견되었습니다. 그래서 걱정해야합니까?
저수준 프로그래밍 배경이없는 사람들에게는 ASLR이 혼란 스러울 수 있습니다. 이를 이해하려면 먼저 가상 메모리를 이해해야합니다.
가상 메모리 란?
가상 메모리는 많은 이점이있는 메모리 관리 기술이지만 주로 프로그래밍을 쉽게하기 위해 만들어졌습니다. RAM이 4GB 인 컴퓨터에서 Chrome, Microsoft Word 및 기타 여러 프로그램이 열려 있다고 가정합니다. 전체적으로이 컴퓨터의 프로그램은 4GB 이상의 RAM을 사용합니다. 그러나 모든 프로그램이 항상 활성 상태이거나 해당 RAM에 동시에 액세스해야하는 것은 아닙니다.
운영 체제는 호출 된 프로그램에 메모리 청크를 할당합니다 페이지. 모든 페이지를 한 번에 저장할 RAM이 충분하지 않으면 필요한 페이지는 가장 느리지 만 (더 넓은) 하드 드라이브에 저장됩니다. 저장된 페이지가 필요한 경우 현재 RAM에 필요한 페이지가 적은 공간을 전환합니다. 이 프로세스를 페이징이라고하며 Windows의 이름을 pagefile.sys 파일에 빌려줍니다.
가상 메모리는 프로그램이 자신의 메모리를보다 쉽게 관리 할 수있게 해주 며보다 안전하게 만듭니다. 프로그램은 다른 프로그램이 데이터를 저장하는 위치 나 남은 RAM 양에 대해 걱정할 필요가 없습니다. 필요한 경우 운영 체제에 추가 메모리를 요청하거나 사용하지 않은 메모리를 반환 할 수 있습니다. 모든 프로그램은 가상 주소라고하는 독점적 사용을위한 단일 연속 메모리 주소 청크입니다. 이 프로그램은 다른 프로그램의 메모리를 볼 수 없습니다.
프로그램이 메모리에 액세스해야하는 경우 운영 체제에 가상 주소를 제공합니다. 운영 체제는 CPU의 메모리 관리 장치 (MMU)에 연결됩니다. MMU는 가상 주소와 물리적 주소를 변환하여 해당 정보를 운영 체제에 반환합니다. 프로그램은 RAM과 직접 상호 작용하지 않습니다.
ASLR이란 무엇입니까?
ASLR (Address Space Layout Randomization)은 주로 버퍼 오버플로 공격으로부터 보호하는 데 사용됩니다. 버퍼 오버플로에서 공격자는 처리 할 수있는만큼 정크 데이터를 제공 한 다음 악의적 인 페이로드를 제공합니다. 페이로드는 프로그램이 액세스하려는 데이터를 덮어 씁니다. 코드의 다른 지점으로 이동하는 지침은 일반적인 페이로드입니다. 예를 들어, iOS 4를 탈옥하는 유명한 JailbreakMe 방법은 버퍼 오버 플로우 공격을 사용하여 Apple이 iOS 4.3에 ASLR을 추가하도록 요청했습니다.
버퍼 오버플로는 공격자가 프로그램의 각 부분이 메모리에서 어디에 있는지 알아야합니다. 이것을 알아내는 것은 보통 시행 착오의 어려운 과정입니다. 그것을 결정한 후, 그들은 페이로드를 제작하고 그것을 주입하기에 적합한 장소를 찾아야합니다. 공격자가 대상 코드의 위치를 모르는 경우 공격하기가 어렵거나 불가능할 수 있습니다.
ASLR은 가상 메모리 관리와 함께 작동하여 메모리에서 프로그램의 다른 부분의 위치를 무작위로 지정합니다. 프로그램이 실행될 때마다 구성 요소 (스택, 힙 및 라이브러리 포함)는 가상 메모리의 다른 주소로 이동됩니다. 공격자는 주소가 매번 다르기 때문에 시행 착오를 통해 대상이 어디에 있는지 더 이상 알 수 없습니다. 일반적으로 응용 프로그램은 ASLR 지원으로 컴파일해야하지만 이것이 기본값이되며 Android 5.0 이상에서도 필요합니다.
ASLR은 여전히 당신을 보호합니까?
지난 화요일, 리버 사이드에있는 SUNY Binghamton과 University of California의 연구원들은 ASLR을 우회하기위한 Jump Over ASLR : Attacking Branch Predictors라는 논문을 발표했습니다. 이 백서는 BTB (Branch Target Buffer)를 공격하는 방법을 자세히 설명합니다. BTB는 결과를 예측하여 if 문을 가속화하는 프로세서의 일부입니다. 작성자의 방법을 사용하여 실행중인 프로그램에서 알려진 분기 명령의 위치를 결정할 수 있습니다. 문제의 공격은 Intel Haswell 프로세서 (2013 년에 처음 릴리스 됨)가있는 Linux 시스템에서 수행되었지만 최신 운영 체제 및 프로세서에 적용될 수 있습니다.
즉, 반드시 절망 할 필요는 없습니다. 이 백서는 하드웨어 및 운영 체제 개발자가이 위협을 완화 할 수있는 몇 가지 방법을 제공했습니다. 최신의 정교한 ASLR 기술은 공격자의 노력이 더 필요하며 엔트로피 (임의)의 양을 늘리면 점프 오버 공격을 실행할 수 없게됩니다. 최신 운영 체제 및 프로세서가이 공격에 영향을받지 않을 가능성이 높습니다.
그래서 남은 것은 당신 할 것? 점프 오버 바이 패스는 새로운 기능이며 아직 야생에서 발견되지 않았습니다. 공격자가이 취약점을 악용하면이 취약점으로 인해 장치에서 발생할 수있는 잠재적 인 손상이 증가합니다. 이 수준의 액세스는 전례가 없습니다. Microsoft와 Apple은 2007 년 이후에 릴리스 된 운영 체제에서만 ASLR을 구현했습니다. 이러한 스타일의 공격이 일반화 되더라도 Windows XP 시절보다 더 나쁘지 않을 것입니다.
공격자는 여전히 장치에서 코드를 가져 와서 피해를 입어야합니다. 이 결함은 감염을 유발할 수있는 추가 방법을 제공하지 않습니다. 항상 그렇듯이 보안 모범 사례를 따라야합니다. 안티 바이러스를 사용하고, 스케치 웹 사이트 및 프로그램을 피하고, 소프트웨어를 최신 상태로 유지하십시오. 이러한 단계를 수행하고 악의적 인 행위자를 컴퓨터에서 멀리 유지하면 예전처럼 안전 해집니다.
크레딧 : Steve / Flickr








