멜트다운 취약점 (Meltdown)

정보보안학
한 줄 정의: CPU의 비순차 실행 중 권한 검사가 늦게 적용되는 틈을 이용해 사용자 프로그램이 커널 메모리를 읽어내는 하드웨어 취약점입니다.

쉽게 풀면

멜트다운은 2018년 초에 공개된 CPU 설계상의 취약점입니다. 원래 일반 프로그램은 운영체제 커널의 메모리를 읽을 수 없어야 하는데, CPU가 속도를 높이려고 명령을 미리 실행하는 과정에서 권한 검사보다 데이터 읽기가 먼저 일어나는 순간이 생깁니다. 그 결과는 곧 취소되지만 캐시에 흔적이 남고, 공격자는 이 흔적을 측정해 비밀 값을 알아냅니다.

왜 중요한가

소프트웨어에 버그가 없어도 하드웨어 최적화 자체가 보안 경계를 무너뜨릴 수 있다는 점을 보여 주어, 마이크로아키텍처 보안이라는 연구 흐름을 크게 키웠습니다. 운영체제들이 KPTI 같은 패치를 도입하면서 성능 저하 문제도 함께 연구되었습니다.

논문에서는 이렇게 쓰입니다

"본 연구는 [[meltdown-vulnerability|멜트다운]] 완화를 위한 커널 페이지 테이블 격리(KPTI) 적용 전후의 시스템 호출 지연을 측정하였다."

취약점 완화책과 성능 비용을 함께 다루는 전형적인 시스템 보안 논문 문장입니다.

조금 더 깊게 보면

멜트다운은 비순차 실행(out-of-order execution)으로 커널 주소의 값을 일시적으로 읽은 뒤, 그 값에 따라 달라지는 캐시 접근 시간을 측정하는 캐시 부채널(Flush+Reload 등)로 값을 복원합니다. 주로 인텔 계열 CPU가 영향을 받았고, 운영체제는 사용자 모드에서 커널 메모리 매핑을 대부분 제거하는 KPTI로 대응했습니다. 이후 하드웨어 수준 수정도 이루어졌습니다. 같은 시기 공개된 스펙터와 함께 일시적 실행(transient execution) 공격이라는 분류로 묶어 연구됩니다.

주의할 점

스펙터가 분기 예측을 속여 피해 프로그램이 스스로 비밀을 읽게 만드는 공격이라면, 멜트다운은 비순차 실행 중 권한 검사가 늦게 적용되는 틈을 악용해 커널 메모리를 직접 읽는 공격입니다. 두 취약점은 대응 방식도 다르므로 같은 패치로 해결된다고 쓰지 않도록 주의하세요.

관련 용어