Learning
토픽 28 / 111·CPU (Central Processing Unit)

투기적 실행 & 보안 취약점 (Speculative Execution: Spectre/Meltdown)

투기적 실행 & 보안 취약점 (Speculative Execution: Spectre/Meltdown)

CPU가 분기 결과를 예측하여 미리 명령어를 실행하는 최적화 기법으로, 예측 실패 시 롤백하지만 캐시 사이드 채널을 통한 정보 유출(Spectre/Meltdown) 취약점 발생

목적: 파이프라인 효율, 분기 지연 감소, ILP 향상

특징: 분기 예측 기반, 롤백 가능, 캐시 부작용, 사이드 채널 공격

투기적 실행 과정: 분기 예측 → 예측 경로 실행 → 예측 성공 시 커밋 → 실패 시 롤백(캐시 상태는 유지)

Spectre 취약점

  • Variant 1(Bounds Check Bypass): 배열 경계 검사 우회하여 메모리 읽기
  • Variant 2(Branch Target Injection): 간접 분기 조작하여 악성 코드 실행
  • 사이드 채널로 캐시 타이밍 분석하여 데이터 유출

Meltdown 취약점: 권한 검사 전 투기적 실행으로 커널 메모리 읽기, 캐시에 흔적 남김

캐시 사이드 채널: Flush+Reload, Prime+Probe 등으로 캐시 접근 시간 측정하여 데이터 추론

완화 기법

  • KPTI(Kernel Page Table Isolation): 커널/사용자 페이지 테이블 분리(Meltdown)
  • Retpoline: 간접 분기를 리턴 기반으로 변환(Spectre V2)
  • IBRS/IBPB: 간접 분기 예측 제한(Intel)
  • 배열 인덱스 마스킹: 배열 경계 외 접근 방지

성능 영향: KPTI 5-30% 성능 저하, Retpoline 10-20% 저하

장점: 투기적 실행 자체는 높은 성능 제공

단점: 보안 취약점, 완화 기법으로 인한 성능 저하, 하드웨어 수정 필요

적용사례: Intel/AMD/ARM CPU(2018년 발표), 클라우드 보안, 커널 패치

비교: Spectre(모든 CPU/응용프로그램) vs Meltdown(주로 Intel 및 일부 ARM·IBM/커널메모리)

연관: 분기 예측, 캐시, 사이드 채널, KPTI, CPU 보안