멜트다운으로부터 윈도서버를 보호하는 법

컴퓨팅입력 :2018/01/19 16:06    수정: 2018/01/20 08:44

멜트다운과 스펙터 프로세서 버그는 수많은 데스크톱 사용자를 걱정에 빠뜨렸다. 그러나 진짜 고통은 PC나 스마트폰보다 서버에서 느껴진다.

멜트다운과 스펙터 취약점은 애플리케이션과 운영체제로 격리된 메모리 사이의 장벽을 무너뜨릴 수 있다. 사용자 암호같은 게 유출될 수 있다는 것으로, 회사 클라우드의 암호 유출은 막대한 피해를 초래한다.

제이크 윌리엄 SANS시큐리티 보안전문가는 최근 미국 지디넷과 인터뷰에서 "멜트다운은 컨테이너와 많은 반가상화 인스턴스의 호스트 커널 사이의 공유된 커널 주소, 그리고 도커 같은 커널 샌드박스를 목표로 한다"고 설명했다.

젠 하이퍼바이저 같은 가상화 기술이 반가상화 기술을 기반으로 한다.

반면, 마이크로소프트 하이퍼바이저인 하이퍼V는 반가상화 기법을 쓰지 않는다. 하지만, 멜트다운의 취약점에 노출된 것은 매한가지다.

접근을 허용해선 안 되는 메모리상의 OS 및 애플리케이션 데이터를 공격자에게 노출시키는 CPU 보안결함을 형상화한 이미지. 멜트다운(왼쪽)과 스펙터.

테리 마이어슨 마이크로소프트 윈도&디바이스그룹 총괄부사장은 블로그에서 "복수의 서버가 자원요소를 공유하는 환경에서 (멜트다운과 스펙터) 취약점은 가상머신의 정보에 접근할 수 있게 한다"고 밝혔다.

지난 3일 구글은 세계 각지 보안전문가들과 함께 보안연구조직 '프로젝트제로' 팀 중심으로 협력해 내놓은 보안취약점 분석 보고서를 통해, 업계서 널리 쓰이는 제조사 CPU에서 컴퓨터 메모리에서 기밀을 노출하는 심각한 보안취약점 3건을 발견했다고 밝혔다. 2가지는 스펙터(Spectre)라 불렸고, 1가지는 멜트다운(Meltdown)이라고 불렸다.

스펙터와 멜트다운은 접근권한이 없는 운영체제(OS)나 다른 애플리케이션에서, 컴퓨터 메모리에서 처리되고 있는 패스워드를 비롯한 기밀 정보 등 민감한 데이터를 들여다볼 수 있게 만드는 CPU 하드웨어 결함이다. 개인용 모바일 기기 및 PC부터 기업 전산실 서버와 데이터센터 및 클라우드서비스의 가상머신(VM) 등 광범위한 컴퓨터가 이 취약점을 공격에 노출된 상황이 됐다.

구글은 3가지 취약점에 따른 보안위협에 대응하는 조치를 지난 몇개월에 걸쳐 취해 왔다. 그중 구글이 2번째 스펙터 결함인 '버라이언트2(Variant 2)' 또는 '분기표적 주입(Branch Target Injection)' 취약점을 해결하려다 문제가 발생했다. 이에 구글은 '리트폴린(Retpoline)'이라는 기술을 만들었다. 이후 3가지 취약점을 모두 해결한 뒤 누구도 성능 문제를 체감하지 못했다는 설명이다.

분기표적 주입 취약점은 CPU에 탑재된 '간접분기예측기(indirect branch predictors)'의 허점이다. 간접분기예측기는 CPU가 당장 불필요한 명령을 미리 처리해 전체 성능을 끌어올리는 '투기적실행(speculative execution)' 동작시 처리될 명령을 지시하는 구성요소다. 결함을 해결하기 위해 CPU의 투기적실행 동작이나 다른 기능을 끌 경우 성능에 손실이 발생할 수 있다.

마이크로소프트는 일찍부터 가상화 환경에 멜트다운과 스펙터 취약점 위협이 있다는 것을 인지했다. 그덕에 애저와 하이퍼V에 일찌감치 패치를 배포했다. 마이어슨 부사장은 그것으로도 충분치 않다고 우려했다.

그는 "구축형이나 클라우드에서 윈도서버를 운영하는 고객도 추가적인 보안 완화를 시도할 지 따져봐야 한다"며 "VM 게스트의 윈도서버나 물리적 인스턴스 모두 해당된다"고 밝혔다.

그는 "당신이 신뢰할 수 없는 코드를 윈도서버 인스턴스 내에서 돌리고 있을 때 취약점 완화가 필요하다"며 "예를 들어 당신의 고객 중 하나에게 당신의 윈도서버 인스턴스안에서 돌아가는 바이너리나 코드 스닙펫을 업로드하도록 허용한 경우"라고 설명했다.

그는 "가상화된 서버에서 다른 VM에서 윈도서버VM을 격리하기 위해 완화조치를 시도할 필요는 없다"며 "특정 윈도서버 인스턴스 내에서 돌아가는 신뢰할 수 없는 코드를 격리할 때만 완화조치가 필요하다"고 덧붙였다.

윈도서버를 최근 발견된 3종의 취약점에게서 보호하려면, 서버를 패치하는 게 먼저다.

3종의 패치를 모든 윈도서버 버전에서 사용할 수 없다. 마이크로소프트의 기술지원이 종료된 윈도서버2003, 2008, 2012 등은 취약점에 노출돼 있다. 마이크로소프트는 윈도서버 2008과 2012를 위한 패치를 준비하고 있다.

패치로 모든 게 끝나지 않는다. 데스크톱 윈도와 마찬가지로 각종 패치와 호환되는 백신프로그램을 사용해야 한다. 백신프로그램이 패치와 호환되지 않으면 서버에서 죽음의 블루스크린을 경험하게 된다.

서버에서 백신프로그램을 사용하지 않는다면, 레지스트리 편집기(regedit)를 통해 아래의 레지스트리키를 설정해야 한다.

Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWAREMicrosoftWindowsCurrentVersionQualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD" Data="0x00000000"

다른 레지스트리 변경도 해야 한다. 서버가 하이퍼V 호스트나 리모트데스크톱서비스호스트(RDSH)인 경우, 서버 인스턴스가 컨테이너를 운영중이거나, 신뢰할 수 없는 데이터베이스 확장, 신뢰할 수 없는 웹 콘텐츠, 외부소스에서 코드를 돌리는 워크로드 등을 쓸 경우 필요하다. 아래의 레지스트리 값을 추가해야 한다.

HKEY_LOCAL_MACHINEsystemCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f
HKEY_LOCAL_MACHINEsystemCurrentControlSetControlSession ManagerMemory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionVirtualization" /v MinVmVersionForCpuBasedMitigations /t REG_SZ /d "1.0" /f

서버 하드웨어의 칩 펌웨어도 새로 설치해야 한다. 펌웨어는 하드웨어 제공업체에서 받아야 한다.

이 모든 조치를 다 취했다면, 서버를 재시작하자.

마이크로소프트는 애저에서 사용자의 모든 서버와 VM에 패치를 설치하고 자동으로 재시작하도록 했다. 애저 포털의 '애저 서비스 헬스 플랜드 메인터넌스 섹션'에서 재시작을 완료했는지 확인할 수 있다.

MS의 자동 패치에도 안심할 수 없다면 VM 이미지를 업데이트해보자.

취약점 패치 배포 당시 마이크로소프트는 "애저 고객 대부분이 두드러지는 성능 저하를 경험하지 못했다"며 "CPU와 디스크 I/O 경로를 최적화해왔다"고 밝혔다.

이어 "소수의 고객이 일부 네트워킹 성능 저하를 경험하는데 이는 애저 액셀러레이티드 네트워킹(AN)을 통해 해결할 수 있고 모든 애저 고객에게 무료로 제공된다"고 덧붙였다.

액셀러레이티드 네트워킹은 최근 정식 출시된 애저 VM 기능이다. 애저의 호스트와 가상스위치에 우회로를 줘 VM 네트워크 트래픽 속도를 높여준다. 애저 리소스 매니저에서 사용하면 된다.

관련기사

마이크로소프트가 몇가지 해법을 제시해 성능 저하 문제를 최소화하도록 하고 있지만, 애저 VM 패치 후 성능 저하가 조금씩 보고되고 있다.

때문에 패치 후에도 서버 작동을 체크하고 성능 테스트를 시도하는 게 좋다.