보안 제품정보


최신 안드로이드 OS 공략 가능하게 하는 램페이지 공격법 2018.07.02

로우해머라는 하드웨어 버그를 익스플로잇 하게 해주는 공격
현재 방어법 모두 무력화 가능...가디언 통합하면 위험 완화


[보안뉴스 문가용 기자] 전 세계 여러 대학의 전문가들이 팀을 꾸려 최신 안드로이드 OS를 공격하는 방법을 연구해 발표했다. 이 공격은 DMA에 기반을 둔 것으로, 이름은 로우해머(Rowhammer)라고 한다. 이 공격은 ARM 기반 장비들을 가지고 방어가 가능하다.

[이미지 = iclickart]


로우해머는 동적 램(DRAM) 칩에 영향을 주는 취약점으로, 이를 악용할 경우 공격자가 리눅스 시스템에서 커널 층위의 권한을 얻어낼 수 있다. 이는 2012년 발견됐지만 공식적으로 문서화된 건 2014년의 일이다. 자바스크립트를 사용하거나 GPU를 통해 익스플로잇이 가능하다.

작년에도 로우해머에 대한 연구 발표가 있었다. 그라츠공과대학, 펜실베이니아대학, 메릴랜드대학, 애들레이드대학의 연구원들이다. 이들은 2014년 문서화 된 로우해머 공격에 대한 현존 방어법들을 무력화시키는 법들을 연구했고, 그 성과를 세상에 알렸다.

그리고 올해는 암스테르담 자유대학(Vrije Universiteit Amsterdam), 인도 암리타대학(Amrita University India), 캘리포니아대학 산타바바라(UC Santa Barbara), 유레콤(EURECOM) 출신의 전문가 8명이 힘을 합해 또 다른 공격법을 발표한 것이다. 이 공격법의 이름은 램페이지(RAMpage)라고 하며, 최신 안드로이드 OS를 노릴 수 있다고 한다.

이에 대한 방어법도 몇 가지 제안해 보고서에 포함시켰는데, 이는 가디언(GuardION)이라고한다. ARM 기반 시스템에서 DMA 버퍼를 분리시킴으로서, 로우해머 익스플로잇 가능성을 완화시키는 걸 가능케 해주는 방법이다.

로우해머는 하드웨어 버그의 일종으로, 빡빡하게 메모리 셀들이 들어 찬 DRAM 칩 내 바로 옆에 붙어 있는 메모리 셀들 사이에서 전류가 새는 현상을 말한다. 이 말은 DRAM 모듈의 비트 한 행이 사용될 경우, 그 옆에 붙어 있는 행에서도 약간의 영향을 줄 수 있다는 뜻이 된다. 이를 공격에 악용하면 보안 시스템을 완전히 무력화시킬 수 있다는 게 로우해머 공격의 내용이다.

이는 모바일 생태계에서 특히나 심각한 문제다. 왜냐하면 하드웨어 업그레이드가 대단히 어렵거나 불가능하기 때문이다. 또한 현존하는 소프트웨어 기반의 방어 방법으로는 이를 방어하는 게 어렵다.

이 로우해머 취약점을 익스플로잇 하기 위해서 공격자는 보안에 민감한 페이지 하나를 메모리의 특정 물리 위치로 배치시켜야 한다. 또한 DRAM 칩에 빠르게 접근해 해당 페이지가 위치한 행에 도달할 수 있어야 한다. 메모리가 리프레시(refresh) 되기 전에 행을 건드려야 하기 때문에 대단히 빨라야 한다. 두 개의 물리적으로 붙어 있는 행들을 매핑하기 위해서 가상의 주소를 파악해두는 것도 필수다.

구글은 이러한 위협에 대처하기 위해 인접 힙(contiguous heap)을 비활성화시켰다. 하지만 시스템 힙(system heap)은 그대로 두었다. 또한 내부 시스템 힙 풀들도 두 개로 줄이고, 하이멤(highmem)으로부터만 메모리 페이지들을 되돌려 받을 수 있도록 설정했다.

시스템 힙을 소모시킴으로써 전문가들은 인접 페이지들을 확인하고, 익스플로잇이 가능한 비트를 찾아낼 수 있었다. 그런 후 시스템을 조작해 미리 위치가 배정된 캐시 메모리를 유출시키는 데 성공했다. 또한 이러한 공격 과정을 담은 루트 익스플로잇 킷을 개발하기도 했다.

8명의 전문가들은 또 다른 앱이나 프로세스에 소속된 버퍼를 손상(corrupt)시키는 것도 가능하다고 말한다. 그러므로 권한이 높은 앱들을 활용할 경우 보다 큰 피해를 입히는 공격 시나리오도 생각해볼 수 있다. 또한 CMA, 비트 맵을 소모시키거나, CMA가 위치한 메모리로부터 시스템 메모리를 손상시키는 것도 실제 있을 법한 공격 방법이라고 전문가들은 경고했다.

그래서 전문가들은 DMA 기반의 로우해머 익스플로잇 위험성을 최소화시키기 위해 가디언(GuardION)이라는 방어법을 공개했다. 공격자의 캐시 되지 않은 위치 할당 기능을 제한하는 것인데, 각 DMA 위치마다 세밀한 고립 기술을 적용하면 된다고 한다. 그러면 가디언이 버퍼를 두 개의 보호 행(guard row)으로 분리시킨다. 하나는 제일 위, 다른 하나는 제일 아래에 위치한다.

“가디언은 결국 엄격한 격리에 관한 정책이라고 볼 수 있습니다. 캐시되지 않은 메모리로부터 읽었을 때 비트 플립(bit flip)이 발동되는 현상을 막는 것입니다. 특히 DMA 버퍼의 테두리 바깥에서 이러한 일이 일어나지 않도록 합니다. 그러므로 공격자가 비트 플립을 민감한 데이터로 주입하지 못하게 하는 겁니다.”

가디언이 시스템의 퍼포먼스에 미치는 영향은 미비하다고 한다. 또한 현재의 안드로이드 코드 베이스에 가디언 코드를 통합하는 것도 그리 어렵지 않다고 한다. “프로토타입의 경우 코드는 844줄로 되어 있고, 안드로이드 소스코드의 9개 파일에만 영향을 줄 뿐입니다.”
[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>