ASLR (Address Space Layout Randomization)은 2001 년에 처음 구현 된 운영 체제에서 사용되는 보안 기술입니다. 모든 주요 운영 체제 (iOS, Android, Windows, macOS, Linux)의 최신 버전에는 ASLR 보호 기능이 있습니다. 하지만 지난주에 ASLR을 우회하는 새로운 방법은 발견되었다 . 그래서 걱정해야합니까?
저수준 프로그래밍 배경이없는 사람들에게는 ASLR이 혼란 스러울 수 있습니다. 이를 이해하려면 먼저 가상 메모리를 이해해야합니다.
가상 메모리 란?
가상 메모리는 많은 이점이있는 메모리 관리 기술이지만 주로 프로그래밍을 더 쉽게하기 위해 만들어졌습니다. 4GB RAM이 장착 된 컴퓨터에서 Google 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, Riverside의 연구자들은 다음과 같은 논문을 발표했습니다. ASLR을 넘어서 : ASLR을 우회하기 위해 분기 예측자를 공격 . 이 백서는 BTB (Branch Target Buffer)를 공격하는 방법을 자세히 설명합니다. BTB는 결과를 예측하여 if 문 속도를 높이는 프로세서의 일부입니다. 작성자의 방법을 사용하면 실행중인 프로그램에서 알려진 분기 명령의 위치를 확인할 수 있습니다. 문제의 공격은 Intel Haswell 프로세서 (2013 년에 처음 출시됨)가있는 Linux 시스템에서 수행되었지만 모든 최신 운영 체제 및 프로세서에 적용될 수 있습니다.
즉, 반드시 절망해서는 안됩니다. 이 문서는 하드웨어 및 운영 체제 개발자가이 위협을 완화 할 수있는 몇 가지 방법을 제공했습니다. 새롭고 세밀한 ASLR 기술은 공격자의 더 많은 노력을 필요로하며 엔트로피 (무작위성)의 양을 늘리면 점프 오버 공격을 실행 불가능하게 만들 수 있습니다. 대부분의 경우 최신 운영 체제와 프로세서는이 공격에 영향을받지 않습니다.
그래서 남은 것은 할 것? 점프 오버 바이 패스는 새롭고 아직 야생에서 발견되지 않았습니다. 공격자가이를 악용하면이 결함으로 인해 공격자가 장치에 발생할 수있는 잠재적 인 손상이 증가합니다. 이 수준의 액세스는 전례가 없습니다. Microsoft와 Apple은 2007 년 이후에 출시 된 운영 체제에서만 ASLR을 구현했습니다. 이러한 유형의 공격이 일반화 되더라도 Windows XP 시대에 돌아온 것보다 더 나빠지는 일은 없을 것입니다.
공격자가 해를 입히려면 여전히 장치에서 코드를 가져와야합니다. 이 결함은 사용자를 감염시킬 수있는 추가 방법을 제공하지 않습니다. 항상 그렇듯이 보안 모범 사례 따르기 . 바이러스 백신을 사용하고 스케치 된 웹 사이트 및 프로그램을 멀리하고 소프트웨어를 최신 상태로 유지하십시오. 다음 단계를 따르고 악의적 인 행위자를 컴퓨터에서 차단하면 그 어느 때보 다 안전합니다.
이미지 크레딧 : 스티브 / 플리커