콘텐츠로 바로가기

Microarchitectural Attacks

CPU의 성능 최적화 기법인 투기적 실행과 캐시 구조의 물리적 허점을 이용하여 기밀 데이터를 추출하는 사이드 채널 공격 및 방어 기법을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

마이크로아키텍처 공격(Microarchitectural Attacks, MAA)은 소프트웨어의 논리적 오류가 아닌, 하드웨어 성능을 쥐어짜기 위해 설계된 물리적 '지름길'들이 남기는 미세한 흔적을 추적하는 현대 하드웨어 보안의 가장 예리한 영역입니다.

전통적인 보안이 "권한이 있는가"를 묻는다면, MAA는 "너가 실행하며 남긴 열기(캐시)나 시간(지연)을 통해 비밀을 알아낼 수 있는가"를 묻습니다. 학습자는 투기적 실행이 유발하는 Spectre와 메모리 권한 체크 시차를 노리는 Meltdown, 그리고 캐시 접촉 여부로 비트를 읽어내는 Flush+Reload 등의 물리적 원리를 배웁니다. 이를 통해 '완벽한 논리'의 코드라도 '물리적 최적화'를 수행하는 하드웨어 위에서는 기밀이 누설될 수 있음을 인식하고, 이를 차단하기 위한 아키텍처적 방어막을 구축하는 심층 보안 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • Side-channel Mechanics: 실행 시간 차이, 전력 소모, 발열 등 물리적 누출 정보
  • Speculative Execution Attacks: Spectre 계열의 예측 훈련 및 조건부 실행 악용 물리
  • Transient Execution Attacks: Meltdown 계열의 비정상적 데이터 접근 및 취소 시점 활용
  • Cache-based Attacks: Flush+Reload, Prime+Probe 등 캐시 상태를 통한 비트 추출

Out-of-Scope

  • 일반적인 소프트웨어 취약점(Buffer Overflow, SQLi) (10. Security 영역으로 위임)
  • 물리적 칩 제거 및 레이저 주입 공격 (고급 물리 보안 영역)

Boundaries

  • MAA vs. General Security: 일반 보안이 '데이터에 대한 접근 통제'에 집중한다면, MAA는 '데이터 처리 과정에서의 부수적인 물리적 현상'을 감시 기법으로 활용합니다.

3. Counterexample

  • 단순히 "하드웨어가 해킹당한다"는 설명은 MAA 학습이 아닙니다. 왜 투기적 실행이 **파이프라인 플러시(Flush)**를 통해 취소되더라도, 그 과정에서 건드린 L1 캐시 라인의 물리적 상태는 초기화되지 않는다는 '공학적 비일관성'을 지적할 수 있어야 하며, 소프트웨어가 비밀번호와 무관한 루프를 돌더라도 **분기 예측기(Branch Predictor)**를 오염시켜 기밀 영역의 코드를 '투기적으로' 실행하게 만드는 메커니즘을 서술할 수 있어야 합니다.

4. Prerequisites

  • Speculative Execution & Branching (Basic): 투기적 실행과 예측 메커니즘 필수입니다. (02-03-02 SEB)
  • Cache Design & Locality (Recommended): 캐시 히트/미스의 시간 차이 물리 이해가 권장됩니다. (02-02-01 CDL)

5. Learning Map

  1. Physical Trace Awareness: 연산기가 작동할 때 발생하는 부수적인 에너지/시간 흔적을 발견합니다.
  2. Predictor Poisoning: 하드웨어의 예측 지능을 속여 잘못된 길로 유도하는 훈련 기법을 배웁니다.
  3. Transient Leakage: 잘못된 길에서 '잠시(Transient)' 머물 때 기밀 데이터를 레지스터로 끌어오는 과정을 익힙니다.
  4. Hardware Hardening: 성능을 일부 포기하더라도 물리적 흔적을 지우거나 시간을 일정하게 맞추는 방어책을 완성합니다.

6. Learning Topics

Basic

Core: 사이드 채널 개요와 시간 공격 (Side-channel Physics)

  • Why to Learn: 소프트웨어가 논리적으로 완벽하더라도 물리적 '지연'이 기밀을 말해줄 수 있음을 이해하기 위함입니다.
  • What to Learn:
    • 타이밍 공격(Timing Attack): 데이터 값에 따라 실행 분기가 미세하게 달라지는 물리
    • 캐시 타이밍: 데이터가 캐시에 있을 때와 없을 때의 수백 클록 차이
    • 정보 누출 채널: 관찰 가능한 모든 물리적 지표(전력, 소리 등)
  • How to Learn:
    • 문자열 비교 함수가 첫 글자가 틀릴 때와 마지막 글자가 틀릴 때의 실행 시간 차이를 측정해보는 실습
    • 암호화 연산 중 특정 비트가 1일 때 전압이 튀는 패턴 분석
  • Implement: 데이터 값에 따라 반복 횟수를 조정하고 외부에서 이를 시간 측정으로 맞추는 미니 POC 코드

Core: Spectre와 투기적 실행 악용 (Spectre Attacks)

  • Why to Learn: 하드웨어가 "맞을 것 같다"고 추측해서 실행하는 코드가 어떻게 보안 경계를 넘나드는지 배우기 위해서입니다.
  • What to Learn:
    • 분기 예측기 훈련(Training): 특정 방향으로 가도록 하드웨어를 '속이는' 물리적 과정
    • 바운드 체크 우회(Bounds Check Bypass): 배열 범위를 넘어서는 비밀 번호를 투기적으로 로드
    • 캐시 흔적 확인: 투기적 로드 후 캐시에 남은 데이터를 Flush+Reload로 추출
  • How to Learn:
    • Spectre Variant 1 시나리오를 보고, 예측 실행이 끝난 후 캐시 상태가 어떻게 달라졌는지 다이어그램 작도 실습
    • 사용자 코드와 커널 코드가 같은 예측 유닛을 왜 공유하면 위험한지 물리적 이유 탐구
  • Implement: 분기 예측기를 특정 방향으로 훈련시킨 뒤, 투기적 실행 중에만 접근 가능한 메모리 값을 캐시 히트 여부로 맞추는 시뮬레이션

Practical

Core: Meltdown과 비정상적 접근 (Meltdown Physics)

  • Why to Learn: 권한 체크가 끝나기도 전에 데이터가 레지스터로 들어오는 하드웨어의 '급한 성미'가 유발하는 참사를 이해하기 위함입니다.
  • What to Learn:
    • 예외 처리와 비순차 실행의 시차: 하드웨어 보안 체크가 완료되기 전 연산이 끝나는 물리
    • 커널 주소 공간 분리(KPTI): 소프트웨어로 하드웨어 결함을 메우는 긴급 처방
    • Rogue Data Cache Load: 유효하지 않은 요청이더라도 일단 데이터를 캐시로 끌어올리는 과정
  • How to Learn:
    • Intel CPU에서 Meltdown 취약점이 왜 ARM이나 AMD에 비해 더 심각하게 나타났는지 파이프라인 구조적 차이 분석 연습
    • 특정 아키텍처에서 시스템 콜(Syscall) 전후의 페이지 테이블 교체 비용이 성능을 갉아먹는 수치 확인
  • Implement: 권한 없는 커널 주소를 읽으려 시도하고, 예외가 터지기 전 투기적으로 실행된 명령이 캐시 상태를 바꾸는지 체크하는 모듈

Advanced

Core: 마이크로아키텍처 보호 기법 (Hardware Mitigations)

  • Why to Learn: 성능과 보안 사이의 처절한 트레이드오프를 거쳐 탄생한 현대 방어막 기술을 익히기 위해서입니다.
  • What to Learn:
    • LFENCE/SERIALIZE: 투기적 흐름을 강제로 멈추는 물리적 장벽 지시어
    • 하드웨어 격리: 캐시 파티셔닝과 예측기 상태 분리 물리
    • Constant-time Programming: 데이터에 상관없이 일정한 클록 주기를 갖도록 코딩하는 하드웨어 우호적 기술
  • How to Learn:
    • 암호화 라이브러리의 소스 코드를 분석하여 분기문을 없애고 산술 연산만으로 로직을 구현한 사례 분석 실습
    • 최신 CPU 아키텍처(Tiger Lake 이후 등)에 내장된 마이크로아키텍처 하드닝 기술 조사
  • Implement: 특정 민감 구간 전후에 하드웨어 장벽(Fence)을 삽입하여 투기적 실행으로 인한 정보 누설을 차단하는 코드 패턴

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' 최적화가 타이밍 사이드 채널 공격을 어떻게 물리적으로 무력화하는지 입증할 수 있는 가?