Meltdown/Spectre란?

Meltdown와 Spectre는 새로운 프로세서 취약점으로, 대부분의 PC와 스마트폰에 영향을 미칩니다. 사용 가능한 패치가 있지만, 이러한 패치는 프로세서 성능에 영향을 미칩니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • Meltdown와 Spectre의 정의 및 구분
  • 추측 실행이 어떻게 작동하는지 설명
  • Meltdown 패치가 프로세서 속도에 어떤 영향을 미치는지 설명

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

Meltdown/Spectre란?

Meltdown과 Spectre는 최근에 발견된 취약점으로, Intel, AMD, Apple, ARM 프로세서 칩에서 발견되었습니다. 이러한 취약점은 영향을 받는 칩의 심각한 설계 결함으로 인해 발생하며, 이 문제가 발견됨에 따라 취약점을 완화하고 공격자가 이를 악용하지 못하도록 Windows, Mac, Linux 운영 체제 소프트웨어를 강제로 재설계하게 되었습니다.

이러한 취약점은 공격자가 악용하기 전에 보안 결함을 찾아내는 데 전념하는 Google의 프로젝트 제로 연구팀이 발견한 것으로, 현재까지 알려진 Meltdown 또는 Spectre 익스플로잇은 없습니다. Apple, Intel, Microsoft 등 주요 기술 기업의 보안 팀과 오픈 소스 Linux 개발자는 이제 악의적인 익스플로잇에 앞서 프로세서와 운영 체제의 보안을 확보하기 위해 많은 리소스를 투입하고 있습니다.

Meltdown 및 Spectre 취약점의 영향을 받는 대상은?

일부 예외를 제외하면 PC 및/또는 스마트폰을 사용하는 모든 사람이 위험에 노출되어 있습니다. Google에 따르면 1995년 이후에 만들어진 Intel 프로세서 칩이 탑재된 모든 장치가 영향을 받습니다. AMD와 ARM 칩은 익스플로잇하기가 더 어렵지만, 위험에 노출되어 있습니다.

Meltdown/Spectre 취약점으로부터 보호하는 방법은?

PC의 프로세서를 교체하는 것 외에 취약점을 해결할 수 있는 유일한 방법은 운영 체제를 패치하는 것입니다. Apple에서는 12월 초에 조용히 OSX에 Meltdown 패치를 도입했고, 마이크로소프트는 1월 3일에 윈도우 패치를 발표했으며, 리눅스 개발자들은 여전히 패치를 마련하기 위해 분주히 움직이고 있습니다.

이러한 Meltdown 패치의 안타까운 부작용은 설계상 패치된 OS를 사용하는 컴퓨터의 처리 속도가 느려진다는 것입니다. 이러한 속도 저하는 칩의 유형과 수행 중인 작업에 따라 약 5~30%까지 성능에 영향을 미칩니다.

Meltdown과 Spectre 취약점은 실제로 어떻게 작동할까요?

Meltdown과 Spectre는 모두 '커널 코드'라는 특수한 저수준 코드가 실행될 때 생성되는 취약점으로, 특히 추측 실행이라고 알려진 프로세스 중에 실행됩니다.

추측 실행이란 무엇인가요?

추측 실행은 비유를 통해 가장 쉽게 설명할 수 있습니다. 숲속에서 길을 잃은 등산객이 거의 평행한 두 갈림길에서 한 길은 집으로 돌아갈 수 있지만, 다른 길은 그렇지 않다고 상상해 보세요. 다른 등산객이 길을 알려주기를 기다리며 시간을 낭비하는 대신, 이 등산객은 집에 도착할 가능성이 가장 높다고 생각되는 길을 선택합니다. 하이킹 중 어느 지점에서 트레일 표지판을 발견하고 트레일 표지판에서 올바른 길을 가고 있다고 알게 되면 그 길로 계속 내려가 집에 도착합니다. 트레일 표지판에서 잘못된 길을 가고 있다고 알게 되면 재빨리 길을 되돌아가 다른 트레일로 넘어갑니다. 그러면 트레일 기슭에서 길 찾기를 기다리는 것보다 더 나빠지지는 않습니다.

추측 실행

많은 최신 프로세서는 추측 실행이라는 유사한 기술을 수행합니다. 이 기술에서는 CPU가 다음에 실행해야 할 코드를 추측한 다음 실행하라는 요구를 받기 전에 해당 코드를 실행합니다. 실행된 코드가 필요하지 않은 것으로 판명되면 변경 사항이 되돌려집니다. 이는 시간을 절약하고 성능을 높이기 위한 것입니다.

Meltdown/Spectre 취약점에 대한 보고서에 따르면 Intel CPU가 중요한 보안 검사를 거치지 않고 코드의 추측 실행을 수행할 수 있다고 합니다. 프로세서가 일반적으로 이러한 보안 검사에 의해 차단될 명령을 완료했는지 확인하도록 설계된 소프트웨어를 작성할 수 있습니다.

이렇게 추측 실행을 잘못 처리하면 공격자가 커널 메모리에 있는 비밀번호, 암호화 키, 개인 사진, 이메일 등 매우 중요한 데이터에 액세스하는 데 악용할 수 있는 CPU 취약점이 발생합니다.

커널이란?

커널은 컴퓨터 운영 체제의 핵심을 이루는 프로그램입니다. 커널은 운영 체제를 완벽하게 제어하고 시작부터 메모리 전달까지 모든 것을 관리합니다. 커널은 데이터 처리 명령을 중앙 처리 장치(CPU)로 전송하는 역할도 담당합니다. 대부분의 CPU는 커널 모드와 사용자 모드 사이를 끊임없이 전환합니다.

커널 모드와 사용자 모드의 차이점은?

커널 모드에서는 CPU가 컴퓨터의 하드웨어와 메모리에 무제한으로 액세스할 수 있는 코드를 실행합니다. 이 모드는 일반적으로 가장 낮은 수준의 가장 신뢰할 수 있는 작업을 위해 예약되어 있습니다. CPU가 커널 모드에 있을 때 발생하는 충돌은 잠재적으로 치명적인 문제이며 운영 체제 전체를 다운시킬 수 있습니다.

사용자 모드에서는 실행되고 있는 코드가 하드웨어나 참조 메모리에 액세스할 수 없으며, 대신 시스템 API에 위임해야 합니다(시스템 API에서는 사용자 모드 소프트웨어가 적절한 권한으로 요청할 수 있는 커널 모드 함수를 실행할 수 있습니다). 사용자 모드 충돌은 일반적으로 격리되어 복구될 수 있습니다. 대부분의 코드는 사용자 모드에서 실행됩니다.

Meltdown 패치로 인해 성능이 느려지는 이유는?

Meltdown 패치의 수정은 커널의 메모리를 사용자 프로세스에서 보다 극적으로 분리하는 것입니다. 이는 커널 페이지 테이블 격리(KPTI)라는 방법을 통해 수행됩니다. KPTI는 커널 모드 작업을 사용자 모드 작업과 완전히 분리된 주소 공간으로 이동시킵니다. 이는 커널 모드와 사용자 모드 사이를 전환하는 데 훨씬 더 많은 시간이 걸림을 의미합니다.

이를 이해하려면 핫도그와 차가운 레모네이드 두 가지 품목만 판매하는 푸드 트럭을 상상해 보세요. 푸드 트럭 내의 직원은 핫도그가 담긴 찜통과 차가운 레모네이드가 담긴 쿨러에 쉽게 손을 뻗을 수 있어 영업을 아주 활발하게 수행할 수 있습니다. 이제 위생 검사관이 와서 뜨거운 음식과 차가운 음식을 별도의 공간에 보관할 것을 요구한다고 상상해 보세요. 이제 직원은 여전히 핫도그는 바로 꺼낼 수 있지만, 레모네이드를 하나씩 가져 오려면 트럭에서 내려 길을 걸어야 합니다. 특히 손님이 레모네이드를 많이 주문하는 경우 푸드 트럭의 대기 줄이 훨씬 길어질 수 있습니다. 이는 KPTI 때문에 운영 체제의 성능이 저하되는 것과 유사합니다.

Meltdown과 Spectre의 차이점은?

Meltdown과 Spectre는 모두 프로세서가 추측 실행을 처리하는 방식에 의해 생성되는 취약점이지만, 작동 방식과 영향을 받는 프로세서 유형이 다소 다릅니다.

Meltdown은 Intel 및 Apple 프로세서에만 영향을 미치며, 프로세서가 추측 실행 중에 실행하는 코드의 결과로 노출되는 정보를 유출하는 데 악용될 수 있습니다. Meltdown은 Spectre보다 익스플로잇하기 쉬우며 보안 전문가들은 Meltdown을 더 큰 위험으로 분류합니다. 다행히도 Meltdown은 패치 적용이 더 쉽고 간단합니다.

Spectre는 Intel, Apple, ARM, AMD 프로세서에 영향을 미치며, 실행해서는 안 되는 코드를 실제로 실행하도록 프로세서를 속이는 데 악용될 수 있습니다. Google의 보안 전문가에 따르면 Spectre는 Meltdown보다 익스플로잇하기도 훨씬 어렵지만, 완화하기도 훨씬 어렵다고 합니다.

Meltdown과 Spectre에 대해 자세히 알아보시겠어요?

Meltdown에 대해 더 자세히 알아보려면 Meltdown 백서 전문과 Spectre 백서 전문을 참조하세요.