Microarchitectural Attacks
CPU의 성능 최적화 기법인 투기적 실행과 캐시 구조의 물리적 허점을 이용하여 기밀 데이터를 추론하는 사이드 채널 공격 및 방어 기법을 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
computer-architecture-embedded-systemscomputer-architectureembedded-systemshardware-securitytrusted-physicsmicroarchitectural-attackslearningtee9 min read
1. Overview
마이크로아키텍처 공격(Microarchitectural Attacks, MAA)은 소프트웨어 버그를 직접 노리는 고전적인 공격을 넘어, CPU 하드웨어가 성능 향상을 위해 도입한 '추측 실행'과 '캐시 메모리'의 물리적 설계 특성을 이용해 격리된 메모리 정보를 추론하는 시스템 보안 공학입니다.
학습자는 CPU가 분기 예측을 틀렸을 때 발생하는 임시 데이터 흔적을 캐시 메모리에 남기도록 유도하는 **Spectre(스펙터)**와, 권한 검사가 지연되는 순간을 이용해 커널 메모리 정보를 노출시키는 **Meltdown(멜트다운)**의 부채널(Side-Channel) 공격 물리를 분석합니다. 이어 공격자가 캐시 적중(Hit)과 실패(Miss)의 미세한 시간 차이(나노초 단위)를 측정해 암호화 키를 추론하는 **캐시 타이밍 공격(Cache Timing Attack)**을 살펴보고, 하드웨어 레벨 완화(Mitigation) 기법이 만드는 성능 트레이드오프를 이해합니다.
2. Scope & Boundaries
In-Scope
- 부채널 공격 (Side-Channel Attacks): 전력 소모 분석, 전자기파 방사, 타이밍(Timing) 공격의 물리적 원리.
- 캐시 기반 공격 (Cache Attacks): Flush+Reload, Prime+Probe, Evict+Time 공격에 의한 캐시 상태 전이 이용.
- 추측 실행 취약점 (Speculative Execution Flaws): Spectre (분기 예측기 오염), Meltdown (비순차 실행 권한 체크 지연).
- 하드웨어 공격 기법: Rowhammer(DRAM 전압 간섭을 통한 비트 플립).
Out-of-Scope
- 소프트웨어 메모리 손상 버그: 버퍼 오버플로우(Buffer Overflow), ROP(Return-Oriented Programming) 02-04-05. Memory & Control Flow Protection 영역.
- 웹 서버 취약점 및 네트워크 패킷 감청: SQL 인젝션, XSS, 패킷 스니핑 10-02. Web & Network Security 영역.
Boundaries
- MAA vs. General Hardware Security (02-04): TEE나 Secure Boot가 하드웨어를 신뢰 기반으로 삼아 암호와 실행 환경을 보호한다면, MAA는 그 CPU의 캐시와 파이프라인 설계 자체가 남기는 구조적 관찰 가능성을 분석하는 영역입니다.
3. Counterexample
- 논리적 격리 과신 (Logical Isolation Fallacy): "커널 메모리(Ring 0)는 유저 모드(Ring 3)에서 읽으려 하면 Page Fault 예외가 발생하므로 안전하다"고만 판단하는 오해입니다. Meltdown 공격은 예외(Exception)가 처리되어 파이프라인이 멈추기 전의 짧은 순간(비순차 실행)에 데이터가 L1 캐시에 흔적을 남길 수 있다는 점을 이용합니다. 논리적 방어벽만으로는 물리적 시간차 공격을 충분히 설명할 수 없습니다.
- 캐시 속도 간과 (Cache Timing Ignorance): "어차피 메모리에 접근하지 못하니 캐시에 흔적이 남아도 상관없다"는 오판입니다. 공격자가 자신의 배열을 읽을 때 100ns(캐시 Miss)가 걸리는지 1ns(캐시 Hit)가 걸리는지
rdtsc타이머로 측정하면, 피해자가 직전에 어떤 메모리 주소를 접근했는지 추론할 수 있습니다. 캐시 타이밍 공격은 이 시간 차이를 기밀 정보 추론 경로로 사용합니다.
4. Prerequisites
- 캐시 및 추측 실행 로직 (Basic): MAA는 캐시(CDL)와 분기 예측/추측 실행(SEB)의 작동 원리를 공격 관점에서 재해석하므로, 이 두 가지 하드웨어 기전을 정확히 이해해야 합니다. (02-02-01 CDL, 02-03-02 SEB)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 부채널 공격의 물리적 원리 (Side-Channel Physics)
- Why to Learn: 소프트웨어에 명시적인 버그가 없더라도, 시스템이 구동되며 발생하는 미세한 물리적 신호(시간, 전기, 소리)만으로 비밀 정보를 추론할 수 있음을 이해하기 위해서입니다.
- What to Learn:
- Concepts: 부채널 공격(Side-Channel Attack), 타이밍 분석(Timing Analysis), 전력 분석(Power Analysis, SPA/DPA).
- Skills: 노이즈 필터링, 통계적 상관관계 도출.
- Tools: 오실로스코프(Oscilloscope), 타이머 레지스터.
- Trade-offs: 시스템의 물리적 징후를 줄이기 위해 암호화 연산에 지연을 넣어 시간을 일정하게(Constant Time) 맞추면 정보 누출 가능성은 낮아지지만 하드웨어 암호 가속기의 성능이 떨어질 수 있습니다.
- How to Learn:
- 1단계: 스마트폰이 RSA 암호를 해독할 때,
비트가 1일 때곱셈 연산이 추가되어 0.5밀리초 더 걸리거나 전력을 2mA 더 쓰는 미세한 물리적 차이를 분석합니다. - 2단계: 공격자가 수천 번의 암호화 요청을 보내고 이때 걸린 시간과 전력 파형을 통계적으로 분석하면, 알고리즘 소스 코드를 몰라도 개인키(Private Key) 비트 배열을 추론할 수 있는 과정을 살펴봅니다.
- 1단계: 스마트폰이 RSA 암호를 해독할 때,
- Implement: 파이썬으로
if secret_bit == 1: time.sleep(0.01)처럼 분기문에 미세한 지연이 있는 가짜 암호화 함수를 만들고, 외부 스크립트에서 이 함수를 100번 호출하여 걸린 시간을 측정한 뒤secret_bit배열(암호 키)을 추론하는 타이밍 공격 시뮬레이터 작성.
Recommended
Core Topic 02: 캐시 타이밍 공격 (Cache Attacks: Flush+Reload)
- Why to Learn: 샌드박스로 격리된 브라우저 탭(Tab)이 다른 탭이나 OS의 민감한 접근 패턴을 어떻게 추론할 수 있는지, L3 공유 캐시를 이용한 공격 원리를 이해하기 위해서입니다.
- What to Learn:
- Concepts: Flush+Reload, Prime+Probe, L3 Inclusive Cache.
- Skills:
clflush명령어(캐시 강제 비우기),rdtsc명령어(클럭 틱 카운트 측정). - Tools: Shared Memory (공유 라이브러리).
- Trade-offs: 캐시를 코어별로 완전히 분리하면 캐시 공격을 줄일 수 있지만, 스레드 간 데이터 공유(Coherence) 속도가 낮아져 멀티코어 성능이 크게 떨어질 수 있습니다.
- How to Learn:
- 1단계: 공격자가
clflush로 특정 공유 메모리(OS 라이브러리)를 캐시에서 비운 뒤(Flush), 타겟의 접근을 기다리는 상태를 분석합니다. - 2단계: 피해자가 그 공유 메모리를 사용해서 암호화를 수행하면 데이터가 다시 캐시에 올라갑니다. 이후 공격자가 그 메모리를 다시 읽을 때(Reload) 접근 시간이 200클럭(Miss)이 아닌 50클럭(Hit)으로 나오면, 피해자가 해당 코드를 실행했다는 사실을 추론할 수 있습니다.
- 1단계: 공격자가
- Implement: 256칸짜리 배열을 만들고, 공격자가 전체 캐시를 비운 뒤 타겟 프로세스가
secret_value를 인덱스로 삼아array[secret_value]에 접근하도록 유도합니다. 그 후 공격자가 0부터 255까지 배열 접근 시간을 재어, 빨리 읽히는 인덱스(Hit)를 찾아secret_value를 추론하는 C/C++ 기반 Proof-of-Concept 모사.
Practical
Core Topic 03: 멜트다운과 스펙터 역학 (Meltdown & Spectre)
- Why to Learn: 전 세계 CPU 인프라에 영향을 준 역사적 보안 사건을 통해, '비순차/추측 실행'이라는 하드웨어 최적화가 보안 관점에서 어떤 위험을 만들 수 있는지 이해하기 위해서입니다.
- What to Learn:
- Concepts: 스펙터(Spectre, CVE-2017-5753), 멜트다운(Meltdown, CVE-2017-5754).
- Skills: 가젯(Gadget) 코드, 분기 예측기 중독(Poisoning).
- Tools: KPTI(Kernel Page-Table Isolation).
- Trade-offs: 취약점을 줄이기 위해 유저 모드와 커널 모드의 메모리 맵을 분리하는 KPTI 패치를 적용하면 보안성은 높아지지만, 시스템 콜(Syscall)을 호출할 때마다 페이지 테이블 전환 비용이 발생해 서버 I/O 성능이 30%까지 낮아질 수 있습니다.
- How to Learn:
- 1단계: Spectre: 배열 크기가 10인데 공격자가
if(x < 10) secret = array[x]코드에x = 1000을 넣었을 때, CPU가 과거 패턴에 속아(예측 오염) 임시로 배열 밖의 비밀 메모리를 읽고 캐시에 흔적을 남긴 뒤 나중에 롤백하는 '투기적 실행의 잔해'를 분석합니다. - 2단계: Meltdown: 유저 권한 코드가 커널 메모리를 읽으려 할 때, 권한 검사 회로보다 메모리 읽기 경로(비순차 실행)가 먼저 작동하여 짧은 순간 데이터가 캐시에 흔적을 남기고 이후 권한 예외(Fault)가 발생하는 하드웨어 파이프라인의 허점을 살펴봅니다.
- 1단계: Spectre: 배열 크기가 10인데 공격자가
- Implement: 파이썬으로 가상의 CPU ROB(재정렬 버퍼)를 구축하고, 권한 없음 예외(Fault)가 예약된 명령어 뒤에 위치한 공격 명령어가 ROB 커밋 전(Squash 되기 전)에 가짜 캐시 딕셔너리에 흔적(State)을 남기는 현상을 텍스트 로깅으로 증명하는 스크립트 작성.
Advanced
Core Topic 04: 로우해머와 물리 계층 공격 (Rowhammer & Physical Exploits)
- Why to Learn: 논리적 회로나 캐시를 직접 건드리지 않고, 전자기적 물리 법칙(전하 누출)을 이용해 인접 메모리 비트를 0에서 1로 뒤집는(Flip) 하드웨어 공격을 방어하기 위해서입니다.
- What to Learn:
- Concepts: 로우해머(Rowhammer), 비트 플립(Bit Flip).
- Skills: DRAM 뱅크 구조, 더블 사이드 해머링(Double-sided Hammering).
- Tools: TRR(Target Row Refresh), ECC(Error Correcting Code) 메모리.
- Trade-offs: 메모리 집적도를 높여 10나노 공정으로 램을 촘촘하게 배치할수록 로우해머 전자기 간섭에 취약해지는 반도체의 물리적 제약 vs 이를 막기 위해 주변 행(Row)을 수시로 리프레시(Refresh)하면 DRAM 성능과 전력 효율이 낮아지는 방어 비용.
- How to Learn:
- 1단계: DRAM 칩에서 행 A와 행 C를 1초에 수백만 번 반복적으로 읽으면(Hammering), 두 행 사이의 전선에 강한 전류가 흐르며 발생하는 전자기장 때문에 가운데 행 B의 커패시터 전하가 누출되어 데이터가 변조되는 물리를 분석합니다.
- 2단계: 만약 행 B에 커널의 '페이지 테이블(메모리 지도)'이 저장되어 있고, 권한 비트(Access Bit)가 0에서 1(루트 권한)로 플립(Flip)된다면 유저 프로세스가 높은 권한을 얻는 하드웨어 기반 권한 상승(Privilege Escalation)이 발생할 수 있음을 살펴봅니다.
- Implement: 2D 리스트로 가상의 커패시터 뱅크(전하량 100)를 만들고, 위아래 행을 무한 루프로
Read()할 때마다 가운데 행의 커패시터 전하량이 0.1씩 감소하다가 임계치(50) 밑으로 떨어지면 논리 값이 1에서 0으로 반전되는 과정을 시각화하는 파이썬 Rowhammer 역학 데모.
7. Terminology
8. References
Primary
- [P3] CyBOK v1.1 - Hardware Security / Microarchitectural Attacks — Main standard.
- [P1] CS2023 - AR/System Security Hardware Support — Core requirements.
Secondary
- [Spectre Attacks: Exploiting Speculative Execution] Kocher et al. — Original research paper.
- [Meltdown: Reading Kernel Memory from User Space] Lipp et al. — Definitive Meltdown analysis.
Industry
- [Intel: Speculative Execution and Indirect Branch Prediction Mitigations] — Hardware vendor response.
- [ARM: Microarchitectural Data Sampling Whitepaper] — Industry specific vulnerabilities.
9. Final Checklist
Primary
- 투기적 실행(Speculative Execution) 과정에서 왜 '메모리 읽기'는 허용되지만 '레지스터 영구 기록'은 제어되는지 물리적 차이를 설명 가능한가? (P1)
- '분기 훈련(Training)'이 왜 동일한 프로세서 내의 다른 주소 공간(Process/Kernel)에서도 유효할 수 있는지 물리적 한계를 입증할 수 있는가? (P1)
Secondary
- 100번에 1번꼴로 캐시 미스가 발생하는 코드가 MAA 관점에서 왜 기밀 정보 1비트의 누설로 수리적으로 치환되는지 소통 가능한가?
- Meltdown 공격이 '권한 위반 예외'가 소프트웨어에 전달되기 전의 '하드웨어적 골든 타임'을 어떻게 활용하는지 논리적으로 수식화 가능한가?
Industry
- 보안이 고도로 요구되는 금융/국방 시스템 서버 구축 시, 하이퍼스레딩(HT)을 비활성화해야 하는 물리적 보안 근거를 제안할 수 있는가? (SFIA)
- 암호화 모듈 검증 시,
if나switch문을 제거하는 'Constant-time' 최적화가 타이밍 사이드 채널 공격을 어떻게 물리적으로 무력화하는지 입증할 수 있는가?