2021-09-24 15:35 (금)
새로운 해킹공격의 시발점...’rowhammer’ 공격에 대한 상세 분석보고서 공개
상태바
새로운 해킹공격의 시발점...’rowhammer’ 공격에 대한 상세 분석보고서 공개
  • 길민권
  • 승인 2015.03.18 18:56
이 기사를 공유합니다

DDR3 DRAM 결함인 ‘rowhammer’ 이용해 커널권한상승 등 공격 가능
구글(Google) 프로젝트 제로(Project Zero)팀은 DDR3 DRAM의 결함인 ‘rowhammer’를 이용해 커널권한상승 등의 공격이 가능하다고 지난 3월 12일 블로그를 통해 발표한 바 있다. 이에 대해 국내 보안기업 HNS는 테스트 과정을 통해 연구분석 결과를 공개해 주목받고 있다.
 
카네기 멜론 대학 김윤구 등이 발표한 논문에 의하면, 기술이 발전함에 따라 DRAM의 cell 밀집도가 높아지면서 한 row에 대해 반복적인 접근을 했을 때 인접한 행들에서 bit flip이 발생한다고 한다. 하나의 row에 대해 반복적인 충격을 주었다는 것에 착안해 해당 결함에는 ‘rowhammer’라는 명칭이 붙여졌다.

메모리 내의 비트가 변화하는 bit-flip 현상은 우주선(cosmic ray), 방사선(radioactive ray), 전압저하 (Lowering voltage) 등 여러 원인으로 인해 의도치 않은 상황에서도 발생하는 것으로 알려져 있다.
 
HNS 연구팀은 “카네 기멜론 대학의 김윤구, Ross Daly 등은 논문에서 DRAM 메모리의 row에 access를 반복함으로써 인접한 row에 bit flip을 일으킬 수 있다고 발표한 것이다. 구글 프로젝트팀은 이 논문의 내용을 이용해 NaCl sandbox escape, kernel 권한 상승에 대한 PoC(proof of concept) 코드를 발표함으로써 bit-flip 이 실제공격에 활용될 수 있음을 보여줬다”며 “소프트웨어적인 입력으로 하드웨어적 에러를 일으켜 다시 소프트웨어적인 공격을 가능하게 한다는 점에서 rowhammer는 공격에 대한 새로운 접근을 시도하고 있다고 할 수 있다. 그러므로 rowhammer 공격은 앞으로 다양하게 나타날 하드웨어+소프트웨어 공격의 시발점으로 중요하게 생각된다”고 말했다.
 
특히 하드웨어적 결함으로 간주될 수 있는 rowhammer를 이용해 구글 프로젝트 제로팀은 해킹에 응용될 수 있음을 보여주는 PoC(proof of concept) 코드를 발표해 눈길을 끌었다.
 
이 팀이 발표한 두 개의 PoC 코드는 CLFLUSH라는 인스트럭션을 사용하고 있다. 첫번째 NaCl 샌드박스 탈출에 대한 문제는 이미 크롬 측에서 CLFLUSH의 사용을 막음으로써 패치된 상황이다. 그러나 커널권한상승 코드는 nomal userland 영역에서는 CLFLUSH를 막을 수 없어 취약한 DDR3 DRAM라면 공격에 응용될 수 있다.

 △커널권한상승 PoC 테스트 결과. HNS 제공 

PoC코드는 “Hello world -- in innocent program”를 출력하는 단순한 프로그램을 대상으로, payload에는 write와 exit만 존재한다. 하지만 실제 익스플로잇(exploit)에서는 write, exit가 아닌 execve 등 실행함수를, 단순한 프로그램이 아닌 root 권한의 SetUID 프로그램을 공략한다면 시스템 권한 획득 등의 공격이 가능할 것이다.
 
구글팀은 2010~2014년까지 생산된 DDR3 DRAM을 사용하는 29개의 x86 랩탑머신에 대해서 조사했고 이 중 15개의 제품에서 bit-flip이 일어나는 것을 확인했다. 구글 그룹스를 통해 수집한 다수의 사용자들에 대한 결과 종합해보면 DDR2, DDR4는 현재 이 취약점과는 무관하고, 또한 DIMM이 아닌 SO-DIMM만 취약한 것으로 알려지고 있다. ECC(error-correcting memory)를 사용하는 RAM의 경우 단일비트 오류에 대해서는 수정을 가하므로 어느 정도 안전하나 복수비트에 대해서는 취약하므로 추가적인 연구를 통해 공격이 가능할 것으로 생각된다.
 
사용자의 시스템이 rowhammer에 취약한가 여부는 아래 링크의 테스트 툴을 통해 점검해볼 수 있다. <그림>의 경우 메모리에 0xffffffffffffffff을 썼으나 2881번의 Iteration에서0xfffffbffffffffff가 읽혔음을 알 수 있다. 이것은 bit flip가 일어났다는 의미로 테스트 머신은 row hammer에 취약함을 의미한다.

 △rowhammer-test tool을 이용한 점검 결과. HNS 제공

HNS에서 테스트를 위해 사용한 시스템의 메모리는 다음과 같다.

 
테스트에 머신의 메모리는 삼성전자가 만든 DDR3 제품이다. 참고로 메모리 제조업체에 대한 정보는 리눅스에서는 dmidecode명령으로, Mac OS X에서는 system_profiler 명령을 이용해 ID코드를 추출해 식별할 수 있다.
 
-0x014F - Transcend Information
-0x2C00—Micron Technology, Inc.
-0x802C—Micron Technology, Inc.
-0x80AD—Hynix Semiconductor Inc.
-0x80CE—Samsung Electronics, Inc.
-0xAD00—Hynix Semiconductor Inc.
-0xCE00—Samsung Electronics, Inc.
 
HNS 관계자는 “rowhammer는 갑자기 나타난 문제가 아니다. 몇 년 전부터 인지되어왔고 관련된 연구들이 이루어져 왔었다. 실제로 DDR4에서 해당 문제가 수정된 것을 보면 제조사들 역시 해당 문제를 인지했음을 알 수 있다”며 “하지만 지금까지 논의는 문제점의 발견, 수정 등을 위한 연구였다면 구글의 이번 발표는 중요한 내용을 내포하고 있다. 그것은 rowhammer처럼 결함의 발견/수정 논의에만 그치고 있는 하드웨어적 결함들이 아직도 많이 존재하고 있을 것이라는 점에서 rowhammer 공격법과 같은 새로운 공격 분야의 다양한 연구들이 나타날 것이라는 점이다”라고 밝혔다.
 
HNS의 새로운 공격의 시발점, rowhammer attack에 대한 상세한 연구결과를 보려면 아래 링크를 참조하면 된다.
-blog.hacknsecurity.com/entry/Rowhammer
 
★정보보안 대표 미디어 데일리시큐!★
 
데일리시큐 길민권 기자 mkgil@dailysecu.com