RAMBleed, 메모리 해킹 취약점

RowHammer의 변종

DRAM 메모리 칩에서 권한 없이 데이터를 읽을 수 있는 공격 방법이 개발됐다. 이미 2014년에, DRAM 내 어떤 행의 셀에 반복적인 입출력을 수행하면 전기장이 발생해, 인접 행의 셀 데이터를 변조할 수 있는 취약점이 발견됐다. 이것이 로우해머인데, 이 원리를 데이터 무단 접근에 응용한 것이 RAMBleed라는 새로운 공격 방법이다.

이를 통해 DRAM에서 처리 중인 어떠한 데이터라도 탈취할 수 있다. 암호, 인증 키 등 민감한 정보도 포함될 수 있다. DRAM에 있는 하드웨어 취약점이므로, PC든 스마트폰이든 기기 종류와 운영 체제는 관계가 없다.

로우해머에 취약한 DRAM은 램블리드에도 취약하다. 거의 모든 디램이 취약하다고 볼 수 있다. DDR4는 초기 로우해머 공격에는 견뎌냈지만, 공격 방법이 계속 발전해서 결국은 함락됐다. 서버용 고급 메모리인 ECC 램도 초기에는 영향권 밖에 있었지만, 2018년에 ECCploit라는 공격 방법이 개발됐다.

CVE-2019-0174

이를 개발한 연구팀에 따르면, 램블리드가 실전에서 이미 악용됐을 가능성은 낮다고 한다. 또한 안티바이러스를 비롯해 현존 보안 앱이 이를 탐지할 가능성은 거의 없는 것으로 봤다.

대응책으로 몇 가지가 제시됐는데, 일반적으로 쓸 만한 것은 다음과 같다.

ECC 램과 TRR이 활성화된 DDR4를 사용하는 것이다.
램블리드는 로우해머와는 조금 다르기 때문에, ECC 기능은 애당초 램블리드에는 저항력이 없다. 그러나 공격 속도를 상당히 늦추는 효과가 있다.
TRR 기능이 활성화된 DDR4는 로우해머에 공략당하긴 했지만, 실제 상황에서는 램블리드 공격이 쉽지 않다.

메모리 암호화가 가장 효과적인 대응책으로 평가됐다. Intel의 SGX, ARM의 Trust Zone, AMD의 SEV 등 신뢰할 수 있는 컴퓨팅 환경에서는 보안 영역의 메모리를 완전히 암호화한다. 따라서 램블리드 공격으로 데이터를 읽더라도 내용을 알 수가 없다.

한계

RAMBleed는 아직은 실전 활용 수준은 아니다. 연구팀이 밝힌 한계는 다음과 같다.

우선 victim process가 예측 가능한 방법으로 메모리를 할당해야 한다. 그렇지 않으면 해커가 원하는 정보를 안정적으로 읽기 어렵다. 이 한계를 우회하는 방법이 있긴 하다.

연구팀은 OpenSSH 7.9의 RSA 키를 탈취하는 시연을 했는데, 이때 키를 수차례 할당해 줄 daemon이 필요했다. 이를 극복할 방법이 있긴 하지만, Linux의 mlock system call을 이용하면 이 역시 격파된다.

공격 속도가 3~4 bps로 느린 것도 큰 문제다. 메모리에 잠깐 동안만 머무르도록 설정된 민감한 데이터라면 탈취하기 전에 지워질 것이다.


관련 자료
  1. RowHammer 메모리 해킹 취약점

참고 자료
  1. RAMBleed: Reading Bits in Memory Without Accessing Them 

댓글

이 블로그의 인기 게시물

엑셀 필터 상태에서 복사와 잘라내기

가정에서도 망 분리를 해보자

잉크젯 프린터 전원은 항상 켜 놓아야 좋다