Meltdown 취약점: 비순차 실행이 커널 메모리를 노출하는 방식

Meltdown(CVE-2017-5754)의 비순차 실행과 캐시 타이밍 공격 원리, KPTI 대응, Spectre와의 차이를 운영 관점에서 다룬다.

2026-08-14 · 최초 발행 2025-06-04

권한 검사가 늦게 도착할 때 남는 흔적

Meltdown은 2018년 초 공개된 하드웨어 취약점으로, CVE-2017-5754로 등록됐다. 현대 프로세서의 비순차 실행(Out-of-Order Execution)을 악용해 권한이 없는 사용자가 커널 메모리 영역의 데이터를 탈취할 수 있게 한다.

Spectre와 함께 발표됐지만, Meltdown은 root 권한 없이도 커널 메모리에 접근할 수 있다는 점에서 특히 심각하게 평가된다. 문제의 출발점은 실행 결과가 취소된 뒤에도 캐시에 남는 부작용이다.

비순차 실행과 캐시 부작용

CPU는 성능을 높이기 위해 명령어를 순서대로만 처리하지 않는다. 앞선 명령의 결과를 기다리지 않아도 되는 후속 작업은 미리 실행할 수 있다. Meltdown은 이 동작과 메모리 접근 권한 검사의 시점 차이를 이용한다.

권한 없는 메모리 접근은 결국 취소되지만, 그 전에 실행된 작업이 캐시에 남긴 상태는 사라지지 않는다. 공격자는 이 캐시 상태를 타이밍으로 관찰해 데이터를 유추한다.

  • CPU는 가능한 후속 명령을 미리 실행하는 비순차 실행을 사용한다.
  • 메모리 접근 권한 검사는 실제 명령 실행 뒤에 이뤄질 수 있다.
  • 권한 없는 접근이 취소돼도 캐시에는 영향이 남는다.
  • 캐시 접근 시간 차이를 분석하는 부채널 공격으로 데이터를 읽어 낸다.

커널 데이터가 타이밍 정보로 바뀌는 과정

공격은 접근할 수 없는 커널 메모리를 읽으려는 시도에서 시작한다. 비순차 실행 중 해당 데이터가 CPU 레지스터에 로드되고, 그 값에 따라 사용자 영역 배열을 접근하게 만든다. 이후 권한 위반 예외가 발생해도 배열 접근이 남긴 캐시 상태를 측정할 수 있다.

캐시커널 메모리CPU사용자 프로세스캐시커널 메모리CPU사용자 프로세스1. 커널 메모리 접근 시도2. 데이터 로드 시도 (비순차 실행)3. 데이터 반환 (권한 검사 전)4. 메모리 접근 결과 캐시에 저장5. 권한 오류 예외 발생6. 캐시 타이밍 측정7. 접근 시간 차이로 데이터 유추

세부적으로는 먼저 메모리 a0과 a1을 Flush해 캐시에서 제거한다. 이어 레지스터 R에 보호된 커널 메모리 영역 ap를 로드하려 시도한다. 정상적인 경우 보호 비트 검사에서 예외가 발생하고 처리가 중단되지만, 비순차 실행 때문에 다음 명령이 먼저 실행될 수 있다.

R의 0번 비트 값에 따라 a0 또는 a1 주소를 선택해 읽으면, 선택된 주소가 캐시에 저장된다. 이후 예외가 처리된 뒤 a0과 a1의 접근 시간을 비교한다. 캐시에 있는 주소가 더 빠르게 접근되므로 R의 0번 비트를 유추할 수 있다. 이 과정을 반복하면 모든 비트를 추출해 커널 메모리 전체 데이터를 획득할 수 있다.

01캐시 초기화: a0, a1 Flush커널 메모리 ap 로드 시도R의 0번 비트 값?a0 메모리 접근a1 메모리 접근캐시에 a0 저장캐시에 a1 저장예외 발생 처리a0, a1 접근 시간 측정접근 시간 차이로 비트 확인다음 비트로 이동, 과정 반복

광범위한 영향과 노출 범위

Meltdown은 1995년 이후 출시된 대부분의 인텔 프로세서에 영향을 미치며, 일부 ARM 프로세서도 영향을 받을 수 있다. Windows, Linux, macOS 등 주요 운영체제가 대상이 될 수 있고, 가상화 환경에서는 VM 간 정보 유출 가능성도 존재한다.

일반 사용자 권한만으로 공격할 수 있으며, 운영체제 커널을 포함한 전체 시스템 메모리에 접근할 수 있다는 점이 위험을 키운다. 이론적으로 99.99% 이상의 성공률이 언급됐고, 비밀번호·암호화 키·개인정보 등 메모리에 존재하는 데이터가 유출 범위에 들어갈 수 있다.

운영체제와 운영자가 취할 대응

운영체제 수준에서는 KAISER/KPTI(Kernel Page Table Isolation)가 핵심 대응책이다. 커널과 사용자 공간의 페이지 테이블을 완전히 분리하고, 컨텍스트 스위칭 때 페이지 테이블을 전환해 커널 메모리를 보호한다. 다만 5-30%의 성능 저하가 발생할 수 있다.

PCID(Process Context Identifier)는 컨텍스트 스위칭으로 인한 성능 저하를 완화하는 데 쓰이며, TLB(Translation Lookaside Buffer) 플러시를 최적화한다.

시스템 관리자는 운영체제 보안 패치를 즉시 적용하고 CPU 펌웨어, 즉 마이크로코드를 업데이트해야 한다. 가상화 환경에서는 하이퍼바이저 패치와 게스트 OS 업데이트를 함께 적용하고, 패치 뒤 성능 저하를 모니터링할 필요가 있다.

개발자는 민감한 데이터를 메모리에 보관하는 시간을 최소화하고, 특권 분리와 최소 권한 원칙을 엄격히 적용해야 한다. 하드웨어 취약점을 고려한 보안 라이브러리 활용도 대응 범위에 포함된다.

Spectre와 다른 공격 경로

특성 Meltdown Spectre
CVE CVE-2017-5754 CVE-2017-5753, CVE-2017-5715
영향 CPU 주로 인텔 인텔, AMD, ARM 등 대부분
공격 원리 비순차 실행 악용 분기 예측 악용
접근 범위 커널 메모리 전체 같은 프로세스 내 메모리
난이도 상대적으로 쉬움 구현 복잡, 타겟팅 필요
패치 완화도 높음(KPTI) 부분적(완전 해결 어려움)
성능 영향 5-30% 저하 1-10% 저하

Meltdown은 하드웨어 수준의 설계 결함에서 출발하므로 소프트웨어 패치만으로 완벽하게 해결할 수 없다. 이 취약점은 프로세서 성능과 보안 사이의 균형 문제를 드러냈고, 이후 CPU 설계에도 영향을 미쳤다. 패치 적용과 보안 아키텍처 재검토는 단기 대응이며, 장기적으로는 하드웨어 설계 단계부터 보안을 고려한 CPU 아키텍처가 필요하다.

MeltdownCPU 취약점비순차 실행KPTI사이드 채널 공격