상세 컨텐츠

본문 제목

RAMpage 공격 – 안드로이드에서 RowHammer가 또 다시 악용 돼

국내외 보안동향

by 알약(Alyac) 2018. 7. 2. 16:56

본문

RAMpage Attack Explained—Exploiting RowHammer On Android Again!


보안 연구원들이 안드로이드 기기에 가해지는 DMA 기반 Rowhammer 공격을 막기 위한 모든 완화책을 우회할 수 있는 새로운 기술을 발견했습니다.


RAMpage라 명명 된 이 새로운 기술(CVE-2018-9442)은 피해자의 기기에서 실행 되는 권한 없는 안드로이드 앱이 DRAM Rowhammer 하드웨어 취약점의 변형인 Drammer 공격을 악용해 타겟 기기에서 루트 권한을 얻을 수 있도록 허용할 수 있습니다.


구글이 Drammer와 같은 DMA 기반 Rowhammer 공격을 차단하는 방식


2016년, Drammer 공격의 상세 내용이 공개된 후 구글은 Rowhammer 취약점의 ‘결정적’ 인 익스플로잇을 완화하기 위해 안드로이드 기기에 인접 메모리 할당을 담당하는 ION의 컴포넌트들 중 하나(kmalloc heap)를 비활성화 하는 업데이트를 공개하였습니다.


사용자의 안드로이드 기기에서 실행 되는 앱과 시스템 프로세스는 인접한 힙을 비활성화 후, DRAM에서 랜덤한 물리적 위치에 메모리를 할당하기 위한 시스템 힙과 같은 ION 메모리 관리자에 남겨진 다른 사용 가능한 커널 힙들을 사용합니다.


비 인접 메모리 할당 이외에도, 시스템 힙은 보안을 위해 Lowmem 및 highmem 영역에 할당함으로써 커널 메모리와 사용자 메모리를 분리시킵니다.



RAMpage 공격은 무엇이며, 공격자들은 어떻게 이를 이용해 Rowhammer 완화를 우회할까요?


위에 설명한 완화 기술은 공격자들이 더블사이드 Rowhammer 공격을 실행하는 것을 효과적으로 방어했습니다.

그러나, 보안 연구원 팀은 타겟 기기에 설치 된 악성 프로그램이 현재 적용 된 완화책을 모두 우회해 루트 권한을 얻고 다른 앱들에서 민감 정보를 훔치는 4개의 새로이 변형된 Rowhammer 공격을 발견했다고 밝혔습니다.


연구원들은 첫 번째 RAMpage 변종 (r0)이 “연속적 메모리 할당을 불가능하게 하는 것이 Rowhammer 기반 권한 상승 공격을 예방하지 못한다는 것을 보여주는 안정적인 Drammer 구현”이라고 밝혔습니다.


연구원들은 Drammer 같은 익스플로잇을 달성하기 위해서는 아래 3단계를 따라야 한다고 밝혔습니다.


1) 시스템 힙 고갈시키기

프로그램이 의도적으로 모든 ION의 내부 풀을 모두 소모시키는 경우, 또 다른 메모리 할당 알고리즘인 버디 할당자가 할당 프로세스를 대비책으로 사용함을 발견했습니다.


버디 할당자의 주된 목적은 메모리 조각화를 최소화 하는 것이기 때문에, 결국 인접한 페이지 할당을 제공하게 됩니다.


악용 가능성을 높이기 위해 공격자는 시스템 힙에 사용 되는 영역 분리 매커니즘을 우회할 수 있습니다. 메모리 페이지를 커널이 존재하는 페이지인 lowmem에 강제로 할당하기 위해, 공격자는 highmem이 남아있지 않을 때까지 연속적으로 메모리를 할당합니다.


2) 캐시 풀 축소

Flip Feng Shui 익스플로잇 벡터를 사용해, 공격자들은 커널이 페이지 테이블을 취약한 페이지에 저장하도록 속일 수 있게 됩니다.


연구원들은 “이 단계는 시스템 힙 풀의 물리적 메모리를 커널로 다시 해제하는 것입니다.”

“ION 서브시스템이 선할당 된 캐시 메모리를 해제하도록 간접적으로 강제하는 것입니다.”고 밝혔습니다.


3) 모바일 기기 루팅

위의 2단계를 구현하면, OS가 공격자가 소유한 페이지와 매우 인접한 타겟 메모리 페이지에 랜딩하도록 속일 수 있습니다. 이후 공격자는 악용 가능한 chunk를 찾고 루트 익스플로잇을 구현할 DMA 기반 rowhammer 공격의 나머지 단계를 구현하기만 하면 됩니다.


“우리는 안드로이드 최신 버전(실험 당시 7.1.1)을 실행하는 LG G4에 PoC 공격을 성공적으로 수행할 수 있었습니다.”


아래의 RAMpage 변형 공격 3개도 공격자들이 시스템 메모리의 특정 부분만을 보호하는 방어 솔루션을 우회할 수 있도록 허용합니다. 하지만 이들은 덜 현실적이며 작동하는 익스플로잇을 개발하기 위해서는 더 많은 연구가 필요합니다.


- ION-to-ION (Varint r1)

- CMA-to-CMA attack (Varint r2)

- CMA-to-system attack (Varint r3)


GuardION – 모든 DMA 기반 Rowhammer 공격을 완화하기 위한 솔루션


ION 시스템 힙의 할당

<이미지 출처 : https://thehackernews.com/2018/06/android-rowhammer-rampage-hack.html>


연구원들은 논문을 통해 DMA 기반의 Rowhammer 공격들의 RAMpage 변종들을 막는데 효과적이지 않은 현존하는 완화 기법들에 대해 논의했으며, 새로운 솔루션도 함께 소개했습니다. 솔루션의 이름은 GuardION이며 코드는 오픈소스로 공개했습니다.



GuardION은 DMA 버퍼를 가드 행과 분리해 Rowhammer 공격을 막는 소프트웨어 기반의 방어입니다.


GuardION의 코드는 ION 메모리 관리자를 수정하는 안드로이드 OS의 패치 형태로 설치되어야 합니다. 이로써 왼쪽에 하나, 오른쪽에 하나 빈 행(가드 역할을 하는)을 추가함으로써 물리적으로 공격 행과 한 행 이상 떨어질 수 있게 민감한 버퍼를 격리할 수 있습니다.


GuardION 패치를 설치하면, 기기 성능에 약간의 영향을 줄 수 있습니다. 가드 행을 생성하는 프로세스가 사용자 기기의 DRAM 메모리를 소비하기 때문입니다.


연구원들이 이미 구글에 결과를 공유했기 때문에, 구글 플레이 스토어에서는 이러한 악성 앱들이 구글 플레이 스토어에 등록 되도록 허용하지 않을 것입니다. 따라서 신뢰할 수 있는 출처에서만 앱을 설치해 사용한다면 RAMpage 공격에 대한 걱정을 줄일 수 있을 것으로 보입니다.






출처 :

https://thehackernews.com/2018/06/android-rowhammer-rampage-hack.html



관련글 더보기

댓글 영역