포스팅 내용

국내외 보안동향

소프트웨어를 이용하여 하드웨어에 영향을 미칠 수 있는 Row Hammer 취약점

소프트웨어를 이용하여 하드웨어에 영향을 미칠 수 있는 Row Hammer 취약점



일반적으로 취약점이라고 하면 많은 사람들이 SW취약점을 생각합니다. 하지만 Row Hammer 라는 취약점은 DIMM 메모리 모듈, 즉 HW에 존재하는 취약점으로, SW를 통하여 HW 취약점을 이용할 수 있는 심각한 취약점 입니다. 


이 Row Hammer 취약점의 출현은, DDR4 메모리 칩의 개발에도 영향을 주었는데요, 최근 DDR4에서도 Row Hammer 취약점이 발견되었습니다.


Row Hammer 취약점 이란?


Row Hammer 공격방식은 2014년 Carnegie Mellon 대학 연구원들에 의하여 처음 알려졌습니다. DRAM은 메모리의 각 비트가 작은 콘덴서로 이루어져 있는데, 기술이 발점함에 따라 DRAM의 cell 밀집도가 높아지면서, 한 row에 대한 반복적인 접근을 할 때 인접한 메모리 row에 bit flip이 발생하게 되는 것입니다.



* bit flip현상 이란?

동일한 메모리 row에 반복적인 접근과정을 통하여 전기 방해가 일어나면서, 해당 메모리 row에 인접해 있는 메모리 row에 영향을 미치는 현상 




Row Hammer 취약점의 가장 큰 특징은, 바로 bit flip 현상이라는 것입니다. 모든 컴퓨터 데이터들을 실행가능한 0과 1의 구조로 바꾸는데, bit flip 현상은 DIMM내의 값을 2진수로 바꾸는 것입니다. 


해당 취약점은 특정 DRAM이 탑재되어있는 디바이스에 존재하며, 대개 x86구조를 갖고있는 노트북이 해당한다고 하였습니다. 취약점은 주로 : 공격자가 메모리의 특정 row에 대하여 Hammering을 하면, 다른 메모리 유닛들에 비트플립을 초래하게 됩니다. 


특정 메모리 유닛에 반복하여 접근하면, 주변의 유닛들이 자신들의 2진수값으로 변화하게 됩니다. 또한 Row Hammer 취약점은 인터넷 환경에서 JavaScript를 이용하여 공격을 할 수 있으며, 구조, 언어, OS환경과 상관없이 모두 공격이 가능할 뿐만 아니라, 직접 물리적인 접근을 하지 않아도 되기 때문에 그 위험성이 더 큽니다. 


다시말하면, 많은 사용자들이 인터넷을 사용할 때 해당 페이지가 공격자의 공격목표로 삼아 있다면, 방문자들도 잠재적으로 공격을 받을 가능성이 있는것입니다. 


2014년 Google Project Zero 팀은, 해당 취약점을 이용하여 메모리의 특정 영역을 공격하였으며, 이를 통하여 관리자 권한을 획득할 수 있었으며, SW 보안정책도 우회할 수 있었습니다. 


▶ Row Hammer 테스트 POC


연구결과, DDR3 메모리 에서는 이런 bit flip 현상이 쉽게 나타났으며, 제조사들은 이러한 Row Hammer 취약점을 보완한 DDR4를 제작하게 되었습니다.



DDR4에서의 Row Hammer 취약점 발견


하지만, 올해 3월, Third I/O 기업의 설립자인 Mark Lanteigne이 발표한 보고서에 따르면, 기존의 Row Hammer의 공격방식에서 변형된 새로운 Row Hammer공격은 일부 DDR4 메모리 모듈을 효과적으로 공격할 수 있다고 하였습니다. 테스트 과정 중에서, 연구원들은 Memesis 툴을 사용하였으며, 이 툴은 주로 회사에서 정적 하드디스크를 테스트 할 때 사용하는 툴입니다. 기존의 공격방식은 일렬의 메모리 유닛에 지속적인 'Hammering'을 통하여 주변의 유닛들이 2진수로 변하도록 하는 방법이였습니다. 하지만 Third I/O는 다른 방법을 선택하였는데, 즉 다른 형식의 메모리를 DDR4 메모리에 쓰는 방법을 통하여 주변의 메모리 유닛들에 전자적 간섭이 가능한 것을 확인하였습니다. 이 새로운 방법을 통하여, 보안 연구원들은 DDR3, 심지어 DDR4에 대하여도 Row Hammer 취약점을 이용하여 공격을 진행할 수 있었습니다. 


Third I/O는 'Killer'라고 명명한 데이터 페턴을 이용하였습니다. 'Killer' 패턴을 사용하면 DDR4의 보안메커니즘을 약하게 만들 수 있습니다. 그의 보고서 중에는, 492데이터(16진수)를 전송하면, 이 값을 2진수로 변환하는 과정에서 끊임없이 010이라는 문자열을 만들어 낼 것이라고 하였습니다 .



참고 : 

http://news.softpedia.com/news/rowhammer-attack-now-works-on-ddr4-memory-501898.shtml

http://googleprojectzero.blogspot.kr/2015/03/exploiting-dram-rowhammer-bug-to-gain.html

https://en.wikipedia.org/wiki/Row_hammer

http://www.thirdio.com/rowhammer.pdf

티스토리 방명록 작성
name password homepage