콘텐츠로 바로가기

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) \rightarrow 02-04-05. Memory & Control Flow Protection 영역.
  • 웹 서버 취약점 및 네트워크 패킷 감청: SQL 인젝션, XSS, 패킷 스니핑 \rightarrow 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

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Side-Channels 시스템의 직접적인 버그가 아니라 전력 소모나 미세한 시간 지연 같은 물리적 누출을 통해 비밀을 추론합니다. P1
2 Cache Attacks 타겟이 캐시를 쓰게 유도한 뒤, 접근 시간 차이를 측정해 타겟의 데이터 접근 패턴을 유추합니다. P5
3 Spectre & Meltdown CPU의 "미리 실행해보기(추측 실행)" 기능을 이용해 권한 밖 메모리 접근 흔적을 캐시에 남깁니다. Industry
4 Rowhammer RAM의 특정 행을 반복적으로 접근해, 인접 행의 비트가 전기적 간섭으로 뒤집히는 조건을 분석합니다. Industry

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) 비트 배열을 추론할 수 있는 과정을 살펴봅니다.
  • Implement: 파이썬으로 if secret_bit == 1: time.sleep(0.01) 처럼 분기문에 미세한 지연이 있는 가짜 암호화 함수를 만들고, 외부 스크립트에서 이 함수를 100번 호출하여 걸린 시간을 측정한 뒤 secret_bit 배열(암호 키)을 추론하는 타이밍 공격 시뮬레이터 작성.

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)으로 나오면, 피해자가 해당 코드를 실행했다는 사실을 추론할 수 있습니다.
  • 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)가 발생하는 하드웨어 파이프라인의 허점을 살펴봅니다.
  • 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

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Side-channel 시스템의 의도된 출력 외에 실행 과정에서 발생하는 물리량을 측정하여 정보를 추론하는 통로입니다. 기본 공격 통로 Timing / Power Interface '직접적인 침투'가 아님 P3:CyBOK core
Spectre 분기 예측기를 조작하여 권한 밖의 명령을 투기적으로 실행시키고 그 흔적을 취하는 물리 공격군입니다. 추천 투기 이용 SEB / Flush Meltdown '단순한 버그'로 치환 불가 P3:CyBOK core
Flush+Reload 캐시 라인을 비운 뒤 타겟에 접근하게 하여, 접근 시간 측정을 통해 데이터 히트 여부를 판별하는 기술입니다. 실무 흔적 추출 Cache / Latency Prime+Probe '데이터 복제'와 무관 Industry core
KPTI 커널과 유저 페이지 테이블을 완전히 분리하여 하드웨어적 데이터 누출을 소프트웨어로 차단하는 격리 물리입니다. 심화 방어 대응 Meltdown / Page Performance '가상 메모리' 자체와 혼동 Industry Patch core

8. References

Primary

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)
  • 암호화 모듈 검증 시, ifswitch 문을 제거하는 'Constant-time' 최적화가 타이밍 사이드 채널 공격을 어떻게 물리적으로 무력화하는지 입증할 수 있는가?

Hardware Security & Trusted Physics

1 / 5