개요

Row hammer 공격은 DRAM에서 인접한 메모리 셀이 전하적으로 다른 셀에 영향을 주어서, 원래는 읽을 수 없는 곳의 정보가 영향을 준 다른 셀에 의하여 읽히거나, 혹은 내용이 바뀌는 Security Attack기법이다. 이러한 영향은 매우 집적도가 높아지는 현대 DRAM구조에서 정교한 Memory access pattern으로 인하여 같은 메모리 Row를 연속적으로 접근함으로 서 일어난다.

이러한 Row hammer 공격은 Privilege escalation을 발생시키는데 이용될 수 있으며, Network-based 환경에서도 공격하는 것이 가능하다는 것이 알려져 있다.

특정 DRAM하드웨어 모듈이나 Processor와 같은 경우는 자체적으로 이러한 Row hammer공격을 방어할 수 있는 Hardware-based방식의 기법을 채택하고 있다.

원리

DRAM은 메모리 접근시 Row와 Column방식으로 접근을 한다. 우선 DRAM은 Row에 해당하는 정보를 Row buffer에 전송하고 여기서 Column에 해당하는 행을 읽어서 전송하게 된다. 이떄 Row을 읽으면 Row에 존재하는 Capacitor에 해당하는 내용이 사라지기 때문에, Row에 해당하는 정보를 다시 적어주어야 한다. 또한 메모리 전하에 해당하는 정보들이 계속해서 방전되기 때문에 DRAM은 일정 주기로 모든 내용을 읽고 다시 쓰는 Refresh과정을 거친다. 이때 양 옆에 해당하는 열의 내용을 계속 읽거나 쓰게 되면, 그 가운데 해당하는 열의 Error rate가 매우 높게 증가함이 알려져 있다. Refresh전에 이러한 현상이 발생하게 하면 Attacker는 Victim의 Memory integrity를 공격할 수 있다. 만약 Victim의 메모리 주소가 중요한 정보 (유저가 sudo 권한을 가지고 있는가?)에 해당한다면 해당 메모리 주소값을 이상한 값으로 덮어 씀으로서, sudo 권한을 탈취할 수 있게 되는 것이다.