Ryotta's Basic

Security
🔒 Security 검증완료

Rowhammer 공격과 방어

개요

Rowhammer는 현대 DRAM(Dynamic Random-Access Memory)의 물리적 특성을 악용한 하드웨어 보안 취약점이다. DRAM 셀이 미세 공정으로 고밀도 집적되면서 인접 셀 간 전기적 간섭이 심화되고, 특정 행(row)을 반복적으로 활성화(activate)하면 인접 행의 셀에서 전하 누설이 발생하여 비트가 뒤집히는(bit flip) 현상이 나타난다. 2014년 ISCA에서 Kim et al.가 처음 보고한 이 공격은 DDR3/DDR4/DDR5 메모리 모두에서 실제 exploitation 가능성이 입증되었으며, 사용자 수준 프로그램이 커널 권한을 탈취하는 privilege escalation 공격으로 확장될 수 있어 메모리 보안의 근본적인 문제로 부각되었다.

최근 DRAM 밀도가 지속적으로 증가하면서 셀 간격이 줄어들고 커패시턴스가 감소하여 Rowhammer에 대한 취약성은 오히려 악화되는 추세이다. 2024년에는 AMD Zen 프로세서에서의 ZenHammer와 DDR5 메모리에서의 최초 공격이 보고되었고, 2025년에는 ETH Zürich 연구팀이 모든 Target Row Refresh(TRR) 방어를 우회하는 Phoenix가 발표되었다. 이 문서는 Rowhammer의 물리적 메커니즘, 공격 기법, 그리고 하드웨어/소프트웨어 방어 기술을 분석한다.

핵심 개념

DRAM 셀 구조와 동작

DRAM 셀은 하나의 커패시터와 하나의 트랜지스터로 구성된다. 커패시터의 충전 상태(충전됨/방전됨)가 "1" 또는 "0"의 이진 값을 나타낸다. 거대한 수의 DRAM 셀이 집적 회로에 패키징되며, 주소 디코더(address decoder), 센스 앰프(sense amplifier), 리프레시(refresh) 로직이 함께 동작한다.

  • 행(row): 동일한 워드라인(word line)에 연결된 셀들의 집합. 하나의 행이 활성화되면 해당 행의 모든 비트가 센스 앰프로 전달된다.
  • 열(column): 특정 비트를 선택하기 위해 사용된다. 행 버퍼(row buffer)에서 열 주소로 정확한 비트를 추출한다.
  • 리프레시(refresh): 커패시터의 자연 방전을 방지하기 위해 모든 셀을 주기적으로 재기록하는 과정. 일반적으로 64ms 주기로 수행된다.

Rowhammer 메커니즘

Rowhammer는 다음 물리적 과정에 기반한다:

  1. 행 활성화(Row Activation): 메모리 읽기/쓰기 시 특정 행을 활성화하면 해당 행의 데이터가 센스 앰프에 로드된다.
  2. 전압 변동: 빠르게 반복되는 행 활성화는 워드라인의 전압 변동을 유발한다.
  3. 근접 셀 간섭: 전압 변동이 인접 행(victim row)의 커패시터에 영향을 미쳐 전하 누설 속도를 증가시킨다.
  4. 비트 플립: 리프레시 주기 내에 인접 행이 재활성화되지 않으면 전하 손실로 인해 비트가 뒤집힌다.

실험 결과, 약 139,000회 연속 행 접근(캐시 플러시 포함) 후 비트 플립이 관찰되며, 전체 셀의 약 1/1,700이 취약한 것으로 확인되었다. 비트 플립율은 온도보다는 실제 DRAM 데이터 패턴에 크게 의존한다.

공격 변형

변형 기법 설명 효과
단일 측 해머링(Single-sided) 하나의 행만 반복 활성화 기본 기법, 상대적으로 낮은 비트 플립율
양면 해머링(Double-sided) victim row의 양쪽 행을 동시에 활성화 비트 플립율 크게 증가
비균형 해머링(Many-sided) 여러 aggressor 쌍을 다른 주기/위상/진폭으로 활성화 TRR 우회, DDR4에서도 유효
주파수 도메인 해밍(Blacksmith) 비균형 패턴을 REFRESH 명령과 동기화 모든 DDR4 디바이스에서 TRR 우회
Half-Double 새로운 세대 DRAM의 물리적 특성 활용 2021년 Google 연구팀 발표

exploit 예시 코드

hammer:
  mov (X), %eax    ; 주소 X에서 읽기
  mov (Y), %ebx    ; 주소 Y에서 읽기
  clflush (X)      ; X 캐시 라인 제거
  clflush (Y)      ; Y 캐시 라인 제거
  jmp hammer       ; 반복 실행
  • X와 Y는 동일한 메모리 뱅크 내의 서로 다른 DRAM 행에 매핑되어야 한다.
  • clflush 명령은 캐시에서 해당 라인을 제거하여 다음 접근이 반드시 DRAM에서 이루어지도록 한다.

비교/분석

공격 타임라인

연도 연구/공격 주요 내용
2014 ISCA 논문 (Kim et al.) DDR3 DRAM에서 129개 모듈 중 110개에서 비트 플립 확인
2015 Google Project Zero NaCl 샌드박스 탈출, Linux 커널 권한 탈취 두 가지 exploit 공개
2015 Rowhammer.js x86-64 의존성 없이 JavaScript로 구현 가능한 exploit
2016 DRAMMER (Android) 스마트폰에서 루트 권한 탈취, CVE-2016-6728
2018 GLitch/Nethammer 브라우저 기반 원격 Rowhammer 공격
2020 TRRespass DDR4의 TRR 방어 우회 입증
2021 Half-Double 최신 DRAM의 물리적 특성 악용
2024 ZenHammer AMD Zen 프로세서에서 최초 Rowhammer, DDR5에서도 처음으로 exploit
2025 Phoenix 모든 TRR 방어 우회 입증

방어 기술 비교

방어 기술 동작 원리 장점 단점
pTRR (Pseudo Target Row Refresh) 빈번하게 활성화된 행의 인접 행을 자동 리프레시 성능/전력 영향 없음 (pTRR 호환 DIMM) pTRR 비호환 DIMM에서는 2~4% 대역폭 손실
TRR (Target Row Refresh) MAC/tMAW 기반으로 victim row 식별 후 리프레시 LPDDR4에 표준화, 성능 영향 최소 Blacksmith 등 패턴으로 우회 가능
주기 단축 리프레시 64ms보다 짧은 주기로 리프레시 간단한 구현 전력 소비 증가, 대역폭 감소
카운터 기반 감시 행 활성화 횟수를 세고 인접 행 리프레시 성능 영향 미미 특정 패턴에서 우회 가능
캐시 미스 모니터링 하드웨어 성능 카운터로 비정상 캐시 미스 감지 소프트웨어 기반 방어 오탐 가능, 모든 exploit 탐지 불가
ECC 메모리 단일 비트 오류 정정, 이중 비트 감지 기존 인프라 활용 3비트 이상 동시 플립 시 우회 가능

Phoenix와 같은 최신 DDR5 공격은 on-die ECC만으로는 비트 플립 누적을 막기 어렵고, 실제 시스템 수준에서는 리프레시 주기 단축과 함께 메모리 컨트롤러의 TRR 정책을 조정해야 함을 보여준다. ETH Zurich 연구팀은 DDR5 DIMM에서 Phoenix를 막기 위한 임시 대응으로 약 3배 수준의 refresh rate 증가를 제안했으며, Google과 JEDEC는 Half-Double 이후 JEP 300-1, JEP 301-1 문서를 통해 DRAM/시스템 수준 완화 전략을 정리하고 있다.

동작 원리

DRAM 읽기 동작

  1. CPU가 메모리 주소를 요청하면 메모리 컨트롤러가 주소를 행 주소와 열 주소로 분리한다.
  2. 행 주소가 행 디코더에 입력되어 해당 행이 활성화된다 (Row Activation / RAS).
  3. 해당 행의 모든 비트가 센스 앰프로 전달되어 행 버퍼에 저장된다.
  4. 열 주소가 열 디코더에 입력되어 행 버퍼에서 특정 비트가 선택된다.
  5. 선택된 비트가 데이터 버스를 통해 CPU로 전달된다.
  6. 읽기 동작은 파괴적이므로 센스 앰프의 값을 다시 해당 행에 기록해야 한다.

Rowhammer 공격 흐름

Rowhammer 공격 흐름

공격 벡터 분류

Rowhammer 공격은 다음 세 가지 벡터로 분류된다:

  1. 로컬 공격: 사용자 수준 프로세스가 직접 메모리 접근 패턴을 제어하여 exploit. clflush 명령 또는 캐시 대체 정책을 이용해 캐시 미스를 강제한다.
  2. 샌드박스 탈출: NaCl 같은 샌드박스 환경에서 Rowhammer를 이용해 격리를 우회. 2015년 Project Zero가 NaCl에서 exploit을 입증.
  3. 원격 공격: 네트워크 요청을 통해 특정 메모리 접근 패턴을 유도하는 공격. 브라우저 JavaScript에서 Typed Array와 Large Page를 이용해 구현 가능하다.

exploit 가능 조건

  • 공격 대상 시스템이 Rowhammer에 취약한 DDR3/DDR4/DDR5 메모리를 사용
  • 공격자가 커널 권한이나 다른 프로세스의 메모리에 쓸 수 있는 페이지 테이블 엔트리(PTE)를 확보
  • 대상 메모리 영역이 공격자의 캐시와 같은 뱅크에 위치
  • 충분한 수의 캐시 플러시 명령 실행 가능

장단점

방어 계층 구조

Rowhammer 방어 계층 구조

Rowhammer 공격의 특징

강점:
- 하드웨어 레벨에서 동작하므로 기존 소프트웨어 보호 메커니즘(메모리 보호, privilege separation)을 우회
- ECC 메모리조차 완전한 방어가 불가능 (3비트 이상 동시 플립 시)
- JavaScript 구현이 가능하여 웹 브라우저를 통한 원격 exploit 가능
- 물리적 특성에 기반하므로 소프트웨어 패치로 완전히 해결 불가

약점:
- 높은 캐시 미스율이 필요하여 탐지 가능 (하드웨어 성능 카운터 활용)
- 특정 비트 패턴에 의존하므로 모든 시스템에서 exploitation 보장 불가
- 공격 속도에 제한이 있어 실시간 시스템에서는 활용 어려움
- 최신 DRAM의 TRR/pTRR으로 상당 부분 완화

관련 기술

참고 문헌

  1. Kim, Y. et al. "Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors." ISCA 2014.
  2. Seaborn, M. & Dullien, T. "Exploiting the DRAM rowhammer bug to gain kernel privileges." Black Hat 2015 / Google Project Zero.
  3. Gruss, D. et al. "Rowhammer.js: A Remote Software-Induced Fault Attack in JavaScript." arXiv 2015.
  4. Kim, J. et al. "DRAMMER: Flip Feng Shui Goes Mobile." VU Amsterdam 2016.
  5. Jattke, P. et al. "Blacksmith: Scalable Rowhammering in the Frequency Domain." IEEE S&P 2022.
  6. Jang, Y. et al. "ZenHammer: Rowhammer Attacks on AMD Zen." ETH Zürich 2024.
  7. Noguchi, S. et al. "Phoenix: Rowhammer without TRR — The Return of the Disturbance Errors." ETH Zürich 2025.
  8. Cojocar, L. et al. "Exploiting Correcting Codes: On the Effectiveness of ECC Memory Against Rowhammer Attacks." IEEE S&P 2019.
  9. JEDEC JESD209-4A: Low Power Double Data Rate (LPDDR4), 2015.
  10. JEDEC JESD79-4A: DDR4 SDRAM, 2013.
  11. JEDEC JEP300-1: System-Level Mitigation Techniques for DRAM Rowhammer, 2021.
  12. JEDEC JEP301-1: DRAM-Level Mitigation Techniques for Rowhammer, 2021.

관련 문서

핵심 정리

Rowhammer는 DRAM 셀의 물리적 간섭을 악용한 하드웨어 보안 취약점으로, 반복적인 행 활성화를 통해 인접 행의 비트를 뒤집을 수 있다. 2014년 처음 보고된 이후 Project Zero의 privilege escalation exploit, JavaScript 기반 원격 공격, Android 루트 탈취 등 다양한 exploit이 개발되었다. DRAM 표준에 포함된 TRR/pTRR 방어 기술은 Blacksmith, TRRespass 등의 연구로 우회 가능성이 입증되었으며, 2024-2025년에는 DDR5와 AMD Zen에서도 exploit이 확인되었다. ECC 메모리는 3비트 이상 동시 플립 시 우회되므로 완전한 방어가 아니며, 하드웨어 성능 카운터 기반 탐지와 함께 다층 방어 체계가 요구된다. Rowhammer는 소프트웨어 패치로 완전히 해결할 수 없는 하드웨어 근본 문제로서, 향후 DRAM 밀도 증가와 함께 지속적인 보안 연구가 필요한 영역이다.