연구팀이 램블리드(RAMBleed)라고 명명한 로우해머 공격의 새로운 변형은 기존 로우해머처럼 데이터를 변경하거나 공격자 권한을 높이는 것과 달리 대상 장치에서 정보를 훔치는 것에 사용할 수 있다.
로우해머는 현대 메모리 카드(RAM이라고도 함)의 하드웨어 설계 결함을 이용하는 악용 클래스의 이름이다. 기본적으로 메모리 카드는 램의 실제 실리콘 칩에 행으로 배열된 저장 셸 안에 데이터를 그리드 형태로 저장한다.
2014년 연구원들은 하나의 행에 저장된 데이터를 반복적으로 읽음으로써 인근 메모리 행에 저장된 데이터를 변경하는 문제를 발생시킬 수 있음을 발견했다. 로우해머링이라 이러한 명명된 반복 읽기 작업으로 데이터 손상을 유발하거나 악의적인 방법으로 데이터를 조작할 수 있다.
수년에 걸쳐 학자들은 로우해머에 대해 다양한 연구를 통해 아래와 같은 결과를 보여주었다.
-DDR3 및 DDR4 메모리 카드에 저장된 데이터를 변경
-로우해머 공격이 웹사이트를 통해 자바스크립트를 통해 어떻게 수행될 수 있는지를 보임(반드시 데스크탑이나 물리적 또는 로컬 멀웨어를 통해 액세스할 필요 없음)
-마이크로소프트 에지 브라우저를 통해 윈도우 컴퓨터를 장악하는 공격 시연
-클라우드 호스팅 환경에 설치된 리눅스 기반 가상 시스템 장악 시연
-안드로이드 스마트폰에서 루트 권한 획득
-첫 번째 공격이 공개된 후 도입된 로우해머 보호를 우회 공격
-로컬 GPU 카드에 이용하여 로우해머 공격의 효율성을 향상시킬 수 있는 방법을 보임
-네트워크 패킷을 통해 로우해머 공격을 시작하는 기술을 개발
-ION이라는 안드로이드 메모리 하위 시스템을 대상으로 하는 로우해머 공격을 개발했으며 OS와 로컬 응용 프로그램 간의 격리를 깨트려 데이터 도난 및 장치 제어를 허용
-Error-Correcting Code(ECC)를 사용하는 현대의 RAM 카드에 대해서 작동하는 로우해머 공격(ECCploit)을 개발
새로 발표된 논문에서 학자들은 램카드에서 데이터를 적극적으로 추론하고 도용할 수 있는 최초의 로우해머 공격인 램블리드를 발표했다. 이를 위해 연구원은 여러 기술을 램블리드 공격이 발생할 수 있도록 결합해야 했다. 여기에는 아래가 포함된다.
-리눅스 버디 할당자를 악용하여 공격을 조정할 수 있는 연속적인 실제 주소 메모리의 큰 블록을 할당하는 방법 발견
-물리적 메모리의 원하는 위치에 대상 프로그램 페이지를 배치하기 위해 "프레임 풍수 (Frame Feng Shui)"라는 새로운 메커니즘을 설계
-메모리에 데이터를 배열하고 메모리 행을 해머하는 새로운 방법을 개발하여 0에서 1로 비트 플립을 생성하는 대신 인접 메모리 셀에 어떤 데이터가 있는지 추론
그림과 같이 램블리드 공격은 공격자가 A0와 A2행을 해머하고 "샘플링 영역"내의 "비밀" 블록 근처에서 A1 행의 비트 플립을 읽을 때 발생한다. 이 아이디어는 공격자가 원하고 알고 있는 포맷에 램 안에 데이터를 조심스럽게 데이터를 배치하면 도용하려는 "비밀" 데이터에 인접한 영역에서 비트 플립을 읽을 수가 있다는 것이다. 연구자들은 이러한 새로운 기술들을 결합하여 데모 리눅스 환경에서 OpenSSH 서버의 RSA 키를 훔칠 수 있었다고 말했다.
최신 RAM 카드의 ECC 보호 기능으로는 램블리드 공격을 막을 수 없다. 로우해머가 유발한 비트 플립을 원래 상태로 되돌리는 ECC 메모리는 데이터 무결성을 보호하는 것이 아니라 단지 이를 수정하는 것이다.
"램블리드는 반드시 공격자가 비트를 읽은 후에 이를 플립했는지 확인해야만 하는 것은 아니며 램블리드를 위해 공격자가 해야하는 모든 것은 샘플링 페이지 내의 비트가 플립되었다는 표시다"라고 연구원은 설명했다.
ECC 수정 알고리즘의 동기식 성질은 일반적으로 오류 수정이 필요한 메모리 액세스가 정상 액세스보다 현저히 느린 타이밍 채널을 통해 이러한 정보를 노출한다. 이를 통해 연구원은 어떤 메모리 비트가 수정되었는지 알 수 있고 램블리드 공격이 가능하도록 수정된 값을 추론할 수 있다.
연구팀은 그들의 결과를 인텔, AMD, OpenSSH, 마이크로소프트, 애플, 레드햇 등에 통보했다고 전했다.
CVE-2019-0174가 할당된 램블리드 공격에 대한 자세한 내용은 "RAMBleed: Reading Bits in Memory WithoutAccessing Them."라는 보고서를 통해 확인할 수 있다. 해당 보고서는 데일리시큐 자료실에서 다운로드 가능하다.
★정보보안 대표 미디어 데일리시큐!★